/* Copyright 2015 The Chromium OS Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 *
 * Pericom PI3USB30532 USB port switch driver.
 */

#ifndef __CROS_EC_PI3USB30532_H
#define __CROS_EC_PI3USB30532_H

#include "usb_pd.h"

/* USB switch registers */
#define PI3USB30532_REG_ADDR 0x00
#define PI3USB30532_REG_VENDOR 0x01
#define PI3USB30532_REG_CONTROL 0x02
/* Control register field */
#define PI3USB30532_CTRL_MASK 0x7
#define PI3USB30532_CTRL_RSVD 0
/* Switch vendor ID  */
#define PI3USB30532_VENDOR_ID 0

/* PI3USB30532 control flags */
#define PI3USB30532_BIT_SWAP (1 << 0)
#define PI3USB30532_BIT_DP (1 << 1)
#define PI3USB30532_BIT_USB (1 << 2)

/* PI3USB30532 modes */
/* Power down, switch open */
#define PI3USB30532_MODE_POWERDOWN 0
/* Keep power on, switch open */
#define PI3USB30532_MODE_POWERON 1
/* 4-lane DP 1.2
 * dp0~3 : rx2, tx2, tx1, rx1
 * hpd+/-: rfu1, rfu2
 */
#define PI3USB30532_MODE_DP PI3USB30532_BIT_DP
/* 4-lane DP 1.2 swap
 * dp0~3 : rx1, tx1, tx2, rx2
 * hpd+/-: rfu2, rfu1
 */
#define PI3USB30532_MODE_DP_SWAP (PI3USB30532_MODE_DP | PI3USB30532_BIT_SWAP)
/* USB3
 * tx/rx : tx1, rx1
 */
#define PI3USB30532_MODE_USB PI3USB30532_BIT_USB
/* USB3 swap
 * tx/rx : tx2, rx2
 */
#define PI3USB30532_MODE_USB_SWAP (PI3USB30532_MODE_USB | PI3USB30532_BIT_SWAP)
/* 2-lane DP 1.2 + USB3
 * tx/rx : tx1, rx1
 * dp0~1 : rx2, tx2
 * hpd+/-: rfu1, rfu2
 */
#define PI3USB30532_MODE_DP_USB (PI3USB30532_BIT_DP | PI3USB30532_BIT_USB)
/* 2-lane DP 1.2 + USB3, swap
 * tx/rx : tx2, rx2
 * dp0-1 : rx1, tx1
 * hpd+/-: rfu2, rfu1
 */
#define PI3USB30532_MODE_DP_USB_SWAP (PI3USB30532_MODE_DP_USB | \
				      PI3USB30532_BIT_SWAP)

#endif /* __CROS_EC_PI3USB30532_H */
