summaryrefslogtreecommitdiff
path: root/driver/tcpm
diff options
context:
space:
mode:
authorTing Shen <phoenixshen@google.com>2021-11-24 15:21:28 +0800
committerCommit Bot <commit-bot@chromium.org>2021-12-01 07:03:25 +0000
commit762e1373319c42230923f7310d25a54d64697374 (patch)
treec6ccfe0c1721bec50d7d1f602ad04c6bf209a4fa /driver/tcpm
parentdde3e173f71a81ab4ecbb2dfaeb188b8ba877fcc (diff)
downloadchrome-ec-762e1373319c42230923f7310d25a54d64697374.tar.gz
mt6360/rt1718s: prevent BC1.2 trigger after PD established
Add an extra check to prevent BC 1.2 detection trigger when VBUS state change after pd connection established (for example, power role swap or fast role swap) and break the existing USB2 connection. Note that after this change, BC1.2 detection still triggers when a PD charger just plugged in, because bc1.2 detection happens before EC awares that the adapter supports PD. BUG=b:193753475 TEST=verify BC1.2 detection doesn't trigger in following scenario: 1) power role swap 2) fast role swap 3) plug in USB-C-to-A adapter BRANCH=asurada Signed-off-by: Ting Shen <phoenixshen@google.com> Change-Id: I6657d7f1fd8b8f2aad19744b89f794e107cd45c9 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3299287 Reviewed-by: Eric Yilun Lin <yllin@google.com> Commit-Queue: Ting Shen <phoenixshen@chromium.org> Tested-by: Ting Shen <phoenixshen@chromium.org>
Diffstat (limited to 'driver/tcpm')
-rw-r--r--driver/tcpm/rt1718s.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/driver/tcpm/rt1718s.c b/driver/tcpm/rt1718s.c
index b152ca602f..beabd8830b 100644
--- a/driver/tcpm/rt1718s.c
+++ b/driver/tcpm/rt1718s.c
@@ -326,7 +326,11 @@ static void rt1718s_bc12_usb_charger_task(const int port)
uint32_t evt = task_wait_event(-1);
if (evt & USB_CHG_EVENT_VBUS) {
- if (pd_snk_is_vbus_provided(port))
+ bool is_non_pd_sink = !pd_capable(port) &&
+ pd_get_power_role(port) == PD_ROLE_SINK &&
+ pd_snk_is_vbus_provided(port);
+
+ if (is_non_pd_sink)
rt1718s_enable_bc12_sink(port, true);
else
rt1718s_update_charge_manager(