summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjohnwc_yeh <johnwc_yeh@compal.corp-partner.google.com>2023-01-05 14:52:43 +0800
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2023-01-16 02:35:43 +0000
commit9adb7a68900f2ef9e8baab46577ed039b364a24a (patch)
tree87fc9c6e68a943f141e48443aa2107553ce62cae
parentfcb72f48af1ad9513a2835e4f3e067e055d91b89 (diff)
downloadchrome-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.overlay18
-rw-r--r--zephyr/program/skyrim/winterhold/src/sensor.c20
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);