diff options
author | Boris Mittelberg <bmbm@google.com> | 2023-04-12 16:43:29 -0700 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2023-04-13 16:04:03 +0000 |
commit | cd7559374de5d6c6ef0f5b26afac1913ba871592 (patch) | |
tree | 08d1f85706f1f2beaaf3282d4260e4b131ffb5c9 | |
parent | 9ee54bc6983eeefbf776760a3a7e4638fce14664 (diff) | |
download | chrome-ec-cd7559374de5d6c6ef0f5b26afac1913ba871592.tar.gz |
ktu1125: avoid touching vbus when not necessary
Avoid changing VBUS control wnen it is already set properly
BUG=none
BRANCH=none
TEST=manual test on rex sku2
Change-Id: I0d45f1ddd4cbe3348394762cbfe38a51d11650c1
Signed-off-by: Boris Mittelberg <bmbm@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4420424
Reviewed-by: Scott Collyer <scollyer@chromium.org>
-rw-r--r-- | driver/ppc/ktu1125.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/driver/ppc/ktu1125.c b/driver/ppc/ktu1125.c index f90168adef..c6ced41f85 100644 --- a/driver/ppc/ktu1125.c +++ b/driver/ppc/ktu1125.c @@ -260,7 +260,7 @@ static int ktu1125_is_vbus_present(int port) return 0; } - return regval & KTU1125_SYSA_OK; + return !!(regval & KTU1125_SYSA_OK); } #endif /* defined(CONFIG_USB_PD_VBUS_DETECT_PPC) */ @@ -275,7 +275,7 @@ static int ktu1125_is_sourcing_vbus(int port) return 0; } - return regval & KTU1125_VBUS_OK; + return !!(regval & KTU1125_VBUS_OK); } #ifdef CONFIG_USBC_PPC_POLARITY @@ -378,6 +378,12 @@ static int ktu1125_set_frs_enable(int port, int enable) static int ktu1125_vbus_sink_enable(int port, int enable) { +#ifdef CONFIG_USB_PD_VBUS_DETECT_PPC + /* Skip if VBUS SNK is already enabled/disabled */ + if (ktu1125_is_vbus_present(port) == enable) + return EC_SUCCESS; +#endif + /* Select active sink */ int rv = clr_flags(port, KTU1125_CTRL_SW_CFG, KTU1125_POW_MODE); @@ -391,6 +397,10 @@ static int ktu1125_vbus_sink_enable(int port, int enable) static int ktu1125_vbus_source_enable(int port, int enable) { + /* Skip if VBUS SRC is already enabled/disabled */ + if (ktu1125_is_sourcing_vbus(port) == enable) + return EC_SUCCESS; + /* Select active source */ int rv = set_flags(port, KTU1125_CTRL_SW_CFG, KTU1125_POW_MODE); |