summaryrefslogtreecommitdiff
path: root/zephyr
diff options
context:
space:
mode:
Diffstat (limited to 'zephyr')
-rw-r--r--zephyr/program/skyrim/skyrim/project.conf3
-rw-r--r--zephyr/program/skyrim/skyrim/src/form_factor.c24
2 files changed, 27 insertions, 0 deletions
diff --git a/zephyr/program/skyrim/skyrim/project.conf b/zephyr/program/skyrim/skyrim/project.conf
index a342977018..231e83f919 100644
--- a/zephyr/program/skyrim/skyrim/project.conf
+++ b/zephyr/program/skyrim/skyrim/project.conf
@@ -22,3 +22,6 @@ CONFIG_PLATFORM_EC_BATTERY_PRESENT_GPIO=y
# EC Host Commands
CONFIG_PLATFORM_EC_HOSTCMD_AP_RESET=y
+
+# Sensors
+CONFIG_PLATFORM_EC_DYNAMIC_MOTION_SENSOR_COUNT=y
diff --git a/zephyr/program/skyrim/skyrim/src/form_factor.c b/zephyr/program/skyrim/skyrim/src/form_factor.c
index b13d905364..afeacb4c1e 100644
--- a/zephyr/program/skyrim/skyrim/src/form_factor.c
+++ b/zephyr/program/skyrim/skyrim/src/form_factor.c
@@ -6,8 +6,11 @@
#include "accelgyro.h"
#include "common.h"
#include "cros_board_info.h"
+#include "cros_cbi.h"
+#include "gpio/gpio_int.h"
#include "hooks.h"
#include "motionsense_sensors.h"
+#include "tablet_mode.h"
#include <zephyr/devicetree.h>
#include <zephyr/logging/log.h>
@@ -36,3 +39,24 @@ static void form_factor_init(void)
}
}
DECLARE_HOOK(HOOK_INIT, form_factor_init, HOOK_PRIO_POST_I2C);
+
+static void clamshell_init(void)
+{
+ int ret;
+ uint32_t val;
+
+ /* Check the form factor from CBI */
+ ret = cros_cbi_get_fw_config(FW_FORM_FACTOR, &val);
+ if (ret != 0) {
+ LOG_ERR("Cannot get FW_FORM_FACTOR");
+ return;
+ }
+
+ if (val == FW_FF_CLAMSHELL) {
+ motion_sensor_count = 0;
+ gpio_disable_dt_interrupt(
+ GPIO_INT_FROM_NODELABEL(int_accel_gyro));
+ gmr_tablet_switch_disable();
+ }
+}
+DECLARE_HOOK(HOOK_INIT, clamshell_init, HOOK_PRIO_POST_DEFAULT);