mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-07 16:11:43 +00:00
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:
@@ -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)
|
||||
|
||||
@@ -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++) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user