diff options
-rw-r--r-- | common/usb_pd_protocol.c | 3 | ||||
-rw-r--r-- | driver/tcpm/anx74xx.c | 5 | ||||
-rw-r--r-- | driver/tcpm/it83xx.c | 11 | ||||
-rw-r--r-- | driver/tcpm/tcpci.c | 1 |
4 files changed, 8 insertions, 12 deletions
diff --git a/common/usb_pd_protocol.c b/common/usb_pd_protocol.c index db0040d75a..0599fdcf1a 100644 --- a/common/usb_pd_protocol.c +++ b/common/usb_pd_protocol.c @@ -1513,8 +1513,7 @@ void pd_task(void) /* process any potential incoming message */ incoming_packet = evt & PD_EVENT_RX; if (incoming_packet) { - tcpm_get_message(port, payload, &head); - if (head > 0) + if (!tcpm_get_message(port, payload, &head)) handle_request(port, head, payload); } /* if nothing to do, verify the state of the world in 500ms */ diff --git a/driver/tcpm/anx74xx.c b/driver/tcpm/anx74xx.c index 13d1bb1c07..b181a6fe1b 100644 --- a/driver/tcpm/anx74xx.c +++ b/driver/tcpm/anx74xx.c @@ -610,7 +610,6 @@ static int anx74xx_tcpm_get_message(int port, uint32_t *payload, int *head) /* Fetch the header */ rv |= tcpc_read16(port, ANX74XX_REG_PD_HEADER, ®); if (rv) { - *head = 0; /* Clear receive message interrupt bit(bit-0) */ tcpc_read(port, ANX74XX_REG_IRQ_SOURCE_RECV_MSG, ®); tcpc_write(port, ANX74XX_REG_IRQ_SOURCE_RECV_MSG, @@ -632,10 +631,8 @@ static int anx74xx_tcpm_get_message(int port, uint32_t *payload, int *head) * memory allocated */ rv |= anx74xx_read_pd_obj(port, (uint8_t *)payload, len); - if (rv) { - *head = 0; + if (rv) return EC_ERROR_UNKNOWN; - } return rv; } diff --git a/driver/tcpm/it83xx.c b/driver/tcpm/it83xx.c index 3bc0c0db32..f662ad13a1 100644 --- a/driver/tcpm/it83xx.c +++ b/driver/tcpm/it83xx.c @@ -93,13 +93,12 @@ static enum tcpc_cc_voltage_status it83xx_get_cc( return cc_state; } -static void it83xx_rx_data(enum usbpd_port port, int *head, uint32_t *buf) +static int it83xx_rx_data(enum usbpd_port port, int *head, uint32_t *buf) { struct usbpd_header *p_head = (struct usbpd_header *)head; - *head = 0; if (!USBPD_IS_RX_DONE(port)) - return; + return EC_ERROR_UNKNOWN; /* store header */ *p_head = *((struct usbpd_header *)IT83XX_USBPD_RMH_BASE(port)); @@ -113,6 +112,8 @@ static void it83xx_rx_data(enum usbpd_port port, int *head, uint32_t *buf) * If clear this bit, USBPD receives next packet */ IT83XX_USBPD_MRSR(port) = USBPD_REG_MASK_RX_MSG_VALID; + + return EC_SUCCESS; } static enum tcpc_transmit_complete it83xx_tx_data( @@ -398,11 +399,11 @@ static int it83xx_tcpm_set_rx_enable(int port, int enable) static int it83xx_tcpm_get_message(int port, uint32_t *payload, int *head) { - it83xx_rx_data(port, head, payload); + int ret = it83xx_rx_data(port, head, payload); /* un-mask RX done interrupt */ IT83XX_USBPD_IMR(port) &= ~USBPD_REG_MASK_MSG_RX_DONE; - return EC_SUCCESS; + return ret; } static int it83xx_tcpm_transmit(int port, diff --git a/driver/tcpm/tcpci.c b/driver/tcpm/tcpci.c index 607dc71063..3f40fb7d7c 100644 --- a/driver/tcpm/tcpci.c +++ b/driver/tcpm/tcpci.c @@ -148,7 +148,6 @@ int tcpci_tcpm_get_message(int port, uint32_t *payload, int *head) /* RX_BYTE_CNT includes 3 bytes for frame type and header */ if (rv != EC_SUCCESS || cnt < 3) { - *head = 0; rv = EC_ERROR_UNKNOWN; goto clear; } |