diff options
author | Shawn Nematbakhsh <shawnn@chromium.org> | 2015-02-06 11:16:42 -0800 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-02-08 03:27:51 +0000 |
commit | 96895743b0287cee5411bfc555d04123af86307d (patch) | |
tree | c5da5271fdec4d94b6a7b2ed677f58cf05355bcb /include/usb_pd.h | |
parent | 8d617567ca52d12352239ac5d4497ecc9620d1bd (diff) | |
download | chrome-ec-96895743b0287cee5411bfc555d04123af86307d.tar.gz |
charge_manager: Wait for dualrole determination before charging
If a dual-role charger is plugged, we will not realize it is dual-role
until after we see a type-C charge source. It can cause us to briefly
charge from a dual-role charger, which has bad side effects related to
charge override and the lightbar. Fix this by not charging from a port
until we are fairly certain that it is a dedicated charger (based upon
PD discovery timeout).
BUG=chrome-os-partner:36390
TEST=Manual on Samus. Insert 1A Apple charger, verify correct detection.
Run 'chgoverride -2' to prevent charging, then repeatedly insert +
remove a dual-role charger on the other charge port. Verify that
charging is still prevented. Finally, insert a dedicated charger and
verify that the override is removed. Also, pass unit tests and verify
correct detection in various scenarios with various chargers.
BRANCH=Samus
Change-Id: Ia4154f34dd0a850b6e72bebadbd938f034532f14
Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/247130
Reviewed-by: Alec Berg <alecaberg@chromium.org>
Diffstat (limited to 'include/usb_pd.h')
-rw-r--r-- | include/usb_pd.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/include/usb_pd.h b/include/usb_pd.h index 410251775f..d177007239 100644 --- a/include/usb_pd.h +++ b/include/usb_pd.h @@ -1283,12 +1283,19 @@ int pd_is_connected(int port); */ int pd_get_polarity(int port); +/* Partner port dualrole capabilities */ +enum dualrole_capabilities { + CAP_UNKNOWN, + CAP_DUALROLE, + CAP_DEDICATED, +}; + /** * Get port partner dual-role capable status * * @param port USB-C port number */ -int pd_get_partner_dualrole_capable(int port); +enum dualrole_capabilities pd_get_partner_dualrole_capable(int port); /** * Get port partner data swap capable status |