diff options
author | Shawn Nematbakhsh <shawnn@chromium.org> | 2016-08-31 15:32:40 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-09-13 22:21:31 -0700 |
commit | 9229c795b0c4c262092c754620bf1b2bf8a9f8d7 (patch) | |
tree | e7ce284eb81e91b79fd7e922d5d3e2be14320a21 /common/usb_pd_policy.c | |
parent | a04a2cb9af4c71773cfa0ea1b7aa9528cc1dc62f (diff) | |
download | chrome-ec-9229c795b0c4c262092c754620bf1b2bf8a9f8d7.tar.gz |
charger: bd99955: Enable VBUS discharge when appropriate
Use a custom VBUS threshold of 3.9V for enable / disable of our VBUS
discharge circuit.
BUG=chrome-os-partner:55584
BRANCH=None
TEST=Plug Apple charge-thru accessory into kevin, plug zinger into
accessory, verify charging occurs at PD-negotiated current / voltage.
Change-Id: I25f6f68cfe55e8bae2071cda39618b2bfadcb355
Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/379475
Commit-Ready: Aseda Aboagye <aaboagye@chromium.org>
Tested-by: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Tested-by: Aseda Aboagye <aaboagye@chromium.org>
Reviewed-by: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
Diffstat (limited to 'common/usb_pd_policy.c')
-rw-r--r-- | common/usb_pd_policy.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/common/usb_pd_policy.c b/common/usb_pd_policy.c index 57b4b64340..d9d803e398 100644 --- a/common/usb_pd_policy.c +++ b/common/usb_pd_policy.c @@ -952,3 +952,23 @@ int pd_custom_flash_vdm(int port, int cnt, uint32_t *payload) } return rsize; } + +#ifdef CONFIG_USB_PD_DISCHARGE +void pd_set_vbus_discharge(int port, int enable) +{ + static struct mutex discharge_lock[CONFIG_USB_PD_PORT_COUNT]; + + mutex_lock(&discharge_lock[port]); +#ifdef CONFIG_USB_PD_DISCHARGE_GPIO + enable &= !gpio_get_level(port ? GPIO_USB_C1_5V_EN : + GPIO_USB_C0_5V_EN); + + gpio_set_level(port ? GPIO_USB_C1_DISCHARGE : + GPIO_USB_C0_DISCHARGE, enable); +#else +/* TODO: Add support for TCPC-controlled discharge */ +#error "PD discharge implementation not defined" +#endif + mutex_unlock(&discharge_lock[port]); +} +#endif /* CONFIG_USB_PD_DISCHARGE */ |