From dc53959997a0ae25ea96d3ce89822305882efbf0 Mon Sep 17 00:00:00 2001 From: Dino Li Date: Thu, 29 Jun 2017 15:37:33 +0800 Subject: tcpm: it83xx: Use pd common code macro to analyze message header Use existed macro instead of creating new one. BRANCH=none BUG=none TEST=plug USB-C power adapter and USB-C to hdmi adapter, both work. Change-Id: I133142232ac6abfa7f285c289eb03c4d65e84d5f Signed-off-by: Dino Li Reviewed-on: https://chromium-review.googlesource.com/554655 Reviewed-by: Vincent Palatin --- chip/it83xx/registers.h | 8 +++----- driver/tcpm/it83xx.c | 12 +++++------- driver/tcpm/it83xx_pd.h | 11 ----------- 3 files changed, 8 insertions(+), 23 deletions(-) diff --git a/chip/it83xx/registers.h b/chip/it83xx/registers.h index b4b6be3741..adda028dd9 100644 --- a/chip/it83xx/registers.h +++ b/chip/it83xx/registers.h @@ -1213,15 +1213,13 @@ enum i2c_channels { #define IT83XX_USBPD_PEFSMR(p) REG8(IT83XX_USBPD_BASE(p)+0x1D) #define IT83XX_USBPD_PES0R(p) REG8(IT83XX_USBPD_BASE(p)+0x1E) #define IT83XX_USBPD_PES1R(p) REG8(IT83XX_USBPD_BASE(p)+0x1F) -#define IT83XX_USBPD_TDO_BASE(p) (IT83XX_USBPD_BASE(p)+0x20) +#define IT83XX_USBPD_TDO(p) REG32(IT83XX_USBPD_BASE(p)+0x20) #define IT83XX_USBPD_AGTMHLR(p) REG8(IT83XX_USBPD_BASE(p)+0x3C) #define IT83XX_USBPD_AGTMHHR(p) REG8(IT83XX_USBPD_BASE(p)+0x3D) #define IT83XX_USBPD_TMHLR(p) REG8(IT83XX_USBPD_BASE(p)+0x3E) #define IT83XX_USBPD_TMHHR(p) REG8(IT83XX_USBPD_BASE(p)+0x3F) -#define IT83XX_USBPD_RDO_BASE(p) (IT83XX_USBPD_BASE(p)+0x40) -#define IT83XX_USBPD_RMH_BASE(p) (IT83XX_USBPD_BASE(p)+0x5E) -#define IT83XX_USBPD_RMHLR(p) REG8(IT83XX_USBPD_BASE(p)+0x5E) -#define IT83XX_USBPD_RMHHR(p) REG8(IT83XX_USBPD_BASE(p)+0x5F) +#define IT83XX_USBPD_RDO0(p) REG32(IT83XX_USBPD_BASE(p)+0x40) +#define IT83XX_USBPD_RMH(p) REG16(IT83XX_USBPD_BASE(p)+0x5E) #define IT83XX_USBPD_CCPSR0(p) REG8(IT83XX_USBPD_BASE(p)+0x60) #define IT83XX_USBPD_BMCSR(p) REG8(IT83XX_USBPD_BASE(p)+0x64) #define IT83XX_USBPD_PDMHSR(p) REG8(IT83XX_USBPD_BASE(p)+0x65) diff --git a/driver/tcpm/it83xx.c b/driver/tcpm/it83xx.c index f5e78bbbb9..e1593b0d89 100644 --- a/driver/tcpm/it83xx.c +++ b/driver/tcpm/it83xx.c @@ -95,18 +95,16 @@ static enum tcpc_cc_voltage_status it83xx_get_cc( static int it83xx_rx_data(enum usbpd_port port, int *head, uint32_t *buf) { - struct usbpd_header *p_head = (struct usbpd_header *)head; + int cnt = PD_HEADER_CNT(IT83XX_USBPD_RMH(port)); if (!USBPD_IS_RX_DONE(port)) return EC_ERROR_UNKNOWN; /* store header */ - *p_head = *((struct usbpd_header *)IT83XX_USBPD_RMH_BASE(port)); + *head = IT83XX_USBPD_RMH(port); /* check data message */ - if (p_head->data_obj_num) - memcpy(buf, - (uint8_t *)IT83XX_USBPD_RDO_BASE(port), - p_head->data_obj_num * 4); + if (cnt) + memcpy(buf, (uint32_t *)&IT83XX_USBPD_RDO0(port), cnt * 4); /* * Note: clear RX done interrupt after get the data. * If clear this bit, USBPD receives next packet @@ -148,7 +146,7 @@ static enum tcpc_transmit_complete it83xx_tx_data( /* set data length setting */ IT83XX_USBPD_MTSR1(port) |= length; /* set data */ - memcpy((uint8_t *)IT83XX_USBPD_TDO_BASE(port), buf, length * 4); + memcpy((uint32_t *)&IT83XX_USBPD_TDO(port), buf, length * 4); } for (r = 0; r <= PD_RETRY_COUNT; r++) { diff --git a/driver/tcpm/it83xx_pd.h b/driver/tcpm/it83xx_pd.h index 0702b24b84..976a4f4f39 100644 --- a/driver/tcpm/it83xx_pd.h +++ b/driver/tcpm/it83xx_pd.h @@ -89,17 +89,6 @@ enum usbpd_power_role { USBPD_POWER_ROLE_PROVIDER_CONSUMER, }; -struct usbpd_header { - uint8_t msg_type : 4; - uint8_t reserved : 1; - uint8_t port_role : 1; - uint8_t spec_ver : 2; - uint8_t power_role : 1; - uint8_t msg_id : 3; - uint8_t data_obj_num : 3; - uint8_t reserved2 : 1; -}; - struct usbpd_ctrl_t { volatile uint8_t *cc1; volatile uint8_t *cc2; -- cgit v1.2.1