diff options
author | Eric Yilun Lin <yllin@chromium.org> | 2020-05-12 11:46:37 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-05-15 07:39:55 +0000 |
commit | 7e70fc5301b425ce8e0265b6e7ebb3cf9e7109bb (patch) | |
tree | 35599948ab8bb041e00dac000cb96e649c8a4d4c /board/asurada/usb_pd_policy.c | |
parent | 55fc09f4be1c6a245c89e3be9816fb26d069f66c (diff) | |
download | chrome-ec-stabilize-13099.110.B-master.tar.gz |
asurada: enable PPC syv682x on C0/C1stabilize-quickfix-13099.93.B-masterstabilize-13099.94.B-masterstabilize-13099.90.B-masterstabilize-13099.85.B-masterstabilize-13099.73.B-masterstabilize-13099.70.B-masterstabilize-13099.118.B-masterstabilize-13099.110.B-masterstabilize-13099.101.B-masterrelease-R84-13099.B-master
Enable PPC on C0 and C1, where C1 port is optional and dependent
to the daughter board connected.
BUG=b:152562604
TEST=ensure C0/C1 can sink and source power.
BRANCH=master
Signed-off-by: Ting Shen <phoenixshen@google.com>
Signed-off-by: Eric Yilun Lin <yllin@chromium.org>
Change-Id: I2fabe59562ffbe63e91b60f36b726d63fefdc83b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2195721
Reviewed-by: Ting Shen <phoenixshen@chromium.org>
Commit-Queue: Ting Shen <phoenixshen@chromium.org>
Diffstat (limited to 'board/asurada/usb_pd_policy.c')
-rw-r--r-- | board/asurada/usb_pd_policy.c | 57 |
1 files changed, 55 insertions, 2 deletions
diff --git a/board/asurada/usb_pd_policy.c b/board/asurada/usb_pd_policy.c index 33c659708f..ed10dd11db 100644 --- a/board/asurada/usb_pd_policy.c +++ b/board/asurada/usb_pd_policy.c @@ -2,23 +2,76 @@ * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ +#include "charge_manager.h" #include "usb_pd.h" +#include "usbc_ppc.h" + +#ifndef CONFIG_USB_PD_MAX_SINGLE_SOURCE_CURRENT +#error Asurada reference must define CONFIG_USB_PD_MAX_SINGLE_SOURCE_CURRENT +#endif int pd_snk_is_vbus_provided(int port) { - return 0; + return ppc_is_vbus_present(port); } void pd_power_supply_reset(int port) { + int prev_en; + + prev_en = ppc_is_sourcing_vbus(port); + + /* Disable VBUS. */ + ppc_vbus_source_enable(port, 0); + + /* Enable discharge if we were previously sourcing 5V */ + if (prev_en) + pd_set_vbus_discharge(port, 1); + +#ifdef CONFIG_USB_PD_MAX_SINGLE_SOURCE_CURRENT + /* Give back the current quota we are no longer using */ + charge_manager_source_port(port, 0); +#endif /* defined(CONFIG_USB_PD_MAX_SINGLE_SOURCE_CURRENT) */ + + /* Notify host of power info change. */ + pd_send_host_event(PD_EVENT_POWER_CHANGE); } int pd_check_vconn_swap(int port) { + /* TODO: Only allow vconn swap if PP4200_G rail is enabled , s3/s0 on */ return 0; } int pd_set_power_supply_ready(int port) { - return 0; + int rv; + + /* Disable charging. */ + rv = ppc_vbus_sink_enable(port, 0); + if (rv) + return rv; + + pd_set_vbus_discharge(port, 0); + + /* Provide Vbus. */ + rv = ppc_vbus_source_enable(port, 1); + if (rv) + return rv; + +#ifdef CONFIG_USB_PD_MAX_SINGLE_SOURCE_CURRENT + /* Ensure we advertise the proper available current quota */ + charge_manager_source_port(port, 1); +#endif /* defined(CONFIG_USB_PD_MAX_SINGLE_SOURCE_CURRENT) */ + + /* Notify host of power info change. */ + pd_send_host_event(PD_EVENT_POWER_CHANGE); + + return EC_SUCCESS; } + +int board_vbus_source_enabled(int port) +{ + return ppc_is_sourcing_vbus(port); +} + |