summaryrefslogtreecommitdiff
path: root/zephyr/Kconfig.motionsense
blob: daf2bbcdf886c1ac9fcf0c28b9d69f5527c5e527 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
# 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"
    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 measured lid angle can be used for
      tablet mode detection(refer "Tablet Mode below") and enabling/disabling
      peripheral devices(refer "Lid Angle Update" below).
      # TODO(b/173507858): add more detail after .dts change

if PLATFORM_EC_LID_ANGLE

config PLATFORM_EC_LID_ANGLE_UPDATE
    bool "Lid Angle Update"
    help
      Enable this to allow using the lid angle measurement to determine if
      peripheral devices should be enabled or disabled, like key scanning,
      trackpad interrupt.

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 either by using the lid angle measurement
      or by the dedicated GMR sensor.

if PLATFORM_EC_TABLET_MODE

config PLATFORM_EC_TABLET_MODE_SWITCH
    bool "Tablet Mode Switch"
    depends on PLATFORM_EC_MKBP_INPUT_DEVICES
    help
      Enable a virtual switch to indicate when we are in tablet mode. The tablet
      mode state is sent to AP via MKBP protocol(switch event).

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_TABLET_MODE
endif # PLATFORM_EC_LID_ANGLE

config PLATFORM_EC_CONSOLE_CMD_ACCELS
    bool "Console commands: accels, accelrate, accelinit, accelinfo, etc."
    help
      Enables console commands:

        accelrange <sensor id> <data> <roundup> - Read or write accelerometer
        range
        accelres <sensor id> <data> <roundup> - Read or write accelerometer
        resolution
        accelrate <sensor id> <data> <roundup> - Read or write accelerometer
        ODR
        accelread <sensor id> [n(iteration)] - Read sensor x/y/z
        accelinit <sensor id> - Init sensor

if PLATFORM_EC_CONSOLE_CMD_ACCELS

config PLATFORM_EC_CONSOLE_CMD_ACCEL_INFO
    bool "Console Command: accelinfo"
    help
      Enable console command:

        accelinfo on/off [interval] - Print motion sensor info, lid angle
        calculations and set calculation frequency.

endif # PLATFORM_EC_CONSOLE_CMD_ACCELS

config PLATFORM_EC_ACCEL_SPOOF_MODE
	bool "Sensor spoof mode"
	help
	  Enable this to allow sensors values spoofed to any arbitrary value.
	  This is useful for testing the motion sense framework if the hardware
	  sensor or the sensor driver code is not ready.

if PLATFORM_EC_ACCEL_SPOOF_MODE

config PLATFORM_EC_CONSOLE_CMD_ACCEL_SPOOF
	bool "Console Command: accelspoof"
	help
	  Enable console command:

	    accelspoof id [on/off] [X] [Y] [Z] - Enable/Disable spoofing of
	    sensor readings.

endif # PLATFORM_EC_ACCEL_SPOOF_MODE

rsource "Kconfig.sensor_devices"