diff options
author | Wisley Chen <wisley.chen@quanta.corp-partner.google.com> | 2020-06-17 08:51:00 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-06-17 06:55:59 +0000 |
commit | 9d1d0f79f507c37d5fa039e12c9017453c90b531 (patch) | |
tree | 73a8d9364abecea612775b8af5e3cd3872535adc /board/drawcia/usb_pd_policy.c | |
parent | ba835afd410790bbccf870d1f946eb3711d75331 (diff) | |
download | chrome-ec-9d1d0f79f507c37d5fa039e12c9017453c90b531.tar.gz |
drawcia: Initial EC image
Create the initial EC image for the drawcia variant by copying the
waddledee reference board EC files into a new directory named for
the variant.
(Auto-Generated by create_initial_ec_image.sh version 1.0.3).
BUG=b:158540280
BRANCH=none
TEST=make BOARD=drawcia
Signed-off-by: Wisley Chen <wisley.chen@quanta.corp-partner.google.com>
Change-Id: I0f3f70faa1c5a3cbecd2bfea9fec1aba9d95a955
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2237493
Reviewed-by: Marco Chen <marcochen@chromium.org>
Commit-Queue: Marco Chen <marcochen@chromium.org>
Tested-by: Marco Chen <marcochen@chromium.org>
Diffstat (limited to 'board/drawcia/usb_pd_policy.c')
-rw-r--r-- | board/drawcia/usb_pd_policy.c | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/board/drawcia/usb_pd_policy.c b/board/drawcia/usb_pd_policy.c new file mode 100644 index 0000000000..0fc682b28e --- /dev/null +++ b/board/drawcia/usb_pd_policy.c @@ -0,0 +1,80 @@ +/* Copyright 2020 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "battery_smart.h" +#include "charge_manager.h" +#include "charger.h" +#include "chipset.h" +#include "common.h" +#include "console.h" +#include "driver/charger/sm5803.h" +#include "driver/tcpm/tcpci.h" +#include "usb_pd.h" + +#define CPRINTF(format, args...) cprintf(CC_USBPD, format, ## args) +#define CPRINTS(format, args...) cprints(CC_USBPD, format, ## args) + +int pd_check_vconn_swap(int port) +{ + /* Allow VCONN swaps if the AP is on */ + return chipset_in_state(CHIPSET_STATE_ANY_SUSPEND | CHIPSET_STATE_ON); +} + +void pd_power_supply_reset(int port) +{ + int prev_en; + + if (port < 0 || port >= CONFIG_USB_PD_PORT_MAX_COUNT) + return; + + /* TODO(b/147440290): charger functions should take chgnum */ + prev_en = chg_chips[port].drv->is_sourcing_otg_power(port, port); + + /* Disable Vbus */ + chg_chips[port].drv->enable_otg_power(port, 0); + + /* Discharge Vbus if previously enabled */ + if (prev_en) + sm5803_set_vbus_disch(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_set_power_supply_ready(int port) +{ + enum ec_error_list rv; + + /* Disable charging */ + rv = chg_chips[port].drv->set_mode(port, CHARGE_FLAG_INHIBIT_CHARGE); + if (rv) + return rv; + + /* Disable Vbus discharge */ + sm5803_set_vbus_disch(port, 0); + + /* Provide Vbus */ + chg_chips[port].drv->enable_otg_power(port, 1); + +#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 pd_snk_is_vbus_provided(int port) +{ + return sm5803_is_vbus_present(port); +} |