diff options
author | Jeremy Bettis <jbettis@google.com> | 2021-04-09 10:21:39 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-04-12 17:54:21 +0000 |
commit | bd2b1eb38349dcc736c5ec6763abdeb87e48aa16 (patch) | |
tree | c1c939743baaa263171c4d5b524f1e4886e5b5ba /zephyr/test/drivers/src | |
parent | f334d6f9d4116eeb4999293108abf8fe147d6f83 (diff) | |
download | chrome-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.c | 35 | ||||
-rw-r--r-- | zephyr/test/drivers/src/main.c | 20 | ||||
-rw-r--r-- | zephyr/test/drivers/src/stubs.c | 181 |
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) +{ +} |