summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormatt_wang <matt_wang@compal.corp-partner.google.com>2023-04-27 10:04:12 +0800
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2023-04-29 15:18:58 +0000
commitc22a30f8ed1c7965d66e9d54b171c974c998920a (patch)
tree96aa9336a3a217ea7b91eff4c034208feed7a5b2
parente8e921b475a157332334822982436ec04c2e41e3 (diff)
downloadchrome-ec-c22a30f8ed1c7965d66e9d54b171c974c998920a.tar.gz
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 <matt_wang@compal.corp-partner.google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4483314 Reviewed-by: Elthan Huang <elthan_huang@compal.corp-partner.google.com> Reviewed-by: Robert Zieba <robertzieba@google.com> Commit-Queue: Diana Z <dzigterman@chromium.org> (cherry picked from commit 0a47a7b0d25eb496ab5525dfb8e577057de086f0) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4493863 Commit-Queue: Elthan Huang <elthan_huang@compal.corp-partner.google.com> Tested-by: Elthan Huang <elthan_huang@compal.corp-partner.google.com>
-rw-r--r--zephyr/program/skyrim/winterhold/src/sensor.c37
1 files 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");
}
}