diff options
author | Shawn Nematbakhsh <shawnn@chromium.org> | 2016-06-15 12:49:51 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-06-16 12:27:42 -0700 |
commit | 48435ece3b65cbec5e8edf68b9d790d66f8d23be (patch) | |
tree | 14ba94a98e3be7e8f56a6c81fdc2988ae5474c15 /common/usb_charger.c | |
parent | b12662080799859b326461ae498a10d61dd87e2e (diff) | |
download | chrome-ec-48435ece3b65cbec5e8edf68b9d790d66f8d23be.tar.gz |
bd99955: Improve interrupt / USB charger task wake scheme
Previously our charger ISR called a deferred task which woke our charger
task. We can skip the deferred task and just wake our charger task
directly.
The other meaningful change here is to assume that we're using the
charger for VBUS detection / BC1.2 if we have a usb_chg task, which
holds true for all of our current boards with this charger.
BUG=None
TEST=Manual on kevin with subsequent commit. Verify charger connect /
disconnect detection works properly on both ports, with zinger, donette
and generic DCP charger.
BRANCH=None
Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Change-Id: Iad4f3ea90947b50859c549b591675e325717209f
Reviewed-on: https://chromium-review.googlesource.com/352822
Commit-Ready: Shawn N <shawnn@chromium.org>
Tested-by: Shawn N <shawnn@chromium.org>
Reviewed-by: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Diffstat (limited to 'common/usb_charger.c')
-rw-r--r-- | common/usb_charger.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/common/usb_charger.c b/common/usb_charger.c index 33754120a1..2cd9cfbcd3 100644 --- a/common/usb_charger.c +++ b/common/usb_charger.c @@ -59,14 +59,13 @@ int usb_charger_port_is_sourcing_vbus(int port) void usb_charger_vbus_change(int port, int vbus_level) { /* If VBUS has transitioned low, notify PD module directly */ - pd_vbus_low(port); + if (!vbus_level) + pd_vbus_low(port); + /* Update VBUS supplier and signal VBUS change to USB_CHG task */ update_vbus_supplier(port, vbus_level); -#ifdef HAS_TASK_USB_CHG - /* USB Charger task */ - task_set_event(TASK_ID_USB_CHG, (1 << port), 0); -#else +#ifdef HAS_TASK_USB_CHG_P0 /* USB Charger task(s) */ task_set_event(USB_CHG_PORT_TO_TASK_ID(port), USB_CHG_EVENT_VBUS, 0); #endif |