diff options
author | jimmy.wu <jimmy.wu@lcfc.corp-partner.google.com> | 2022-10-11 17:13:59 +0800 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-10-11 11:25:57 +0000 |
commit | 96372252d10684672ac32218f4f613ceb93cc932 (patch) | |
tree | 9a62489fd82edbdd7916432220e16c3bcff21b89 | |
parent | 8ddc30f5401fcc58c9334d92280de92949c8c328 (diff) | |
download | chrome-ec-96372252d10684672ac32218f4f613ceb93cc932.tar.gz |
Pujjo: Fw_config bit5 to divide tablet/non-tablet
FW_CONFIG bit5
0: non-tablet
1: tablet
BUG=none
BRANCH=none
TEST=set fw_config bit5=0 can disable motion sense.
Signed-off-by: jimmy.wu <jimmy.wu@lcfc.corp-partner.google.com>
Change-Id: I03416248601b23c35748282426c81b8049fe1a56
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3944305
Commit-Queue: Andrew McRae <amcrae@google.com>
Reviewed-by: Andrew McRae <amcrae@google.com>
Code-Coverage: Andrew McRae <amcrae@google.com>
-rw-r--r-- | zephyr/projects/nissa/pujjo/prj.conf | 1 | ||||
-rw-r--r-- | zephyr/projects/nissa/pujjo/src/form_factor.c | 22 |
2 files changed, 23 insertions, 0 deletions
diff --git a/zephyr/projects/nissa/pujjo/prj.conf b/zephyr/projects/nissa/pujjo/prj.conf index 691b75a5d7..12b8649c44 100644 --- a/zephyr/projects/nissa/pujjo/prj.conf +++ b/zephyr/projects/nissa/pujjo/prj.conf @@ -9,6 +9,7 @@ CONFIG_PLATFORM_EC_ACCELGYRO_LSM6DSM=y CONFIG_PLATFORM_EC_ACCEL_BMA4XX=y CONFIG_PLATFORM_EC_ACCELGYRO_BMI_COMM_I2C=y CONFIG_PLATFORM_EC_ACCELGYRO_BMI3XX=y +CONFIG_PLATFORM_EC_DYNAMIC_MOTION_SENSOR_COUNT=y # Increase PD max power from default CONFIG_PLATFORM_EC_PD_MAX_POWER_MW=65000 diff --git a/zephyr/projects/nissa/pujjo/src/form_factor.c b/zephyr/projects/nissa/pujjo/src/form_factor.c index ff3d64fe3e..3edc7f7aa3 100644 --- a/zephyr/projects/nissa/pujjo/src/form_factor.c +++ b/zephyr/projects/nissa/pujjo/src/form_factor.c @@ -11,8 +11,11 @@ #include "cros_cbi.h" #include "driver/accelgyro_bmi323.h" #include "driver/accelgyro_lsm6dsm.h" +#include "gpio/gpio_int.h" #include "hooks.h" #include "motionsense_sensors.h" +#include "motion_sense.h" +#include "tablet_mode.h" #include "nissa_common.h" @@ -30,10 +33,29 @@ void motion_interrupt(enum gpio_signal signal) static void sensor_init(void) { + int ret; + uint32_t val; /* check which base sensor is used for motion_interrupt */ use_alt_sensor = cros_cbi_ssfc_check_match( CBI_SSFC_VALUE_ID(DT_NODELABEL(base_sensor_1))); motion_sensors_check_ssfc(); + + /* Check if it's tablet or not */ + ret = cros_cbi_get_fw_config(FW_TABLET, &val); + if (ret != 0) { + LOG_ERR("Error retrieving CBI FW_CONFIG field %d", FW_TABLET); + return; + } + if (val == FW_TABLET_NOT_PRESENT) { + LOG_INF("Clamshell: disable motionsense function."); + motion_sensor_count = 0; + gmr_tablet_switch_disable(); + gpio_disable_dt_interrupt(GPIO_INT_FROM_NODELABEL(int_imu)); + gpio_pin_configure_dt(GPIO_DT_FROM_NODELABEL(gpio_imu_int_l), + GPIO_DISCONNECTED); + } else { + LOG_INF("Tablet: Enable motionsense function."); + } } DECLARE_HOOK(HOOK_INIT, sensor_init, HOOK_PRIO_POST_I2C); |