diff options
author | Daisuke Nojiri <dnojiri@chromium.org> | 2019-06-06 11:28:48 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-10-01 03:35:59 +0000 |
commit | 1fe7f225ccba0d6551c9b2cf27f28a3d3b4324eb (patch) | |
tree | 54a2a92a59870ec1caf738d230902156c27fcebf | |
parent | d963e5f2ff1c5af93d5cbce038d926a5d45594b6 (diff) | |
download | chrome-ec-1fe7f225ccba0d6551c9b2cf27f28a3d3b4324eb.tar.gz |
usbpd: Fix infinite init loop
tcpci_tcpm_init can loop forever if tcpc_read or mux_read is successful
but TCPC_REG_POWER_STATUS_UNINIT bit is set.
This patch fixes it.
Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
BUG=chromium:971741
BRANCH=none
TEST=buildall
Change-Id: I5eeb58fc77ee0de753a6c0b049bf332e291faa29
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1647366
Reviewed-by: Scott Collyer <scollyer@chromium.org>
Commit-Queue: Daisuke Nojiri <dnojiri@chromium.org>
Tested-by: Daisuke Nojiri <dnojiri@chromium.org>
(cherry picked from commit 2e3ec3604f774d9c7bb9eaf0aaf339b4a8cbd9cd)
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1833243
Tested-by: caveh jalali <caveh@chromium.org>
Auto-Submit: caveh jalali <caveh@chromium.org>
Reviewed-by: Caveh Jalali <caveh@google.com>
Commit-Queue: Caveh Jalali <caveh@google.com>
-rw-r--r-- | driver/tcpm/tcpci.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/driver/tcpm/tcpci.c b/driver/tcpm/tcpci.c index 5c49bceb76..51ddcb5901 100644 --- a/driver/tcpm/tcpci.c +++ b/driver/tcpm/tcpci.c @@ -745,13 +745,13 @@ int tcpci_tcpm_init(int port) error = tcpc_read(port, TCPC_REG_POWER_STATUS, &power_status); /* * If read succeeds and the uninitialized bit is clear, then - * initalization is complete, clear all alert bits and write + * initialization is complete, clear all alert bits and write * the initial alert mask. */ if (!error && !(power_status & TCPC_REG_POWER_STATUS_UNINIT)) break; - else if (error && --tries == 0) - return error; + if (--tries <= 0) + return error ? error : EC_ERROR_TIMEOUT; msleep(10); } @@ -797,8 +797,8 @@ int tcpci_tcpm_mux_init(int port) */ if (!error && !(power_status & TCPC_REG_POWER_STATUS_UNINIT)) break; - else if (error && --tries == 0) - return error; + if (--tries <= 0) + return error ? error : EC_ERROR_TIMEOUT; msleep(10); } |