xref: /openbmc/linux/drivers/platform/chrome/Kconfig (revision 29c37341)
1# SPDX-License-Identifier: GPL-2.0-only
2#
3# Platform support for Chrome OS hardware (Chromebooks and Chromeboxes)
4#
5
6config MFD_CROS_EC
7	tristate "Platform support for Chrome hardware (transitional)"
8	select CHROME_PLATFORMS
9	select CROS_EC
10	select MFD_CROS_EC_DEV
11	depends on X86 || ARM || ARM64 || COMPILE_TEST
12	help
13	  This is a transitional Kconfig option and will be removed after
14	  everyone enables the parts individually.
15
16menuconfig CHROME_PLATFORMS
17	bool "Platform support for Chrome hardware"
18	depends on X86 || ARM || ARM64 || COMPILE_TEST
19	help
20	  Say Y here to get to see options for platform support for
21	  various Chromebooks and Chromeboxes. This option alone does
22	  not add any kernel code.
23
24	  If you say N, all options in this submenu will be skipped and disabled.
25
26if CHROME_PLATFORMS
27
28config CHROMEOS_LAPTOP
29	tristate "Chrome OS Laptop"
30	depends on I2C && DMI && X86
31	help
32	  This driver instantiates i2c and smbus devices such as
33	  light sensors and touchpads.
34
35	  If you have a supported Chromebook, choose Y or M here.
36	  The module will be called chromeos_laptop.
37
38config CHROMEOS_PSTORE
39	tristate "Chrome OS pstore support"
40	depends on X86
41	help
42	  This module instantiates the persistent storage on x86 ChromeOS
43	  devices. It can be used to store away console logs and crash
44	  information across reboots.
45
46	  The range of memory used is 0xf00000-0x1000000, traditionally
47	  the memory used to back VGA controller memory.
48
49	  If you have a supported Chromebook, choose Y or M here.
50	  The module will be called chromeos_pstore.
51
52config CHROMEOS_TBMC
53	tristate "ChromeOS Tablet Switch Controller"
54	depends on ACPI
55	depends on INPUT
56	help
57	  This option adds a driver for the tablet switch on
58	  select Chrome OS systems.
59
60	  To compile this driver as a module, choose M here: the
61	  module will be called chromeos_tbmc.
62
63config CROS_EC
64	tristate "ChromeOS Embedded Controller"
65	select CROS_EC_PROTO
66	depends on X86 || ARM || ARM64 || COMPILE_TEST
67	help
68	  If you say Y here you get support for the ChromeOS Embedded
69	  Controller (EC) providing keyboard, battery and power services.
70	  You also need to enable the driver for the bus you are using. The
71	  protocol for talking to the EC is defined by the bus driver.
72
73	  To compile this driver as a module, choose M here: the
74	  module will be called cros_ec.
75
76config CROS_EC_I2C
77	tristate "ChromeOS Embedded Controller (I2C)"
78	depends on CROS_EC && I2C
79
80	help
81	  If you say Y here, you get support for talking to the ChromeOS
82	  EC through an I2C bus. This uses a simple byte-level protocol with
83	  a checksum. Failing accesses will be retried three times to
84	  improve reliability.
85
86config CROS_EC_RPMSG
87	tristate "ChromeOS Embedded Controller (rpmsg)"
88	depends on CROS_EC && RPMSG && OF
89	help
90	  If you say Y here, you get support for talking to the ChromeOS EC
91	  through rpmsg. This uses a simple byte-level protocol with a
92	  checksum. Also since there's no addition EC-to-host interrupt, this
93	  use a byte in message to distinguish host event from host command.
94
95	  To compile this driver as a module, choose M here: the
96	  module will be called cros_ec_rpmsg.
97
98config CROS_EC_ISHTP
99	tristate "ChromeOS Embedded Controller (ISHTP)"
100	depends on CROS_EC
101	depends on INTEL_ISH_HID
102	help
103	  If you say Y here, you get support for talking to the ChromeOS EC
104	  firmware running on Intel Integrated Sensor Hub (ISH), using the
105	  ISH Transport protocol (ISH-TP). This uses a simple byte-level
106	  protocol with a checksum.
107
108	  To compile this driver as a module, choose M here: the
109	  module will be called cros_ec_ishtp.
110
111config CROS_EC_SPI
112	tristate "ChromeOS Embedded Controller (SPI)"
113	depends on CROS_EC && SPI
114
115	help
116	  If you say Y here, you get support for talking to the ChromeOS EC
117	  through a SPI bus, using a byte-level protocol. Since the EC's
118	  response time cannot be guaranteed, we support ignoring
119	  'pre-amble' bytes before the response actually starts.
120
121config CROS_EC_LPC
122	tristate "ChromeOS Embedded Controller (LPC)"
123	depends on CROS_EC && ACPI && (X86 || COMPILE_TEST)
124	help
125	  If you say Y here, you get support for talking to the ChromeOS EC
126	  over an LPC bus, including the LPC Microchip EC (MEC) variant.
127	  This uses a simple byte-level protocol with a checksum. This is
128	  used for userspace access only. The kernel typically has its own
129	  communication methods.
130
131	  To compile this driver as a module, choose M here: the
132	  module will be called cros_ec_lpcs.
133
134config CROS_EC_PROTO
135	bool
136	help
137	  ChromeOS EC communication protocol helpers.
138
139config CROS_KBD_LED_BACKLIGHT
140	tristate "Backlight LED support for Chrome OS keyboards"
141	depends on LEDS_CLASS && ACPI
142	help
143	  This option enables support for the keyboard backlight LEDs on
144	  select Chrome OS systems.
145
146	  To compile this driver as a module, choose M here: the
147	  module will be called cros_kbd_led_backlight.
148
149config CROS_EC_CHARDEV
150	tristate "ChromeOS EC miscdevice"
151	depends on MFD_CROS_EC_DEV
152	default MFD_CROS_EC_DEV
153	help
154	  This driver adds file operations support to talk with the
155	  ChromeOS EC from userspace via a character device.
156
157	  To compile this driver as a module, choose M here: the
158	  module will be called cros_ec_chardev.
159
160config CROS_EC_LIGHTBAR
161	tristate "Chromebook Pixel's lightbar support"
162	depends on MFD_CROS_EC_DEV
163	default MFD_CROS_EC_DEV
164	help
165	  This option exposes the Chromebook Pixel's lightbar to
166	  userspace.
167
168	  To compile this driver as a module, choose M here: the
169	  module will be called cros_ec_lightbar.
170
171config CROS_EC_VBC
172	tristate "ChromeOS EC vboot context support"
173	depends on MFD_CROS_EC_DEV && OF
174	default MFD_CROS_EC_DEV
175	help
176	  This option exposes the ChromeOS EC vboot context nvram to
177	  userspace.
178
179	  To compile this driver as a module, choose M here: the
180	  module will be called cros_ec_vbc.
181
182config CROS_EC_DEBUGFS
183	tristate "Export ChromeOS EC internals in DebugFS"
184	depends on MFD_CROS_EC_DEV && DEBUG_FS
185	default MFD_CROS_EC_DEV
186	help
187	  This option exposes the ChromeOS EC device internals to
188	  userspace.
189
190	  To compile this driver as a module, choose M here: the
191	  module will be called cros_ec_debugfs.
192
193config CROS_EC_SENSORHUB
194	tristate "ChromeOS EC MEMS Sensor Hub"
195	depends on MFD_CROS_EC_DEV
196	default MFD_CROS_EC_DEV
197	help
198	  Allow loading IIO sensors. This driver is loaded by MFD and will in
199	  turn query the EC and register the sensors.
200	  It also spreads the sensor data coming from the EC to the IIO sensor
201	  object.
202
203	  To compile this driver as a module, choose M here: the
204	  module will be called cros_ec_sensorhub.
205
206config CROS_EC_SYSFS
207	tristate "ChromeOS EC control and information through sysfs"
208	depends on MFD_CROS_EC_DEV && SYSFS
209	default MFD_CROS_EC_DEV
210	help
211	  This option exposes some sysfs attributes to control and get
212	  information from ChromeOS EC.
213
214	  To compile this driver as a module, choose M here: the
215	  module will be called cros_ec_sysfs.
216
217config CROS_EC_TYPEC
218	tristate "ChromeOS EC Type-C Connector Control"
219	depends on MFD_CROS_EC_DEV && TYPEC
220	depends on CROS_USBPD_NOTIFY
221	depends on USB_ROLE_SWITCH
222	default MFD_CROS_EC_DEV
223	help
224	  If you say Y here, you get support for accessing Type C connector
225	  information from the Chrome OS EC.
226
227	  To compile this driver as a module, choose M here: the module will be
228	  called cros_ec_typec.
229
230config CROS_USBPD_LOGGER
231	tristate "Logging driver for USB PD charger"
232	depends on CHARGER_CROS_USBPD
233	default y
234	select RTC_LIB
235	help
236	  This option enables support for logging event data for the USB PD charger
237	  available in the Embedded Controller on ChromeOS systems.
238
239	  To compile this driver as a module, choose M here: the
240	  module will be called cros_usbpd_logger.
241
242config CROS_USBPD_NOTIFY
243	tristate "ChromeOS Type-C power delivery event notifier"
244	depends on MFD_CROS_EC_DEV
245	default MFD_CROS_EC_DEV
246	help
247	  If you say Y here, you get support for Type-C PD event notifications
248	  from the ChromeOS EC. On ACPI platorms this driver will bind to the
249	  GOOG0003 ACPI device, and on platforms which don't have this device it
250	  will get initialized on ECs which support the feature
251	  EC_FEATURE_USB_PD.
252
253	  To compile this driver as a module, choose M here: the
254	  module will be called cros_usbpd_notify.
255
256source "drivers/platform/chrome/wilco_ec/Kconfig"
257
258endif # CHROMEOS_PLATFORMS
259