diff options
author | Ting Shen <phoenixshen@google.com> | 2021-11-24 15:21:28 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-12-01 07:03:25 +0000 |
commit | 762e1373319c42230923f7310d25a54d64697374 (patch) | |
tree | c6ccfe0c1721bec50d7d1f602ad04c6bf209a4fa | |
parent | dde3e173f71a81ab4ecbb2dfaeb188b8ba877fcc (diff) | |
download | chrome-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>
-rw-r--r-- | driver/bc12/mt6360.c | 6 | ||||
-rw-r--r-- | driver/tcpm/rt1718s.c | 6 |
2 files changed, 10 insertions, 2 deletions
diff --git a/driver/bc12/mt6360.c b/driver/bc12/mt6360.c index 50aa4d0e45..e9fc769d5e 100644 --- a/driver/bc12/mt6360.c +++ b/driver/bc12/mt6360.c @@ -166,7 +166,11 @@ static void mt6360_usb_charger_task(const int port) /* vbus change, start bc12 detection */ 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) mt6360_enable_bc12_detection(1); else mt6360_update_charge_manager( 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( |