hc
2024-05-16 8d2a02b24d66aa359e83eebc1ed3c0f85367a1cb
kernel/drivers/platform/chrome/Kconfig
....@@ -1,3 +1,4 @@
1
+# SPDX-License-Identifier: GPL-2.0-only
12 #
23 # Platform support for Chrome OS hardware (Chromebooks and Chromeboxes)
34 #
....@@ -5,7 +6,7 @@
56 menuconfig CHROME_PLATFORMS
67 bool "Platform support for Chrome hardware"
78 depends on X86 || ARM || ARM64 || COMPILE_TEST
8
- ---help---
9
+ help
910 Say Y here to get to see options for platform support for
1011 various Chromebooks and Chromeboxes. This option alone does
1112 not add any kernel code.
....@@ -17,7 +18,7 @@
1718 config CHROMEOS_LAPTOP
1819 tristate "Chrome OS Laptop"
1920 depends on I2C && DMI && X86
20
- ---help---
21
+ help
2122 This driver instantiates i2c and smbus devices such as
2223 light sensors and touchpads.
2324
....@@ -27,7 +28,7 @@
2728 config CHROMEOS_PSTORE
2829 tristate "Chrome OS pstore support"
2930 depends on X86
30
- ---help---
31
+ help
3132 This module instantiates the persistent storage on x86 ChromeOS
3233 devices. It can be used to store away console logs and crash
3334 information across reboots.
....@@ -49,12 +50,22 @@
4950 To compile this driver as a module, choose M here: the
5051 module will be called chromeos_tbmc.
5152
52
-config CROS_EC_CTL
53
- tristate
53
+config CROS_EC
54
+ tristate "ChromeOS Embedded Controller"
55
+ select CROS_EC_PROTO
56
+ depends on X86 || ARM || ARM64 || COMPILE_TEST
57
+ help
58
+ If you say Y here you get support for the ChromeOS Embedded
59
+ Controller (EC) providing keyboard, battery and power services.
60
+ You also need to enable the driver for the bus you are using. The
61
+ protocol for talking to the EC is defined by the bus driver.
62
+
63
+ To compile this driver as a module, choose M here: the
64
+ module will be called cros_ec.
5465
5566 config CROS_EC_I2C
5667 tristate "ChromeOS Embedded Controller (I2C)"
57
- depends on MFD_CROS_EC && I2C
68
+ depends on CROS_EC && I2C
5869
5970 help
6071 If you say Y here, you get support for talking to the ChromeOS
....@@ -62,44 +73,58 @@
6273 a checksum. Failing accesses will be retried three times to
6374 improve reliability.
6475
76
+config CROS_EC_RPMSG
77
+ tristate "ChromeOS Embedded Controller (rpmsg)"
78
+ depends on CROS_EC && RPMSG && OF
79
+ help
80
+ If you say Y here, you get support for talking to the ChromeOS EC
81
+ through rpmsg. This uses a simple byte-level protocol with a
82
+ checksum. Also since there's no addition EC-to-host interrupt, this
83
+ use a byte in message to distinguish host event from host command.
84
+
85
+ To compile this driver as a module, choose M here: the
86
+ module will be called cros_ec_rpmsg.
87
+
88
+config CROS_EC_ISHTP
89
+ tristate "ChromeOS Embedded Controller (ISHTP)"
90
+ depends on CROS_EC
91
+ depends on INTEL_ISH_HID
92
+ help
93
+ If you say Y here, you get support for talking to the ChromeOS EC
94
+ firmware running on Intel Integrated Sensor Hub (ISH), using the
95
+ ISH Transport protocol (ISH-TP). This uses a simple byte-level
96
+ protocol with a checksum.
97
+
98
+ To compile this driver as a module, choose M here: the
99
+ module will be called cros_ec_ishtp.
100
+
65101 config CROS_EC_SPI
66102 tristate "ChromeOS Embedded Controller (SPI)"
67
- depends on MFD_CROS_EC && SPI
103
+ depends on CROS_EC && SPI
68104
69
- ---help---
105
+ help
70106 If you say Y here, you get support for talking to the ChromeOS EC
71107 through a SPI bus, using a byte-level protocol. Since the EC's
72108 response time cannot be guaranteed, we support ignoring
73109 'pre-amble' bytes before the response actually starts.
74110
75111 config CROS_EC_LPC
76
- tristate "ChromeOS Embedded Controller (LPC)"
77
- depends on MFD_CROS_EC && ACPI && (X86 || COMPILE_TEST)
78
- help
79
- If you say Y here, you get support for talking to the ChromeOS EC
80
- over an LPC bus. This uses a simple byte-level protocol with a
81
- checksum. This is used for userspace access only. The kernel
82
- typically has its own communication methods.
83
-
84
- To compile this driver as a module, choose M here: the
85
- module will be called cros_ec_lpc.
86
-
87
-config CROS_EC_LPC_MEC
88
- bool "ChromeOS Embedded Controller LPC Microchip EC (MEC) variant"
89
- depends on CROS_EC_LPC
90
- default n
112
+ tristate "ChromeOS Embedded Controller (LPC)"
113
+ depends on CROS_EC && ACPI && (X86 || COMPILE_TEST)
91114 help
92
- If you say Y here, a variant LPC protocol for the Microchip EC
93
- will be used. Note that this variant is not backward compatible
94
- with non-Microchip ECs.
115
+ If you say Y here, you get support for talking to the ChromeOS EC
116
+ over an LPC bus, including the LPC Microchip EC (MEC) variant.
117
+ This uses a simple byte-level protocol with a checksum. This is
118
+ used for userspace access only. The kernel typically has its own
119
+ communication methods.
95120
96
- If you have a ChromeOS Embedded Controller Microchip EC variant
97
- choose Y here.
121
+ To compile this driver as a module, choose M here: the
122
+ module will be called cros_ec_lpcs.
98123
99124 config CROS_EC_PROTO
100
- bool
101
- help
102
- ChromeOS EC communication protocol helpers.
125
+ bool
126
+ help
127
+ ChromeOS EC communication protocol helpers.
103128
104129 config CROS_KBD_LED_BACKLIGHT
105130 tristate "Backlight LED support for Chrome OS keyboards"
....@@ -111,4 +136,113 @@
111136 To compile this driver as a module, choose M here: the
112137 module will be called cros_kbd_led_backlight.
113138
139
+config CROS_EC_CHARDEV
140
+ tristate "ChromeOS EC miscdevice"
141
+ depends on MFD_CROS_EC_DEV
142
+ default MFD_CROS_EC_DEV
143
+ help
144
+ This driver adds file operations support to talk with the
145
+ ChromeOS EC from userspace via a character device.
146
+
147
+ To compile this driver as a module, choose M here: the
148
+ module will be called cros_ec_chardev.
149
+
150
+config CROS_EC_LIGHTBAR
151
+ tristate "Chromebook Pixel's lightbar support"
152
+ depends on MFD_CROS_EC_DEV
153
+ default MFD_CROS_EC_DEV
154
+ help
155
+ This option exposes the Chromebook Pixel's lightbar to
156
+ userspace.
157
+
158
+ To compile this driver as a module, choose M here: the
159
+ module will be called cros_ec_lightbar.
160
+
161
+config CROS_EC_VBC
162
+ tristate "ChromeOS EC vboot context support"
163
+ depends on MFD_CROS_EC_DEV && OF
164
+ default MFD_CROS_EC_DEV
165
+ help
166
+ This option exposes the ChromeOS EC vboot context nvram to
167
+ userspace.
168
+
169
+ To compile this driver as a module, choose M here: the
170
+ module will be called cros_ec_vbc.
171
+
172
+config CROS_EC_DEBUGFS
173
+ tristate "Export ChromeOS EC internals in DebugFS"
174
+ depends on MFD_CROS_EC_DEV && DEBUG_FS
175
+ default MFD_CROS_EC_DEV
176
+ help
177
+ This option exposes the ChromeOS EC device internals to
178
+ userspace.
179
+
180
+ To compile this driver as a module, choose M here: the
181
+ module will be called cros_ec_debugfs.
182
+
183
+config CROS_EC_SENSORHUB
184
+ tristate "ChromeOS EC MEMS Sensor Hub"
185
+ depends on MFD_CROS_EC_DEV
186
+ default MFD_CROS_EC_DEV
187
+ help
188
+ Allow loading IIO sensors. This driver is loaded by MFD and will in
189
+ turn query the EC and register the sensors.
190
+ It also spreads the sensor data coming from the EC to the IIO sensor
191
+ object.
192
+
193
+ To compile this driver as a module, choose M here: the
194
+ module will be called cros_ec_sensorhub.
195
+
196
+config CROS_EC_SYSFS
197
+ tristate "ChromeOS EC control and information through sysfs"
198
+ depends on MFD_CROS_EC_DEV && SYSFS
199
+ default MFD_CROS_EC_DEV
200
+ help
201
+ This option exposes some sysfs attributes to control and get
202
+ information from ChromeOS EC.
203
+
204
+ To compile this driver as a module, choose M here: the
205
+ module will be called cros_ec_sysfs.
206
+
207
+config CROS_EC_TYPEC
208
+ tristate "ChromeOS EC Type-C Connector Control"
209
+ depends on MFD_CROS_EC_DEV && TYPEC
210
+ depends on CROS_USBPD_NOTIFY
211
+ depends on USB_ROLE_SWITCH
212
+ default MFD_CROS_EC_DEV
213
+ help
214
+ If you say Y here, you get support for accessing Type C connector
215
+ information from the Chrome OS EC.
216
+
217
+ To compile this driver as a module, choose M here: the module will be
218
+ called cros_ec_typec.
219
+
220
+config CROS_USBPD_LOGGER
221
+ tristate "Logging driver for USB PD charger"
222
+ depends on CHARGER_CROS_USBPD
223
+ default y
224
+ select RTC_LIB
225
+ help
226
+ This option enables support for logging event data for the USB PD charger
227
+ available in the Embedded Controller on ChromeOS systems.
228
+
229
+ To compile this driver as a module, choose M here: the
230
+ module will be called cros_usbpd_logger.
231
+
232
+config CROS_USBPD_NOTIFY
233
+ tristate "ChromeOS Type-C power delivery event notifier"
234
+ depends on MFD_CROS_EC_DEV
235
+ default MFD_CROS_EC_DEV
236
+ help
237
+ If you say Y here, you get support for Type-C PD event notifications
238
+ from the ChromeOS EC. On ACPI platorms this driver will bind to the
239
+ GOOG0003 ACPI device, and on platforms which don't have this device it
240
+ will get initialized on ECs which support the feature
241
+ EC_FEATURE_USB_PD.
242
+
243
+ To compile this driver as a module, choose M here: the
244
+ module will be called cros_usbpd_notify.
245
+
246
+source "drivers/platform/chrome/wilco_ec/Kconfig"
247
+
114248 endif # CHROMEOS_PLATFORMS