diff options
author | Alec Berg <alecaberg@chromium.org> | 2015-06-23 17:52:04 -0700 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-06-30 17:18:25 +0000 |
commit | 82ec2510a3acebbf47f2c366e2eabff80d87cc07 (patch) | |
tree | 1157130bccd541f2ac20036acf7e82372917afa0 /include/usb_pd_tcpm.h | |
parent | 59576398dbc7676fd7a30c2f87700f3c585d6b7e (diff) | |
download | chrome-ec-82ec2510a3acebbf47f2c366e2eabff80d87cc07.tar.gz |
pd: refactor tcpm and move alert function to tcpm driver
Refactor the tcpm/tcpc split such that the tcpm driver implements
the alert functionality since it may be unique for different tcpc
chips.
BUG=chrome-os-partner:41842
BRANCH=none
TEST=make -j buildall. run on samus and glados.
Change-Id: I23f2d7f8627d5337b8d001a09bf27622be24fe33
Signed-off-by: Alec Berg <alecaberg@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/281631
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Diffstat (limited to 'include/usb_pd_tcpm.h')
-rw-r--r-- | include/usb_pd_tcpm.h | 126 |
1 files changed, 32 insertions, 94 deletions
diff --git a/include/usb_pd_tcpm.h b/include/usb_pd_tcpm.h index 71f0610ece..71357e0ac1 100644 --- a/include/usb_pd_tcpm.h +++ b/include/usb_pd_tcpm.h @@ -14,40 +14,6 @@ /* Time to wait for TCPC to complete transmit */ #define PD_T_TCPC_TX_TIMEOUT (100*MSEC) -#define TCPC_REG_VENDOR_ID 0x0 -#define TCPC_REG_PRODUCT_ID 0x2 -#define TCPC_REG_BCD_DEV 0x4 -#define TCPC_REG_TC_REV 0x6 -#define TCPC_REG_PD_REV 0x8 -#define TCPC_REG_PD_INT_REV 0xa -#define TCPC_REG_DEV_CAP_1 0xc -#define TCPC_REG_DEV_CAP_2 0xd -#define TCPC_REG_DEV_CAP_3 0xe -#define TCPC_REG_DEV_CAP_4 0xf -#define TCPC_REG_ALERT 0x10 -#define TCPC_REG_ALERT_GPIO_CHANGE (1<<10) -#define TCPC_REG_ALERT_V_ALARM_LO (1<<9) -#define TCPC_REG_ALERT_V_ALARM_HI (1<<8) -#define TCPC_REG_ALERT_SLEEP_EXITED (1<<7) -#define TCPC_REG_ALERT_POWER_STATUS (1<<6) -#define TCPC_REG_ALERT_CC_STATUS (1<<5) -#define TCPC_REG_ALERT_RX_STATUS (1<<4) -#define TCPC_REG_ALERT_RX_HARD_RST (1<<3) -#define TCPC_REG_ALERT_TX_SUCCESS (1<<2) -#define TCPC_REG_ALERT_TX_DISCARDED (1<<1) -#define TCPC_REG_ALERT_TX_FAILED (1<<0) -#define TCPC_REG_ALERT_TX_COMPLETE (TCPC_REG_ALERT_TX_SUCCESS | \ - TCPC_REG_ALERT_TX_DISCARDED | \ - TCPC_REG_ALERT_TX_FAILED) - -#define TCPC_REG_ALERT_MASK 0x12 -#define TCPC_REG_POWER_STATUS_MASK 0x14 -#define TCPC_REG_CC1_STATUS 0x16 -#define TCPC_REG_CC2_STATUS 0x17 -#define TCPC_REG_CC_STATUS_SET(term, volt) \ - ((term) << 3 | volt) -#define TCPC_REG_CC_STATUS_TERM(reg) (((reg) & 0x38) >> 3) -#define TCPC_REG_CC_STATUS_VOLT(reg) ((reg) & 0x7) enum tcpc_cc_termination_status { TYPEC_CC_TERM_RA = 0, TYPEC_CC_TERM_RP_DEF = 1, @@ -67,16 +33,11 @@ enum tcpc_cc_voltage_status { TYPEC_CC_VOLT_SRC_3_0 = 6, TYPEC_CC_VOLT_OPEN = 7 }; + /* Check if CC voltage is within Rd */ #define TYPEC_CC_IS_RD(cc) ((cc) >= TYPEC_CC_VOLT_SNK_DEF && \ (cc) <= TYPEC_CC_VOLT_SNK_3_0) -#define TCPC_REG_POWER_STATUS 0x1a -#define TCPC_REG_ROLE_CTRL 0x1b -#define TCPC_REG_ROLE_CTRL_SET(drp, rp, cc2, cc1) \ - ((drp) << 6 | (rp) << 4 | (cc2) << 2 | (cc1)) -#define TCPC_REG_ROLE_CTRL_CC2(reg) (((reg) & 0xc) >> 2) -#define TCPC_REG_ROLE_CTRL_CC1(reg) ((reg) & 0x3) enum tcpc_cc_pull { TYPEC_CC_RA = 0, TYPEC_CC_RP = 1, @@ -84,53 +45,32 @@ enum tcpc_cc_pull { TYPEC_CC_OPEN = 3, }; -#define TCPC_REG_POWER_PATH_CTRL 0x1c -#define TCPC_REG_POWER_CTRL 0x1d -#define TCPC_REG_POWER_CTRL_SET(polarity, vconn) \ - ((polarity) << 4 | (vconn)) -#define TCPC_REG_POWER_CTRL_POLARITY(reg) (((reg) & 0x10) >> 4) -#define TCPC_REG_POWER_CTRL_VCONN(reg) ((reg) & 0x1) - -#define TCPC_REG_COMMAND 0x23 -#define TCPC_REG_MSG_HDR_INFO 0x2e -#define TCPC_REG_MSG_HDR_INFO_SET(drole, prole) \ - ((drole) << 3 | (PD_REV20 << 1) | (prole)) -#define TCPC_REG_MSG_HDR_INFO_DROLE(reg) (((reg) & 0x8) >> 3) -#define TCPC_REG_MSG_HDR_INFO_PROLE(reg) ((reg) & 0x1) - -#define TCPC_REG_RX_BYTE_CNT 0x2f -#define TCPC_REG_RX_STATUS 0x30 -#define TCPC_REG_RX_DETECT 0x31 -#define TCPC_REG_RX_DETECT_SOP_HRST_MASK 0x21 - -#define TCPC_REG_RX_HDR 0x32 -#define TCPC_REG_RX_DATA 0x34 /* through 0x4f */ - -#define TCPC_REG_TRANSMIT 0x50 -#define TCPC_REG_TRANSMIT_SET(type) \ - (PD_RETRY_COUNT << 4 | (type)) -#define TCPC_REG_TRANSMIT_RETRY(reg) (((reg) & 0x30) >> 4) -#define TCPC_REG_TRANSMIT_TYPE(reg) ((reg) & 0x7) enum tcpm_transmit_type { - TRANSMIT_SOP = 0, - TRANSMIT_SOP_PRIME = 1, - TRANSMIT_SOP_PRIME_PRIME = 2, - TRANSMIT_SOP_DEBUG_PRIME = 3, - TRANSMIT_SOP_DEBUG_PRIME_PRIME = 4, - TRANSMIT_HARD_RESET = 5, - TRANSMIT_CABLE_RESET = 6, - TRANSMIT_BIST_MODE_2 = 7 + TCPC_TX_SOP = 0, + TCPC_TX_SOP_PRIME = 1, + TCPC_TX_SOP_PRIME_PRIME = 2, + TCPC_TX_SOP_DEBUG_PRIME = 3, + TCPC_TX_SOP_DEBUG_PRIME_PRIME = 4, + TCPC_TX_HARD_RESET = 5, + TCPC_TX_CABLE_RESET = 6, + TCPC_TX_BIST_MODE_2 = 7 }; -#define TCPC_REG_TX_BYTE_CNT 0x51 -#define TCPC_REG_TX_HDR 0x52 -#define TCPC_REG_TX_DATA 0x54 /* through 0x6f */ +enum tcpc_transmit_complete { + TCPC_TX_COMPLETE_SUCCESS = (1 << 2), + TCPC_TX_COMPLETE_DISCARDED = (1 << 1), + TCPC_TX_COMPLETE_FAILED = (1 << 0), +}; /** - * TCPC is asserting alert + * Initialize TCPM driver and wait for TCPC readiness. + * + * @param port Type-C port number + * + * @return EC_SUCCESS or error */ -void tcpc_alert(int port); -void tcpc_alert_clear(int port); +int tcpm_init(int port); + /** * Initialize TCPC. * @@ -139,6 +79,14 @@ void tcpc_alert_clear(int port); void tcpc_init(int port); /** + * TCPC is asserting alert + * + * @param port Type-C port number + */ +void tcpc_alert(int port); +void tcpc_alert_clear(int port); + +/** * Run TCPC task once. This checks for incoming messages, processes * any outgoing messages, and reads CC lines. * @@ -147,36 +95,26 @@ void tcpc_init(int port); */ int tcpc_run(int port, int evt); + /** * Read TCPC alert status * * @param port Type-C port number - * @param reg TCPC register address * @param alert Pointer to location to store alert status * @return EC_SUCCESS or error */ -int tcpm_alert_status(int port, int reg, uint16_t *alert); +int tcpm_alert_status(int port, int *alert); /** * Write TCPC Alert Mask register * * @param port Type-C port number - * @param reg TCPC register address * @param mask bits to be set in Alert Mask register * @return EC_SUCCESS or error */ -int tcpm_alert_mask_set(int port, int reg, uint16_t mask); - -/** - * Initialize TCPM driver and wait for TCPC readiness. - * - * @param port Type-C port number - * - * @return EC_SUCCESS or error - */ -int tcpm_init(int port); +int tcpm_alert_mask_set(int port, uint16_t mask); /** * Read the CC line status. |