summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Mittelberg <bmbm@google.com>2023-04-12 16:43:29 -0700
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2023-04-13 16:04:03 +0000
commitcd7559374de5d6c6ef0f5b26afac1913ba871592 (patch)
tree08d1f85706f1f2beaaf3282d4260e4b131ffb5c9
parent9ee54bc6983eeefbf776760a3a7e4638fce14664 (diff)
downloadchrome-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.c14
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);