diff options
Diffstat (limited to 'zephyr/test/krabby')
-rw-r--r-- | zephyr/test/krabby/CMakeLists.txt | 14 | ||||
-rw-r--r-- | zephyr/test/krabby/README.md | 3 | ||||
-rw-r--r-- | zephyr/test/krabby/common.dts | 70 | ||||
-rw-r--r-- | zephyr/test/krabby/pinctrl.dts | 7 | ||||
-rw-r--r-- | zephyr/test/krabby/prj.conf | 36 | ||||
-rw-r--r-- | zephyr/test/krabby/src/charger_workaround.c | 98 | ||||
-rw-r--r-- | zephyr/test/krabby/src/stubs.c | 29 | ||||
-rw-r--r-- | zephyr/test/krabby/testcase.yaml | 9 |
8 files changed, 266 insertions, 0 deletions
diff --git a/zephyr/test/krabby/CMakeLists.txt b/zephyr/test/krabby/CMakeLists.txt new file mode 100644 index 0000000000..eba91a7be4 --- /dev/null +++ b/zephyr/test/krabby/CMakeLists.txt @@ -0,0 +1,14 @@ +# Copyright 2022 The ChromiumOS Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +cmake_minimum_required(VERSION 3.13.1) +find_package(Zephyr REQUIRED HINTS "${ZEPHYR_BASE}") +project(krabby) + +zephyr_include_directories("${PLATFORM_EC}/zephyr/projects/corsola/include") + +target_sources(app PRIVATE + src/charger_workaround.c + src/stubs.c + ${PLATFORM_EC}/zephyr/projects/corsola/src/krabby/charger_workaround.c) diff --git a/zephyr/test/krabby/README.md b/zephyr/test/krabby/README.md new file mode 100644 index 0000000000..8262d85fcc --- /dev/null +++ b/zephyr/test/krabby/README.md @@ -0,0 +1,3 @@ +Tests for board specific code under `zephyr/projects/corsola/src/krabby`. + +Run with ./twister -T zephyr/test/krabby diff --git a/zephyr/test/krabby/common.dts b/zephyr/test/krabby/common.dts new file mode 100644 index 0000000000..d9f1a4f463 --- /dev/null +++ b/zephyr/test/krabby/common.dts @@ -0,0 +1,70 @@ +/* Copyright 2022 The ChromiumOS Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include <it8xxx2_emul.dts> + +/ { + pinctrl: pinctrl { + compatible = "ite,it8xxx2-pinctrl"; + status = "disabled"; + }; + + named-i2c-ports { + compatible = "named-i2c-ports"; + + i2c_charger: charger { + i2c-port = <&i2c_ctrl0>; + enum-names = "I2C_PORT_CHARGER", + "I2C_PORT_BATTERY"; + }; + }; + + usbc { + #address-cells = <1>; + #size-cells = <0>; + + port0@0 { + compatible = "named-usbc-port"; + status = "okay"; + reg = <0>; + chg = <&charger>; + tcpc = <&tcpci_emul>; + }; + }; + + batteries { + default_battery: lgc_ac17a8m { + compatible = "lgc,ac17a8m", "battery-smart"; + }; + }; +}; + +&i2c_ctrl0 { + status="okay"; + + charger: rt9490@53 { + compatible = "zephyr,rt9490-emul"; + status = "okay"; + reg = <0x53>; + }; + + battery: sb@b { + compatible = "zephyr,smart-battery"; + reg = <0xb>; + cycle-count = <99>; + version = "BATTERY_SPEC_VER_1_1_WITH_PEC"; + /* Real battery voltages are multiples of 4.4V. */ + desired-charg-volt = <5000>; + desired-charg-cur = <1000>; + mf-name = "LGC"; + dev-name = "AC17A8M"; + }; + + tcpci_emul: tcpci_emul@82 { + compatible = "cros,tcpci-generic-emul"; + status = "okay"; + reg = <0x82>; + }; +}; diff --git a/zephyr/test/krabby/pinctrl.dts b/zephyr/test/krabby/pinctrl.dts new file mode 100644 index 0000000000..9d01591238 --- /dev/null +++ b/zephyr/test/krabby/pinctrl.dts @@ -0,0 +1,7 @@ +/* Copyright 2022 The ChromiumOS Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +/* remove pinctrl to avoid pull in too many unwanted dependency */ +/delete-node/ &pinctrl; diff --git a/zephyr/test/krabby/prj.conf b/zephyr/test/krabby/prj.conf new file mode 100644 index 0000000000..25bc89c33a --- /dev/null +++ b/zephyr/test/krabby/prj.conf @@ -0,0 +1,36 @@ +# Copyright 2022 The ChromiumOS Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +CONFIG_ZTEST=y +CONFIG_ZTEST_ASSERT_VERBOSE=1 +CONFIG_ZTEST_NEW_API=y + +CONFIG_ASSERT=y +CONFIG_CROS_EC=y +CONFIG_EMUL=y +CONFIG_EMUL_RT9490=y +CONFIG_EMUL_SMART_BATTERY=y +CONFIG_EMUL_TCPCI=y +CONFIG_I2C=y +CONFIG_I2C_EMUL=y +CONFIG_SHIMMED_TASKS=y + +CONFIG_PLATFORM_EC=y +CONFIG_PLATFORM_EC_BACKLIGHT_LID=n +CONFIG_PLATFORM_EC_BATTERY=y +CONFIG_PLATFORM_EC_BATTERY_FUEL_GAUGE=y +CONFIG_PLATFORM_EC_BATTERY_PRESENT_GPIO=y +CONFIG_PLATFORM_EC_CHARGER=y +CONFIG_PLATFORM_EC_CHARGER_RT9490=y +CONFIG_PLATFORM_EC_CHARGER_SENSE_RESISTOR=10 +CONFIG_PLATFORM_EC_CHARGER_SENSE_RESISTOR_AC=20 +CONFIG_PLATFORM_EC_CHARGE_MANAGER=n +CONFIG_PLATFORM_EC_HOOKS=y +CONFIG_PLATFORM_EC_HOSTCMD=y +CONFIG_PLATFORM_EC_LID_SWITCH=n +CONFIG_PLATFORM_EC_SWITCH=n +CONFIG_PLATFORM_EC_USBC=n +CONFIG_PLATFORM_EC_USB_CHARGER=n +CONFIG_PLATFORM_EC_USB_POWER_DELIVERY=n +CONFIG_PLATFORM_EC_VBOOT_HASH=n diff --git a/zephyr/test/krabby/src/charger_workaround.c b/zephyr/test/krabby/src/charger_workaround.c new file mode 100644 index 0000000000..97aa4328c8 --- /dev/null +++ b/zephyr/test/krabby/src/charger_workaround.c @@ -0,0 +1,98 @@ +/* Copyright 2022 The ChromiumOS Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include <zephyr/devicetree.h> +#include <zephyr/drivers/emul.h> +#include <zephyr/fff.h> +#include <zephyr/ztest.h> + +#include "charger.h" +#include "driver/charger/rt9490.h" +#include "emul/emul_rt9490.h" +#include "hooks.h" +#include "i2c.h" +#include "system.h" + +DEFINE_FFF_GLOBALS; + +FAKE_VALUE_FUNC(int, board_get_version); + +const struct emul *emul = EMUL_DT_GET(DT_NODELABEL(charger)); + +static bool ibus_adc_workaround_called(void) +{ + return rt9490_emul_peek_reg(emul, 0x52) == 0xC4; +} + +static bool i2c_speed_workaround_called(void) +{ + return rt9490_emul_peek_reg(emul, 0x71) == 0x22; +} + +static bool eoc_deglitch_workaround_called(void) +{ + return !(rt9490_emul_peek_reg(emul, RT9490_REG_ADD_CTRL0) & + RT9490_TD_EOC); +} + +static bool disable_safety_timer_called(void) +{ + return rt9490_emul_peek_reg(emul, RT9490_REG_SAFETY_TMR_CTRL) == + (RT9490_EN_TRICHG_TMR | RT9490_EN_PRECHG_TMR | + RT9490_EN_FASTCHG_TMR); +} + +ZTEST(charger_workaround, test_board_version_0) +{ + board_get_version_fake.return_val = 0; + + hook_notify(HOOK_INIT); + zassert_true(ibus_adc_workaround_called(), NULL); + zassert_true(i2c_speed_workaround_called(), NULL); + zassert_false(eoc_deglitch_workaround_called(), NULL); + zassert_true(disable_safety_timer_called(), NULL); +} + +ZTEST(charger_workaround, test_board_version_1) +{ + board_get_version_fake.return_val = 1; + + hook_notify(HOOK_INIT); + zassert_false(ibus_adc_workaround_called(), NULL); + zassert_true(i2c_speed_workaround_called(), NULL); + zassert_true(eoc_deglitch_workaround_called(), NULL); + zassert_true(disable_safety_timer_called(), NULL); +} + +ZTEST(charger_workaround, test_board_version_2) +{ + board_get_version_fake.return_val = 2; + + hook_notify(HOOK_INIT); + zassert_false(ibus_adc_workaround_called(), NULL); + zassert_true(i2c_speed_workaround_called(), NULL); + zassert_false(eoc_deglitch_workaround_called(), NULL); + zassert_false(disable_safety_timer_called(), NULL); +} + +ZTEST(charger_workaround, test_board_version_3) +{ + board_get_version_fake.return_val = 3; + + hook_notify(HOOK_INIT); + zassert_false(ibus_adc_workaround_called(), NULL); + zassert_false(i2c_speed_workaround_called(), NULL); + zassert_false(eoc_deglitch_workaround_called(), NULL); + zassert_false(disable_safety_timer_called(), NULL); +} + +static void charge_workaround_before(void *fixture) +{ + RESET_FAKE(board_get_version); + rt9490_emul_reset_regs(emul); +} + +ZTEST_SUITE(charger_workaround, NULL, NULL, charge_workaround_before, NULL, + NULL); diff --git a/zephyr/test/krabby/src/stubs.c b/zephyr/test/krabby/src/stubs.c new file mode 100644 index 0000000000..b6cc0c5368 --- /dev/null +++ b/zephyr/test/krabby/src/stubs.c @@ -0,0 +1,29 @@ +/* Copyright 2022 The ChromiumOS Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "charge_ramp.h" +#include "charge_state.h" + +int board_set_active_charge_port(int port) +{ + 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) +{ +} + +const struct batt_params *charger_current_battery_params(void) +{ + static const struct batt_params params = {}; + + return ¶ms; +} diff --git a/zephyr/test/krabby/testcase.yaml b/zephyr/test/krabby/testcase.yaml new file mode 100644 index 0000000000..c8cf0e070b --- /dev/null +++ b/zephyr/test/krabby/testcase.yaml @@ -0,0 +1,9 @@ +# Copyright 2022 The ChromiumOS Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +common: + platform_allow: native_posix +tests: + krabby.default: + extra_args: DTC_OVERLAY_FILE="common.dts;../projects/corsola/interrupts_krabby.dts;../projects/corsola/gpio_krabby.dts;pinctrl.dts" |