summaryrefslogtreecommitdiff
path: root/include/charge_manager.h
diff options
context:
space:
mode:
authorShawn Nematbakhsh <shawnn@chromium.org>2015-02-06 11:16:42 -0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-02-08 03:27:51 +0000
commit96895743b0287cee5411bfc555d04123af86307d (patch)
treec5da5271fdec4d94b6a7b2ed677f58cf05355bcb /include/charge_manager.h
parent8d617567ca52d12352239ac5d4497ecc9620d1bd (diff)
downloadchrome-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/charge_manager.h')
-rw-r--r--include/charge_manager.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/include/charge_manager.h b/include/charge_manager.h
index 0b1de3186d..70afd2135e 100644
--- a/include/charge_manager.h
+++ b/include/charge_manager.h
@@ -22,9 +22,12 @@ struct charge_port_info {
};
/* Called by charging tasks to update their available charge */
-void charge_manager_update(int supplier,
- int charge_port,
- struct charge_port_info *charge);
+void charge_manager_update_charge(int supplier,
+ int port,
+ struct charge_port_info *charge);
+
+/* Called by charging tasks to indicate partner dualrole capability change */
+void charge_manager_update_dualrole(int port);
/* Update charge ceiling for a given port */
void charge_manager_set_ceil(int port, int ceil);