summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Yilun Lin <yllin@chromium.org>2021-11-26 16:19:37 +0800
committerCommit Bot <commit-bot@chromium.org>2021-12-10 16:32:35 +0000
commit454d2a2e159e4f61e47f6948ee919d4a13a03c30 (patch)
tree0a8334a6cb6fee4bf89ae8115834d0c3cb2c2a6d
parentc56e2388d136bf61a3eff141f5479b0f15b70b78 (diff)
downloadchrome-ec-454d2a2e159e4f61e47f6948ee919d4a13a03c30.tar.gz
zephyr: corsola: refactor usb_pd_policy
Move corsola/usb_pd_policy to krabby folder. Kingler hasn't configured USBC yet, and kingler/krabby use very different USB-C components. BUG=b:206553789 b:203739613 TEST=zmake testall BRANCH=none Change-Id: I2d0568e73135b81290c73d0af5f1d8ff73431ffd Signed-off-by: Eric Yilun Lin <yllin@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3306758 Tested-by: Eric Yilun Lin <yllin@google.com> Auto-Submit: Eric Yilun Lin <yllin@google.com> Reviewed-by: Ting Shen <phoenixshen@chromium.org> Commit-Queue: Ting Shen <phoenixshen@chromium.org>
-rw-r--r--zephyr/projects/corsola/CMakeLists.txt2
-rw-r--r--zephyr/projects/corsola/src/krabby/usb_pd_policy.c89
-rw-r--r--zephyr/projects/corsola/src/usb_pd_policy.c80
3 files changed, 91 insertions, 80 deletions
diff --git a/zephyr/projects/corsola/CMakeLists.txt b/zephyr/projects/corsola/CMakeLists.txt
index 79ac32d915..3e9cac9f83 100644
--- a/zephyr/projects/corsola/CMakeLists.txt
+++ b/zephyr/projects/corsola/CMakeLists.txt
@@ -26,6 +26,8 @@ if(DEFINED CONFIG_BOARD_KRABBY)
zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_LED_COMMON
"src/krabby/led.c")
zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_USBC
+ "src/krabby/usb_pd_policy.c")
+ zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_USBC
"src/krabby/usbc_config.c")
elseif(DEFINED CONFIG_BOARD_KINGLER)
project(kingler)
diff --git a/zephyr/projects/corsola/src/krabby/usb_pd_policy.c b/zephyr/projects/corsola/src/krabby/usb_pd_policy.c
new file mode 100644
index 0000000000..8d28364664
--- /dev/null
+++ b/zephyr/projects/corsola/src/krabby/usb_pd_policy.c
@@ -0,0 +1,89 @@
+/* Copyright 2021 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 "adc.h"
+#include "charge_manager.h"
+#include "chipset.h"
+#include "usb_charge.h"
+#include "usb_pd.h"
+#include "usbc_ppc.h"
+
+int pd_snk_is_vbus_provided(int port)
+{
+ static atomic_t vbus_prev[CONFIG_USB_PD_PORT_MAX_COUNT];
+ int vbus;
+
+ /*
+ * (b:181203590#comment20) TODO(yllin): use
+ * PD_VSINK_DISCONNECT_PD for non-5V case.
+ */
+ vbus = adc_read_channel(board_get_vbus_adc(port)) >=
+ PD_V_SINK_DISCONNECT_MAX;
+
+#ifdef CONFIG_USB_CHARGER
+ /*
+ * There's no PPC to inform VBUS change for usb_charger, so inform
+ * the usb_charger now.
+ */
+ if (!!(vbus_prev[port] != vbus))
+ usb_charger_vbus_change(port, vbus);
+
+ if (vbus)
+ atomic_or(&vbus_prev[port], 1);
+ else
+ atomic_clear(&vbus_prev[port]);
+#endif
+ return vbus;
+}
+
+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);
+
+ /* Notify host of power info change. */
+ pd_send_host_event(PD_EVENT_POWER_CHANGE);
+}
+
+int pd_check_vconn_swap(int port)
+{
+ /* Allow Vconn swap if AP is on. */
+ return chipset_in_state(CHIPSET_STATE_SUSPEND | CHIPSET_STATE_ON);
+}
+
+int pd_set_power_supply_ready(int port)
+{
+ 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;
+
+ /* 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);
+}
diff --git a/zephyr/projects/corsola/src/usb_pd_policy.c b/zephyr/projects/corsola/src/usb_pd_policy.c
index 63131b8290..54322811a2 100644
--- a/zephyr/projects/corsola/src/usb_pd_policy.c
+++ b/zephyr/projects/corsola/src/usb_pd_policy.c
@@ -3,9 +3,7 @@
* found in the LICENSE file.
*/
-#include "adc.h"
#include "atomic.h"
-#include "charge_manager.h"
#include "chipset.h"
#include "timer.h"
#include "usb_dp_alt_mode.h"
@@ -152,81 +150,3 @@ __override void svdm_exit_dp_mode(int port)
baseboard_mst_enable_control(port, 0);
#endif
}
-
-int pd_snk_is_vbus_provided(int port)
-{
- static atomic_t vbus_prev[CONFIG_USB_PD_PORT_MAX_COUNT];
- int vbus;
-
- /*
- * (b:181203590#comment20) TODO(yllin): use
- * PD_VSINK_DISCONNECT_PD for non-5V case.
- */
- vbus = adc_read_channel(board_get_vbus_adc(port)) >=
- PD_V_SINK_DISCONNECT_MAX;
-
-#ifdef CONFIG_USB_CHARGER
- /*
- * There's no PPC to inform VBUS change for usb_charger, so inform
- * the usb_charger now.
- */
- if (!!(vbus_prev[port] != vbus))
- usb_charger_vbus_change(port, vbus);
-
- if (vbus)
- atomic_or(&vbus_prev[port], 1);
- else
- atomic_clear(&vbus_prev[port]);
-#endif
- return vbus;
-}
-
-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);
-
- /* Notify host of power info change. */
- pd_send_host_event(PD_EVENT_POWER_CHANGE);
-}
-
-int pd_check_vconn_swap(int port)
-{
- /* Allow Vconn swap if AP is on. */
- return chipset_in_state(CHIPSET_STATE_SUSPEND | CHIPSET_STATE_ON);
-}
-
-int pd_set_power_supply_ready(int port)
-{
- 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;
-
- /* 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);
-}