diff options
author | johnwc_yeh <johnwc_yeh@compal.corp-partner.google.com> | 2023-01-05 14:52:43 +0800 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2023-01-16 02:35:43 +0000 |
commit | 9adb7a68900f2ef9e8baab46577ed039b364a24a (patch) | |
tree | 87fc9c6e68a943f141e48443aa2107553ce62cae | |
parent | fcb72f48af1ad9513a2835e4f3e067e055d91b89 (diff) | |
download | chrome-ec-9adb7a68900f2ef9e8baab46577ed039b364a24a.tar.gz |
Winterhold: Add fw_config to support two base sensors
Use fw_config to separate LIS2DW12 and BMI323.
LOW_COVERAGE_REASON=Skyrim board tests not created yet: b/247151116
BRANCH=None
BUG=b:262321157
TEST=zmake build winterhold
Change-Id: I71d78f232867a54c46a003308590521fd687d94b
Signed-off-by: johnwc_yeh <johnwc_yeh@compal.corp-partner.google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4135921
Reviewed-by: Elthan Huang <elthan_huang@compal.corp-partner.google.com>
Reviewed-by: Robert Zieba <robertzieba@google.com>
Code-Coverage: Zoss <zoss-cl-coverage@prod.google.com>
-rw-r--r-- | zephyr/program/skyrim/winterhold/project.overlay | 18 | ||||
-rw-r--r-- | zephyr/program/skyrim/winterhold/src/sensor.c | 20 |
2 files changed, 37 insertions, 1 deletions
diff --git a/zephyr/program/skyrim/winterhold/project.overlay b/zephyr/program/skyrim/winterhold/project.overlay index 9a4733a790..07958c4660 100644 --- a/zephyr/program/skyrim/winterhold/project.overlay +++ b/zephyr/program/skyrim/winterhold/project.overlay @@ -119,6 +119,24 @@ value = <1>; }; }; + + base-sensor { + enum-name = "FW_BASE_SENSOR"; + start = <3>; + size = <1>; + + bmi323 { + compatible = "cros-ec,cbi-fw-config-value"; + enum-name = "FW_BASE_BMI323"; + value = <0>; + default; + }; + lis2dw12 { + compatible = "cros-ec,cbi-fw-config-value"; + enum-name = "FW_BASE_LIS2DW12"; + value = <1>; + }; + }; }; /* Rotation matrices for motion sensors. */ diff --git a/zephyr/program/skyrim/winterhold/src/sensor.c b/zephyr/program/skyrim/winterhold/src/sensor.c index 52cd201705..a0d89e56ce 100644 --- a/zephyr/program/skyrim/winterhold/src/sensor.c +++ b/zephyr/program/skyrim/winterhold/src/sensor.c @@ -5,6 +5,7 @@ #include "common.h" #include "cros_board_info.h" +#include "cros_cbi.h" #include "driver/accel_lis2dw12.h" #include "driver/accelgyro_bmi3xx.h" #include "hooks.h" @@ -14,24 +15,41 @@ void base_accel_interrupt(enum gpio_signal signal) { int ret; uint32_t val; + uint32_t fw_val; ret = cbi_get_board_version(&val); + cros_cbi_get_fw_config(FW_BASE_SENSOR, &fw_val); if (ret == EC_SUCCESS && val < 1) bmi3xx_interrupt(signal); - else + else if (val == 1) lis2dw12_interrupt(signal); + else if (val == 2) { + if (fw_val == FW_BASE_BMI323) + bmi3xx_interrupt(signal); + else if (fw_val == FW_BASE_LIS2DW12) + lis2dw12_interrupt(signal); + } } static void motionsense_init(void) { int ret; uint32_t val; + uint32_t fw_val; ret = cbi_get_board_version(&val); + cros_cbi_get_fw_config(FW_BASE_SENSOR, &fw_val); if (ret == EC_SUCCESS && val < 1) { MOTIONSENSE_ENABLE_ALTERNATE(alt_base_accel); + } else if (val == 2) { + if (fw_val == FW_BASE_BMI323) { + MOTIONSENSE_ENABLE_ALTERNATE(alt_base_accel); + ccprints("BASE ACCEL is BMI323"); + } else if (fw_val == FW_BASE_LIS2DW12) { + ccprints("BASE ACCEL IS LIS2DW12"); + } } } DECLARE_HOOK(HOOK_INIT, motionsense_init, HOOK_PRIO_DEFAULT); |