diff options
author | Aseda Aboagye <aaboagye@google.com> | 2020-02-14 13:23:40 -0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-02-21 10:30:08 +0000 |
commit | 4ffec9dbb3035154b952044d58cbeb9d1874e1ec (patch) | |
tree | b1626522d68fe72dfdd670374b56a556d64559fa /common/usbc | |
parent | 937af456b82fad241049f02d276ad8f66b25a2de (diff) | |
download | chrome-ec-4ffec9dbb3035154b952044d58cbeb9d1874e1ec.tar.gz |
TCPMv2: Notify system when entering attached state
We have Type-C disconnect and connect hooks, but the Type-C state
machine was only notifying on entry to the disconnect states. This
commit adds the notifications for connect upon entry to the attached
states.
BUG=b:149337338
BRANCH=None
TEST=Add a hook off of HOOK_USB_PD_CONNECT, verify that it gets called
when a Type-C port partner is connected.
Change-Id: Ifbdedf77cf519fc58b014c376d7733824791fe2f
Signed-off-by: Aseda Aboagye <aaboagye@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2057846
Tested-by: Aseda Aboagye <aaboagye@chromium.org>
Reviewed-by: Diana Z <dzigterman@chromium.org>
Commit-Queue: Aseda Aboagye <aaboagye@chromium.org>
Auto-Submit: Aseda Aboagye <aaboagye@chromium.org>
Diffstat (limited to 'common/usbc')
-rw-r--r-- | common/usbc/usb_tc_drp_acc_trysrc_sm.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/common/usbc/usb_tc_drp_acc_trysrc_sm.c b/common/usbc/usb_tc_drp_acc_trysrc_sm.c index 2ad9bfa881..4e2627a325 100644 --- a/common/usbc/usb_tc_drp_acc_trysrc_sm.c +++ b/common/usbc/usb_tc_drp_acc_trysrc_sm.c @@ -1850,6 +1850,8 @@ static void tc_attached_snk_entry(const int port) */ tc_set_data_role(port, PD_ROLE_UFP); + hook_notify(HOOK_USB_PD_CONNECT); + if (IS_ENABLED(CONFIG_CHARGE_MANAGER)) { tc[port].typec_curr = usb_get_typec_current_limit(tc[port].polarity, @@ -2491,7 +2493,7 @@ static void tc_attached_src_entry(const int port) tc[port].power_role, tc[port].data_role); /* * Both CC1 and CC2 pins shall be independently terminated to - * ground through Rp. + * pulled up through Rp. */ tcpm_select_rp_value(port, CONFIG_USB_PD_PULLUP); @@ -2573,6 +2575,13 @@ static void tc_attached_src_entry(const int port) /* VBus should be powered, turn on auto discharge disconnect */ tcpm_enable_auto_discharge_disconnect(port, 1); + + /* + * Only notify if we're not performing a power role swap. During a + * power role swap, the port partner is not disconnecting/connecting. + */ + if (!TC_CHK_FLAG(port, TC_FLAGS_PR_SWAP_IN_PROGRESS)) + hook_notify(HOOK_USB_PD_CONNECT); } static void tc_attached_src_run(const int port) |