diff options
author | Sue Chen <sue.chen@quanta.corp-partner.google.com> | 2022-07-20 17:20:35 +0800 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-07-22 09:39:40 +0000 |
commit | c3c013fb6b142607e0077080dac3856b2b6eef69 (patch) | |
tree | 63acb3c61f317d6e17e9f6e57343928b580773cd | |
parent | 1b110c88080d31a1a4b996da2906c216ebb298ee (diff) | |
download | chrome-ec-c3c013fb6b142607e0077080dac3856b2b6eef69.tar.gz |
Nissa/Craask: Fix rotation parameters for base accelgyro
Base accelgyro orientation is different after board ver2.
BUG=none
BRANCH=none
TEST=base accel raw data on both ver1 and ver2 dut are the same.
Signed-off-by: Sue Chen <sue.chen@quanta.corp-partner.google.com>
Change-Id: I0b37de560cc5da52ca193751f5fc0803ec4a0846
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3775279
Reviewed-by: Andrew McRae <amcrae@google.com>
-rw-r--r-- | zephyr/projects/nissa/CMakeLists.txt | 1 | ||||
-rw-r--r-- | zephyr/projects/nissa/craask/motionsense.dts | 6 | ||||
-rw-r--r-- | zephyr/projects/nissa/craask/src/form_factor.c | 41 |
3 files changed, 48 insertions, 0 deletions
diff --git a/zephyr/projects/nissa/CMakeLists.txt b/zephyr/projects/nissa/CMakeLists.txt index ee7ec0525e..a76f91b6d2 100644 --- a/zephyr/projects/nissa/CMakeLists.txt +++ b/zephyr/projects/nissa/CMakeLists.txt @@ -33,6 +33,7 @@ if(DEFINED CONFIG_BOARD_NEREID) endif() if(DEFINED CONFIG_BOARD_CRAASK) zephyr_library_sources( + "craask/src/form_factor.c" "craask/src/keyboard.c" "craask/src/led.c" ) diff --git a/zephyr/projects/nissa/craask/motionsense.dts b/zephyr/projects/nissa/craask/motionsense.dts index 276fc14ff2..445de5c9a9 100644 --- a/zephyr/projects/nissa/craask/motionsense.dts +++ b/zephyr/projects/nissa/craask/motionsense.dts @@ -41,6 +41,12 @@ }; base_rot_ref: base-rotation-ref { + mat33 = <1 0 0 + 0 (-1) 0 + 0 0 (-1)>; + }; + + base_rot_ver1: base-rotation-ver1 { mat33 = <(-1) 0 0 0 (-1) 0 0 0 1>; diff --git a/zephyr/projects/nissa/craask/src/form_factor.c b/zephyr/projects/nissa/craask/src/form_factor.c new file mode 100644 index 0000000000..cc0c4bd7f4 --- /dev/null +++ b/zephyr/projects/nissa/craask/src/form_factor.c @@ -0,0 +1,41 @@ +/* Copyright 2022 The ChromiumOS Authors. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include <zephyr/devicetree.h> +#include <zephyr/logging/log.h> + +#include "accelgyro.h" +#include "cros_board_info.h" +#include "hooks.h" +#include "motionsense_sensors.h" + +#include "nissa_common.h" + +LOG_MODULE_DECLARE(nissa, CONFIG_NISSA_LOG_LEVEL); + +/* + * Mainboard orientation support. + */ + +#define ALT_MAT SENSOR_ROT_STD_REF_NAME(DT_NODELABEL(base_rot_ver1)) +#define BASE_SENSOR SENSOR_ID(DT_NODELABEL(base_accel)) +#define BASE_GYRO SENSOR_ID(DT_NODELABEL(base_gyro)) + +static void form_factor_init(void) +{ + int ret; + uint32_t val; + /* + * If the board version is 1 + * use ver1 rotation matrix. + */ + ret = cbi_get_board_version(&val); + if (ret == EC_SUCCESS && val == 1) { + LOG_INF("Switching to ver1 base"); + motion_sensors[BASE_SENSOR].rot_standard_ref = &ALT_MAT; + motion_sensors[BASE_GYRO].rot_standard_ref = &ALT_MAT; + } +} +DECLARE_HOOK(HOOK_INIT, form_factor_init, HOOK_PRIO_POST_I2C); |