summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chip/it83xx/registers.h8
-rw-r--r--driver/tcpm/it83xx.c12
-rw-r--r--driver/tcpm/it83xx_pd.h11
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;