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 <Dino.Li@ite.com.tw>
Reviewed-on: https://chromium-review.googlesource.com/554655
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
This commit is contained in:
Dino Li
2017-06-29 15:37:33 +08:00
committed by chrome-bot
parent a48908f07a
commit dc53959997
3 changed files with 8 additions and 23 deletions

View File

@@ -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)

View File

@@ -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++) {

View File

@@ -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;