From c22a30f8ed1c7965d66e9d54b171c974c998920a Mon Sep 17 00:00:00 2001 From: matt_wang Date: Thu, 27 Apr 2023 10:04:12 +0800 Subject: winterhold: modify motionsense cbi info for .c global params This CL optimized reading method to disables runtime polling and uses a global variable to store board ID value for switching two accelerators. To prevent the EC busy to send the I2C protocol. LOW_COVERAGE_REASON=no unit tests for skyrim yet, b/247151116 BUG=b:279728061 BRANCH=skyrim TEST=1. It pass to switch the accelerator driver by fw_config. 2. To run the verify CBI EEPROM WP status process over 14600 times got pass result. Change-Id: Ieaf304ff23a39c165d1a3eada39228061380a613 Signed-off-by: matt_wang Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4483314 Reviewed-by: Elthan Huang Reviewed-by: Robert Zieba Commit-Queue: Diana Z (cherry picked from commit 0a47a7b0d25eb496ab5525dfb8e577057de086f0) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4493863 Commit-Queue: Elthan Huang Tested-by: Elthan Huang --- zephyr/program/skyrim/winterhold/src/sensor.c | 37 ++++++++++++--------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/zephyr/program/skyrim/winterhold/src/sensor.c b/zephyr/program/skyrim/winterhold/src/sensor.c index e609d806b0..2cd9294a10 100644 --- a/zephyr/program/skyrim/winterhold/src/sensor.c +++ b/zephyr/program/skyrim/winterhold/src/sensor.c @@ -11,43 +11,38 @@ #include "hooks.h" #include "motionsense_sensors.h" +static int cbi_boardversion = -1; +static int cbi_fwconfig; + 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) + if (cbi_boardversion == 0) bmi3xx_interrupt(signal); - else if (val == 1) + else if (cbi_boardversion == 1) lis2dw12_interrupt(signal); - else if (val >= 2) { - if (fw_val == FW_BASE_BMI323) + else if (cbi_boardversion >= 2) { + if (cbi_fwconfig == FW_BASE_BMI323) bmi3xx_interrupt(signal); - else if (fw_val == FW_BASE_LIS2DW12) + else if (cbi_fwconfig == FW_BASE_LIS2DW12) lis2dw12_interrupt(signal); - } + } else + 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); + ret = cbi_get_board_version(&cbi_boardversion); + cros_cbi_get_fw_config(FW_BASE_SENSOR, &cbi_fwconfig); - if (ret == EC_SUCCESS && val < 1) { + if (ret == EC_SUCCESS && cbi_boardversion < 1) { MOTIONSENSE_ENABLE_ALTERNATE(alt_base_accel); - } else if (val >= 2) { - if (fw_val == FW_BASE_BMI323) { + } else if (cbi_boardversion >= 2) { + if (cbi_fwconfig == FW_BASE_BMI323) { MOTIONSENSE_ENABLE_ALTERNATE(alt_base_accel); ccprints("BASE ACCEL is BMI323"); - } else if (fw_val == FW_BASE_LIS2DW12) { + } else if (cbi_fwconfig == FW_BASE_LIS2DW12) { ccprints("BASE ACCEL IS LIS2DW12"); } } -- cgit v1.2.1