summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSue Chen <sue.chen@quanta.corp-partner.google.com>2022-07-20 17:20:35 +0800
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-07-22 09:39:40 +0000
commitc3c013fb6b142607e0077080dac3856b2b6eef69 (patch)
tree63acb3c61f317d6e17e9f6e57343928b580773cd
parent1b110c88080d31a1a4b996da2906c216ebb298ee (diff)
downloadchrome-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.txt1
-rw-r--r--zephyr/projects/nissa/craask/motionsense.dts6
-rw-r--r--zephyr/projects/nissa/craask/src/form_factor.c41
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);