summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTing Shen <phoenixshen@google.com>2022-04-28 18:17:23 +0800
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-04-29 07:42:21 +0000
commit98770c9327a95f2a13425eb6e3bb65ea19292992 (patch)
tree1617edeca4e33cd06573e4f43e63d278bb0b01a3
parent7c7da59e13e244ccb00916a7b07148b58e1248a6 (diff)
downloadchrome-ec-98770c9327a95f2a13425eb6e3bb65ea19292992.tar.gz
tcpm/it8xxx2: determine retry count by protocol version
Replace the hard-coded retry count by dynamically checking protocol version. This is required to pass PD2.0 related tests. BUG=b:229700747 TEST=pass compliance test TEST.PD.PROT.ALL.01 BRANCH=none Signed-off-by: Ting Shen <phoenixshen@google.com> Change-Id: I749649e6d6360295824179dfdc939a0aa2d6ea38 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3613161 Tested-by: Ting Shen <phoenixshen@chromium.org> Reviewed-by: Eric Yilun Lin <yllin@google.com> Commit-Queue: Ting Shen <phoenixshen@chromium.org> Reviewed-by: Ruibin Chang <Ruibin.Chang@ite.com.tw>
-rw-r--r--driver/tcpm/it8xxx2.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/driver/tcpm/it8xxx2.c b/driver/tcpm/it8xxx2.c
index 7bed654132..e1d4ad5d5c 100644
--- a/driver/tcpm/it8xxx2.c
+++ b/driver/tcpm/it8xxx2.c
@@ -204,6 +204,7 @@ static enum tcpc_transmit_complete it8xxx2_tx_data(enum usbpd_port port,
int r;
uint32_t evt;
uint8_t length = PD_HEADER_CNT(header);
+ uint8_t retry_count = pd_get_retry_count(port, type);
/* Set message header */
IT83XX_USBPD_MHSR0(port) = (uint8_t)header;
@@ -216,6 +217,10 @@ static enum tcpc_transmit_complete it8xxx2_tx_data(enum usbpd_port port,
IT83XX_USBPD_MTSR0(port) =
(IT83XX_USBPD_MTSR0(port) & ~0x7) | (type & 0x7);
+ /* According PD version set HW auto retry count */
+ IT83XX_USBPD_PDCSR0(port) = (IT83XX_USBPD_PDCSR0(port) & ~0xC0) |
+ (retry_count << 6);
+
/* Limited by PD_HEADER_CNT() */
ASSERT(length <= 0x7);
@@ -223,7 +228,7 @@ static enum tcpc_transmit_complete it8xxx2_tx_data(enum usbpd_port port,
/* Set data */
memcpy((uint32_t *)&IT83XX_USBPD_TDO(port), buf, length * 4);
- for (r = 0; r <= CONFIG_PD_RETRY_COUNT; r++) {
+ for (r = 0; r <= retry_count; r++) {
/* Start Tx */
USBPD_KICK_TX_START(port);
evt = task_wait_event_mask(TASK_EVENT_PHY_TX_DONE,
@@ -266,7 +271,7 @@ static enum tcpc_transmit_complete it8xxx2_tx_data(enum usbpd_port port,
break;
}
- if (r > CONFIG_PD_RETRY_COUNT)
+ if (r > retry_count)
return TCPC_TX_COMPLETE_DISCARDED;
return TCPC_TX_COMPLETE_SUCCESS;
@@ -765,9 +770,6 @@ static void it8xxx2_init(enum usbpd_port port, int role)
/* Reset and disable HW auto generate message header */
IT83XX_USBPD_PDMSR(port) &= ~USBPD_REG_MASK_DISABLE_AUTO_GEN_TX_HEADER;
USBPD_SW_RESET(port);
- /* According PD version set HW auto retry count */
- IT83XX_USBPD_PDCSR0(port) = (IT83XX_USBPD_PDCSR0(port) & ~0xC0) |
- (CONFIG_PD_RETRY_COUNT << 6);
/* Disable Rx decode */
it8xxx2_tcpm_set_rx_enable(port, 0);
if (IS_ENABLED(CONFIG_USB_PD_TCPMV1)) {