summaryrefslogtreecommitdiff
path: root/zephyr/program/skyrim/winterhold/src/sensor.c
diff options
context:
space:
mode:
Diffstat (limited to 'zephyr/program/skyrim/winterhold/src/sensor.c')
-rw-r--r--zephyr/program/skyrim/winterhold/src/sensor.c20
1 files changed, 19 insertions, 1 deletions
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);