From 2c1626eb45e317d4b705add89409f294a7146919 Mon Sep 17 00:00:00 2001 From: Shawn Nematbakhsh Date: Tue, 25 Oct 2016 16:19:38 -0700 Subject: [PATCH] pd: Whitelist port after receiving IDENT response Making dual-role determination after receiving source caps is not sufficient, since we may not yet have identified the partner port. BUG=chrome-os-partner:56966 BRANCH=gru TEST=Attach 'old' Apple USB-C accessory to kevin, attach OEM charger to accessory, run 'pd X hard', verify device charges from port. Change-Id: I7333dd2c723e7245d30cf8a6cb1344e60073c063 Signed-off-by: Shawn Nematbakhsh Reviewed-on: https://chromium-review.googlesource.com/403118 Reviewed-by: Aseda Aboagye Reviewed-by: Vincent Palatin (cherry picked from commit 09691a0e8dd93383fa76b74332d89707bfe16001) Reviewed-on: https://chromium-review.googlesource.com/415492 Commit-Ready: Shawn N Tested-by: Shawn N --- common/usb_pd_policy.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/common/usb_pd_policy.c b/common/usb_pd_policy.c index 1fa53d5695..82a75ab54f 100644 --- a/common/usb_pd_policy.c +++ b/common/usb_pd_policy.c @@ -689,6 +689,12 @@ int pd_svdm(int port, int cnt, uint32_t *payload, uint32_t **rpayload) case CMD_DISCOVER_IDENT: dfp_consume_identity(port, cnt, payload); rsize = dfp_discover_svids(port, payload); +#ifdef CONFIG_CHARGE_MANAGER + if (pd_charge_from_device(pd_get_identity_vid(port), + pd_get_identity_pid(port))) + charge_manager_update_dualrole(port, + CAP_DEDICATED); +#endif break; case CMD_DISCOVER_SVID: dfp_consume_svids(port, payload);