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 CONFIG_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_SYSFS
194	tristate "ChromeOS EC control and information through sysfs"
195	depends on MFD_CROS_EC_DEV && SYSFS
196	default MFD_CROS_EC_DEV
197	help
198	  This option exposes some sysfs attributes to control and get
199	  information from ChromeOS EC.
200
201	  To compile this driver as a module, choose M here: the
202	  module will be called cros_ec_sysfs.
203
204config CROS_USBPD_LOGGER
205	tristate "Logging driver for USB PD charger"
206	depends on CHARGER_CROS_USBPD
207	default y
208	select RTC_LIB
209	help
210	  This option enables support for logging event data for the USB PD charger
211	  available in the Embedded Controller on ChromeOS systems.
212
213	  To compile this driver as a module, choose M here: the
214	  module will be called cros_usbpd_logger.
215
216source "drivers/platform/chrome/wilco_ec/Kconfig"
217
218endif # CHROMEOS_PLATFORMS
219