summaryrefslogtreecommitdiff
path: root/zephyr/test/drivers/src
diff options
context:
space:
mode:
authorJeremy Bettis <jbettis@google.com>2021-04-09 10:21:39 -0600
committerCommit Bot <commit-bot@chromium.org>2021-04-12 17:54:21 +0000
commitbd2b1eb38349dcc736c5ec6763abdeb87e48aa16 (patch)
treec1c939743baaa263171c4d5b524f1e4886e5b5ba /zephyr/test/drivers/src
parentf334d6f9d4116eeb4999293108abf8fe147d6f83 (diff)
downloadchrome-ec-bd2b1eb38349dcc736c5ec6763abdeb87e48aa16.tar.gz
zephyr: Shell of driver ztest.
Create a shell of a test that can have many test suites for device drivers. Currently this test only checks that the EC_BATT_PRES_ODL can be read correctly by battery_is_present(). But it links in many device drivers and is a starting point for the next test. BUG=b:185118990 TEST=It is one BRANCH=none Signed-off-by: Jeremy Bettis <jbettis@google.com> Change-Id: I07c8835015cbe0fec6aaf82f782400e894043a90 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2819029 Tested-by: Jeremy Bettis <jbettis@chromium.org> Reviewed-by: Denis Brockus <dbrockus@chromium.org> Reviewed-by: Edward Hill <ecgh@chromium.org> Reviewed-by: Simon Glass <sjg@chromium.org> Commit-Queue: Jeremy Bettis <jbettis@chromium.org>
Diffstat (limited to 'zephyr/test/drivers/src')
-rw-r--r--zephyr/test/drivers/src/battery.c35
-rw-r--r--zephyr/test/drivers/src/main.c20
-rw-r--r--zephyr/test/drivers/src/stubs.c181
3 files changed, 236 insertions, 0 deletions
diff --git a/zephyr/test/drivers/src/battery.c b/zephyr/test/drivers/src/battery.c
new file mode 100644
index 0000000000..315f822985
--- /dev/null
+++ b/zephyr/test/drivers/src/battery.c
@@ -0,0 +1,35 @@
+/* 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 <zephyr.h>
+#include <ztest.h>
+#include <drivers/gpio.h>
+#include <drivers/gpio/gpio_emul.h>
+
+#include "battery.h"
+
+#define GPIO_BATT_PRES_ODL_PATH DT_PATH(named_gpios, ec_batt_pres_odl)
+#define GPIO_BATT_PRES_ODL_PORT DT_GPIO_PIN(GPIO_BATT_PRES_ODL_PATH, gpios)
+
+static void test_battery_is_present_gpio(void)
+{
+ const struct device *dev =
+ DEVICE_DT_GET(DT_GPIO_CTLR(GPIO_BATT_PRES_ODL_PATH, gpios));
+
+ zassert_not_null(dev, NULL);
+ /* ec_batt_pres_odl = 0 means battery present. */
+ zassert_ok(gpio_emul_input_set(dev, GPIO_BATT_PRES_ODL_PORT, 0), NULL);
+ zassert_equal(BP_YES, battery_is_present(), NULL);
+ /* ec_batt_pres_odl = 1 means battery missing. */
+ zassert_ok(gpio_emul_input_set(dev, GPIO_BATT_PRES_ODL_PORT, 1), NULL);
+ zassert_equal(BP_NO, battery_is_present(), NULL);
+}
+
+void test_suite_battery(void)
+{
+ ztest_test_suite(battery,
+ ztest_user_unit_test(test_battery_is_present_gpio));
+ ztest_run_test_suite(battery);
+}
diff --git a/zephyr/test/drivers/src/main.c b/zephyr/test/drivers/src/main.c
new file mode 100644
index 0000000000..7c5113d4ab
--- /dev/null
+++ b/zephyr/test/drivers/src/main.c
@@ -0,0 +1,20 @@
+/* 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 <zephyr.h>
+#include <ztest.h>
+#include "ec_app_main.h"
+
+extern void test_suite_battery(void);
+
+void test_main(void)
+{
+ /* Test suites to run before ec_app_main.*/
+
+ ec_app_main();
+
+ /* Test suites to run after ec_app_main.*/
+ test_suite_battery();
+}
diff --git a/zephyr/test/drivers/src/stubs.c b/zephyr/test/drivers/src/stubs.c
new file mode 100644
index 0000000000..afa3f2f2d6
--- /dev/null
+++ b/zephyr/test/drivers/src/stubs.c
@@ -0,0 +1,181 @@
+/* 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 "battery.h"
+#include "battery_fuel_gauge.h"
+#include "bc12/pi3usb9201_public.h"
+#include "charge_ramp.h"
+#include "charger.h"
+#include "charger/isl9241_public.h"
+#include "config.h"
+#include "i2c/i2c.h"
+#include "ppc/sn5s330_public.h"
+#include "ppc/syv682x_public.h"
+#include "retimer/bb_retimer_public.h"
+#include "stubs.h"
+#include "tcpm/tusb422_public.h"
+#include "tcpm/tusb422_public.h"
+#include "usb_mux.h"
+#include "usb_pd_tcpm.h"
+#include "usbc_ppc.h"
+
+/* All of these definitions are just to get the test to link. None of these
+ * functions are useful or behave as they should. Please remove them once the
+ * real code is able to be added. Most of the things here should either be
+ * in emulators or in the native_posix board-specific code or part of the
+ * device tree.
+ */
+
+/* BC1.2 charger detect configuration */
+const struct pi3usb9201_config_t pi3usb9201_bc12_chips[] = {
+ [USBC_PORT_C0] = {
+ .i2c_port = I2C_PORT_USB_C0,
+ .i2c_addr_flags = PI3USB9201_I2C_ADDR_3_FLAGS,
+ },
+ [USBC_PORT_C1] = {
+ .i2c_port = I2C_PORT_USB_C1,
+ .i2c_addr_flags = PI3USB9201_I2C_ADDR_3_FLAGS,
+ },
+};
+BUILD_ASSERT(ARRAY_SIZE(pi3usb9201_bc12_chips) == USBC_PORT_COUNT);
+
+/* Charger Chip Configuration */
+const struct charger_config_t chg_chips[] = {
+ {
+ .i2c_port = I2C_PORT_CHARGER,
+ .i2c_addr_flags = ISL9241_ADDR_FLAGS,
+ .drv = &isl9241_drv,
+ },
+};
+
+const struct board_batt_params board_battery_info[] = {
+ /* LGC\011 L17L3PB0 Battery Information */
+ /*
+ * Battery info provided by ODM on b/143477210, comment #11
+ */
+ [BATTERY_LGC011] = {
+ .fuel_gauge = {
+ .manuf_name = "LGC",
+ .ship_mode = {
+ .reg_addr = 0x00,
+ .reg_data = { 0x10, 0x10 },
+ },
+ .fet = {
+ .reg_addr = 0x0,
+ .reg_mask = 0x6000,
+ .disconnect_val = 0x6000,
+ }
+ },
+ .batt_info = {
+ .voltage_max = TARGET_WITH_MARGIN(13200, 5),
+ .voltage_normal = 11550, /* mV */
+ .voltage_min = 9000, /* mV */
+ .precharge_current = 256, /* mA */
+ .start_charging_min_c = 0,
+ .start_charging_max_c = 45,
+ .charging_min_c = 0,
+ .charging_max_c = 60,
+ .discharging_min_c = 0,
+ .discharging_max_c = 75,
+ },
+ },
+};
+BUILD_ASSERT(ARRAY_SIZE(board_battery_info) == BATTERY_TYPE_COUNT);
+
+const enum battery_type DEFAULT_BATTERY_TYPE = BATTERY_LGC011;
+
+int board_set_active_charge_port(int port)
+{
+ return EC_SUCCESS;
+}
+
+int extpower_is_present(void)
+{
+ return 0;
+}
+
+int board_is_vbus_too_low(int port, enum chg_ramp_vbus_state ramp_state)
+{
+ return 0;
+}
+
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
+{
+}
+
+struct tcpc_config_t tcpc_config[] = {
+ [USBC_PORT_C0] = {
+ .bus_type = EC_BUS_TYPE_I2C,
+ .i2c_info = {
+ .port = I2C_PORT_USB_C0,
+ .addr_flags = TUSB422_I2C_ADDR_FLAGS,
+ },
+ .drv = &tusb422_tcpm_drv,
+ },
+ [USBC_PORT_C1] = {
+ .bus_type = EC_BUS_TYPE_I2C,
+ .i2c_info = {
+ .port = I2C_PORT_USB_C1,
+ .addr_flags = TUSB422_I2C_ADDR_FLAGS,
+ },
+ .drv = &tusb422_tcpm_drv,
+ },
+};
+BUILD_ASSERT(ARRAY_SIZE(tcpc_config) == USBC_PORT_COUNT);
+BUILD_ASSERT(CONFIG_USB_PD_PORT_MAX_COUNT == USBC_PORT_COUNT);
+
+int board_is_sourcing_vbus(int port)
+{
+ return 0;
+}
+
+struct usb_mux usb_muxes[] = {
+ [USBC_PORT_C0] = {
+ .usb_port = USBC_PORT_C0,
+ .driver = &virtual_usb_mux_driver,
+ .hpd_update = &virtual_hpd_update,
+ },
+ [USBC_PORT_C1] = {
+ .usb_port = USBC_PORT_C1,
+ .driver = &virtual_usb_mux_driver,
+ .hpd_update = &virtual_hpd_update,
+ },
+};
+BUILD_ASSERT(ARRAY_SIZE(usb_muxes) == USBC_PORT_COUNT);
+
+void pd_power_supply_reset(int port)
+{
+}
+
+int pd_check_vconn_swap(int port)
+{
+ return 0;
+}
+
+int pd_set_power_supply_ready(int port)
+{
+ return EC_SUCCESS;
+}
+
+/* USBC PPC configuration */
+struct ppc_config_t ppc_chips[] = {
+ [USBC_PORT_C0] = {
+ .i2c_port = I2C_PORT_USB_C0,
+ .i2c_addr_flags = SN5S330_ADDR0_FLAGS,
+ .drv = &sn5s330_drv,
+ },
+ [USBC_PORT_C1] = {
+ .i2c_port = I2C_PORT_USB_C1,
+ .i2c_addr_flags = SN5S330_ADDR1_FLAGS,
+ .drv = &sn5s330_drv,
+ },
+};
+BUILD_ASSERT(ARRAY_SIZE(ppc_chips) == USBC_PORT_COUNT);
+unsigned int ppc_cnt = ARRAY_SIZE(ppc_chips);
+
+void system_hibernate(uint32_t seconds, uint32_t microseconds)
+{
+}