diff options
author | Hyungwoo Yang <hyungwoo.yang@intel.corp-partner.google.com> | 2021-01-19 21:18:36 -0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-01-22 21:43:16 +0000 |
commit | 90995b4a525442b448384e8c5e6d77f541283c4d (patch) | |
tree | 9e68cdf860d4080a258115edc447c9e488b3688c /zephyr/Kconfig.motionsense | |
parent | 90dea61948cfcb668f6d893a7d8f6aef419ef942 (diff) | |
download | chrome-ec-90995b4a525442b448384e8c5e6d77f541283c4d.tar.gz |
zephyr: add motion sense support
Add support for motion sense in zephyr. This change adds basic functions
for motion sense task to do meaningful work.
sensor_map.h included by board.h will be used to get board specific sensor
configuration.
BUG=b:173507858
BRANCH=none
TEST=make buildall -j8
build volteer on zephyr
Signed-off-by: Hyungwoo Yang <hyungwoo.yang@intel.corp-partner.google.com>
Change-Id: I906316d2e97428cf46b9a15071666c8e3b039b18
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2638909
Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
Commit-Queue: Jack Rosenthal <jrosenth@chromium.org>
Tested-by: Jack Rosenthal <jrosenth@chromium.org>
Diffstat (limited to 'zephyr/Kconfig.motionsense')
-rw-r--r-- | zephyr/Kconfig.motionsense | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/zephyr/Kconfig.motionsense b/zephyr/Kconfig.motionsense new file mode 100644 index 0000000000..b73d1b9d35 --- /dev/null +++ b/zephyr/Kconfig.motionsense @@ -0,0 +1,124 @@ +# Copyright 2021 The Chromium OS Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +menuconfig PLATFORM_EC_MOTIONSENSE + bool "Motion Sense" + select HAS_TASK_MOTIONSENSE + help + Enable motion sense task. The task collects data from available sensors + and report them to AP. Besides the task reports the sensor data to AP. + Based on the data, it also does other things like calculating lid angle + and detect tablet mode. + +config PLATFORM_EC_ACCEL_FIFO + bool "Sensor FIFO" + help + Enable this to add the sensor FIFO used by sensor device drivers to fill. + Using FIFO reduces power consumption since it reduces the number of + AP wake-ups. + +if PLATFORM_EC_ACCEL_FIFO + +config PLATFORM_EC_ACCEL_FIFO_SIZE + int "Motion Sense FIFO Size" + default 256 + help + This sets the size of the sensor FIFO, must be a power of 2. + +config PLATFORM_EC_ACCEL_FIFO_THRES + int "FIFO Threshold" + default 85 # (PLATFORM_EC_ACCEL_FIFO_SIZE / 3) + help + This sets the amount of free entries that trigger an interrupt to the AP. + +endif # PLATFORM_EC_ACCEL_FIFO + +config PLATFORM_EC_SENSOR_TIGHT_TIMESTAMPS + bool "Extra Sensor Timestamp" + help + If this is defined, motion_sense sends + sensor events to the AP in the format + +-----------+ + | Timestamp | + | Payload | + | Timestamp | + | Payload | + | ... | + +-----------+ + If this is not defined, the events will be sent in the format + +-----------+ + | Payload | + | Payload | + | Payload | + | ... | + | Timestamp | + +-----------+ + The former format enables improved filtering of sensor event + timestamps on the AP, but comes with stricter jitter requirements. + +config PLATFORM_EC_ACCEL_INTERRUPTS + bool "Accelerometer Interrupts" + help + Enable this to allow a sensor driver to send an event to motion task when + the sensor gets the data ready interrupt. On the event, motion task calls + the driver's irq_handler to collect data. + +# TODO(b/173507858) config PLATFORM_EC_MOTION_FILL_LPC_SENSE_DATA +# if PLATFORM_EC_MOTION_FILL_LPC_SENSE_DATA +#endif # PLATFORM_EC_MOTION_FILL_LPC_SENSE_DATA + +config PLATFORM_EC_ALS + bool "Ambient Light Sensor(ALS)" + default y if HAS_TASK_ALS + help + Enable this to indicate there's at least one or more ALS devices available. + If PLATFORM_EC_MOTION_FILL_LPC_SENSE_DATA is set, then motion task updates + the designated part of EC memmap with the ALS data. The updating EC memmap + can be also done by the dedicated ALS task with HAS_ALS_TASK set. + Number of ALS entries reserved in EC memmap are defined by EC_ALS_ENTRIES + in ec_commands.h. + +if PLATFORM_EC_ALS + +config PLATFORM_EC_ALS_COUNT + int "Number of ALS devices" + default 1 + help + This sets the number of ALS devices. This should be less than or equal to + EC_ALS_ENTRIES in ec_commands.h + TODO(b/173507858) move this to device tree + +endif # PLATFORM_EC_ALS + +config PLATFORM_EC_DYNAMIC_MOTION_SENSOR_COUNT + bool "Dynamic Motion Sensor Count" + help + Enable this to allow changing motion sensor count dynamically. + +config PLATFORM_EC_LID_ANGLE + bool "Lid Angle Sensor" + help + Enable this to detect lid angle with two accelerometers. The andgle + calculation requires the information about which sensor is on the lid + and which one is on the base. The calculated lid angle is used to + decide start/stop other peripherals like stop/start keyboard scanning. + # TODO(b/173507858): add more detail after .dts change + +if PLATFORM_EC_LID_ANGLE + +config PLATFORM_EC_TABLET_MODE + bool "Tablet Mode" + help + Enable this for a device which can be a tablet as well as a clamshell. + Tablet mode detection is done with current lid angle. + +config PLATFORM_EC_GMR_TABLET_MODE + bool "Giant Magnetoresistance(GMR) Tablet Mode" + help + Enable this to use GMR sensor to detect tablet mode. + It requires to set GMR_TABLET_MODE_GPIO_L to map the interrupt from + the sensor and direct its mapping to gmr_tablet_switch_isr + in common/tablet_mode.c. + +endif # PLATFORM_EC_LID_ANGLE |