diff options
Diffstat (limited to 'zephyr/program/skyrim/winterhold/src/sensor.c')
-rw-r--r-- | zephyr/program/skyrim/winterhold/src/sensor.c | 20 |
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); |