summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Bettis <jbettis@google.com>2022-01-12 12:10:34 -0700
committerCommit Bot <commit-bot@chromium.org>2022-01-13 17:39:29 +0000
commit9a74b1cdbb5f9024d29393ba5c59c626051d4e82 (patch)
tree01bec369a4bb0ae63d603d6161c1dc33e9e21a96
parent604f168378ac5e896a23403c4e78d18da62baaba (diff)
downloadchrome-ec-9a74b1cdbb5f9024d29393ba5c59c626051d4e82.tar.gz
zephyr: Add qcom.c to test/drivers
Add the necessary Kconfigs to make qcom.c get included into test/drivers as well as required gpios and stubs and other dependencies. BRANCH=None BUG=b:214256453 TEST=zmake testall Change-Id: Ief5ab7e1e30810946ef4967ae65fa48e4c4a9220 Signed-off-by: Jeremy Bettis <jbettis@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3384479 Reviewed-by: Wai-Hong Tam <waihong@google.com> Commit-Queue: Jeremy Bettis <jbettis@chromium.org> Tested-by: Jeremy Bettis <jbettis@chromium.org>
-rw-r--r--zephyr/shim/src/ztest_system.c33
-rw-r--r--zephyr/test/drivers/overlay.dts46
-rw-r--r--zephyr/test/drivers/prj.conf8
-rw-r--r--zephyr/test/drivers/src/stubs.c57
4 files changed, 101 insertions, 43 deletions
diff --git a/zephyr/shim/src/ztest_system.c b/zephyr/shim/src/ztest_system.c
index 7da949dd84..7df64d3b2b 100644
--- a/zephyr/shim/src/ztest_system.c
+++ b/zephyr/shim/src/ztest_system.c
@@ -5,6 +5,10 @@
#include "system.h"
#include "cros_version.h"
+#include "battery.h"
+#include "charge_manager.h"
+
+#define CPRINTS(format, args...) cprints(CC_SYSTEM, format, ## args)
/* Ongoing actions preventing going into deep-sleep mode. */
atomic_t sleep_mask;
@@ -80,3 +84,32 @@ void system_reset(int flags)
{
__builtin_unreachable();
}
+
+int system_can_boot_ap(void)
+{
+ int soc = -1;
+ int pow = -1;
+
+#if defined(CONFIG_BATTERY) && \
+ defined(CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON)
+ /* Require a minimum battery level to power on. If battery isn't
+ * present, battery_state_of_charge_abs returns false.
+ */
+ if (battery_state_of_charge_abs(&soc) == EC_SUCCESS &&
+ soc >= CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON)
+ return 1;
+#endif
+
+#if defined(CONFIG_CHARGE_MANAGER) && \
+ defined(CONFIG_CHARGER_MIN_POWER_MW_FOR_POWER_ON)
+ pow = charge_manager_get_power_limit_uw() / 1000;
+ if (pow >= CONFIG_CHARGER_MIN_POWER_MW_FOR_POWER_ON)
+ return 1;
+#else
+ /* For fixed AC system */
+ return 1;
+#endif
+
+ CPRINTS("Not enough power to boot (%d %%, %d mW)", soc, pow);
+ return 0;
+}
diff --git a/zephyr/test/drivers/overlay.dts b/zephyr/test/drivers/overlay.dts
index f45210d621..ca38a578aa 100644
--- a/zephyr/test/drivers/overlay.dts
+++ b/zephyr/test/drivers/overlay.dts
@@ -89,6 +89,50 @@
gpios = <&gpio0 15 GPIO_INPUT>;
enum-name = "GPIO_SWITCHCAP_PG_INT_L";
};
+ gpio_ap_rst_l: ap_rst_l {
+ gpios = <&gpio0 16 GPIO_INPUT>;
+ enum-name = "GPIO_AP_RST_L";
+ };
+ gpio_ps_hold: ps_hold {
+ gpios = <&gpio0 17 (GPIO_INPUT | GPIO_PULL_DOWN)>;
+ enum-name = "GPIO_PS_HOLD";
+ };
+ gpio_mb_power_good: mb_power_good {
+ gpios = <&gpio0 18 (GPIO_INPUT | GPIO_PULL_DOWN)>;
+ enum-name = "GPIO_POWER_GOOD";
+ };
+ gpio_ap_suspend: ap_suspend {
+ gpios = <&gpio0 19 GPIO_INPUT>;
+ enum-name = "GPIO_AP_SUSPEND";
+ };
+ gpio_pmic_kpd_pwr_odl: pmic_kpd_pwr_odl {
+ gpios = <&gpio0 20 GPIO_ODR_HIGH>;
+ enum-name = "GPIO_PMIC_KPD_PWR_ODL";
+ };
+ gpio_pmic_resin_l: pmic_resin_l {
+ gpios = <&gpio0 21 GPIO_ODR_HIGH>;
+ enum-name = "GPIO_PMIC_RESIN_L";
+ };
+ gpio_warm_reset_l: warm_reset_l {
+ gpios = <&gpio0 22 GPIO_INPUT>;
+ enum-name = "GPIO_WARM_RESET_L";
+ };
+ gpio_lid_open_ec: lid_open_ec {
+ gpios = <&gpio0 23 GPIO_INPUT>;
+ enum-name = "GPIO_LID_OPEN";
+ };
+ gpio_switchcap_on: switchcap_on {
+ gpios = <&gpio0 24 GPIO_OUT_LOW>;
+ enum-name = "GPIO_SWITCHCAP_ON";
+ };
+ gpio_ec_pwr_btn_odl: ec_pwr_btn_odl {
+ gpios = <&gpio0 25 GPIO_INPUT>;
+ enum-name = "GPIO_POWER_BUTTON_L";
+ };
+ gpio_src_vph_pwr_pg: src_vph_pwr_pg {
+ gpios = <&gpio0 26 (GPIO_INPUT | GPIO_PULL_DOWN)>;
+ enum-name = "GPIO_SWITCHCAP_PG";
+ };
};
named-i2c-ports {
compatible = "named-i2c-ports";
@@ -566,7 +610,7 @@
};
&gpio0 {
- ngpios = <16>;
+ ngpios = <27>;
};
&i2c0 {
diff --git a/zephyr/test/drivers/prj.conf b/zephyr/test/drivers/prj.conf
index 1d79c2a840..a4cc8beead 100644
--- a/zephyr/test/drivers/prj.conf
+++ b/zephyr/test/drivers/prj.conf
@@ -113,3 +113,11 @@ CONFIG_PLATFORM_EC_POWERSEQ_PP5000_CONTROL=n
# USB-C
CONFIG_PLATFORM_EC_USBC_PPC_SYV682C=y
CONFIG_PLATFORM_EC_USBC_PPC_SYV682X=y
+
+# Chipset for Herobrine
+CONFIG_AP_ARM_QUALCOMM_SC7280=y
+CONFIG_PLATFORM_EC_POWERSEQ_HOST_SLEEP=y
+
+CONFIG_PLATFORM_EC_LID_SWITCH=y
+CONFIG_PLATFORM_EC_POWER_BUTTON=y
+CONFIG_PLATFORM_EC_HOST_INTERFACE_ESPI=y \ No newline at end of file
diff --git a/zephyr/test/drivers/src/stubs.c b/zephyr/test/drivers/src/stubs.c
index 9ebf768098..d46f899101 100644
--- a/zephyr/test/drivers/src/stubs.c
+++ b/zephyr/test/drivers/src/stubs.c
@@ -325,48 +325,6 @@ uint16_t tcpc_get_alert_status(void)
return status;
}
-enum power_state power_chipset_init(void)
-{
- return POWER_G3;
-}
-
-enum power_state power_handle_state(enum power_state state)
-{
- switch (state) {
- case POWER_G3S5:
- case POWER_S5S3:
- case POWER_S3S0:
- case POWER_S0S3:
- case POWER_S3S5:
- case POWER_S5G3:
-#ifdef CONFIG_POWER_S0IX
- case POWER_S0ixS0:
- case POWER_S0S0ix:
-#endif
- /*
- * Wait for event in transition states to prevent dead loop in
- * chipset task
- */
- task_wait_event(-1);
- break;
- default:
- break;
- }
-
- return state;
-}
-
-void chipset_reset(enum chipset_shutdown_reason reason)
-{
-}
-
-void chipset_force_shutdown(enum chipset_shutdown_reason reason)
-{
-}
-
-/* Power signals list. Must match order of enum power_signal. */
-const struct power_signal_info power_signal_list[] = {};
-
void tcpc_alert_event(enum gpio_signal signal)
{
int port;
@@ -429,3 +387,18 @@ static void stubs_interrupt_init(void)
gpio_enable_interrupt(GPIO_SWITCHCAP_PG_INT_L);
}
DECLARE_HOOK(HOOK_INIT, stubs_interrupt_init, HOOK_PRIO_INIT_I2C + 1);
+
+void board_set_switchcap_power(int enable)
+{
+ gpio_set_level(GPIO_SWITCHCAP_ON, enable);
+}
+
+int board_is_switchcap_enabled(void)
+{
+ return gpio_get_level(GPIO_SWITCHCAP_ON);
+}
+
+int board_is_switchcap_power_good(void)
+{
+ return gpio_get_level(GPIO_SWITCHCAP_PG);
+}