summaryrefslogtreecommitdiff
path: root/board/wheelie/usb_pd_policy.c
diff options
context:
space:
mode:
authorSean McAllister <smcallis@google.com>2020-07-21 14:05:49 +0000
committerSean McAllister <smcallis@google.com>2020-07-21 14:12:56 +0000
commit6c8555196b2ce1138125af9d03b9327fe4ad1969 (patch)
treee76cf1163066593b2ba8b96b19179ccb8ef1e4c8 /board/wheelie/usb_pd_policy.c
parent4c12a3e2d97d320f985f16703120d21c71f72d59 (diff)
downloadchrome-ec-6c8555196b2ce1138125af9d03b9327fe4ad1969.tar.gz
Revert "wheelie: Remove it"
This reverts commit cedd3fba44d4352436d676e2eea50e9d94527b31. Reason for revert: Breaking CQ Original change's description: > wheelie: Remove it > > Wheelie is no more, therefore it's time to remove its files. :c > > BUG=None > BRANCH=None > TEST=`make -j buildall` > > Signed-off-by: Aseda Aboagye <aaboagye@google.com> > Change-Id: I89f52fb5e44ab49cc653a2cac23c8e444f05cb43 > Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2299847 > Reviewed-by: Aseda Aboagye <aaboagye@chromium.org> > Tested-by: Aseda Aboagye <aaboagye@chromium.org> > Commit-Queue: Diana Z <dzigterman@chromium.org> > Auto-Submit: Aseda Aboagye <aaboagye@chromium.org> Bug: None Change-Id: I22e8f15304b6bf67ddc768e2c25b1381df7082b9 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2309960 Reviewed-by: Sean McAllister <smcallis@google.com> Tested-by: Sean McAllister <smcallis@google.com>
Diffstat (limited to 'board/wheelie/usb_pd_policy.c')
-rw-r--r--board/wheelie/usb_pd_policy.c84
1 files changed, 84 insertions, 0 deletions
diff --git a/board/wheelie/usb_pd_policy.c b/board/wheelie/usb_pd_policy.c
new file mode 100644
index 0000000000..1611af23e0
--- /dev/null
+++ b/board/wheelie/usb_pd_policy.c
@@ -0,0 +1,84 @@
+/* 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)
+{
+ int chg_det = 0;
+
+ sm5803_get_chg_det(port, &chg_det);
+
+ return chg_det;
+}