18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ci#
38c2ecf20Sopenharmony_ci# Platform support for Chrome OS hardware (Chromebooks and Chromeboxes)
48c2ecf20Sopenharmony_ci#
58c2ecf20Sopenharmony_ci
68c2ecf20Sopenharmony_cimenuconfig CHROME_PLATFORMS
78c2ecf20Sopenharmony_ci	bool "Platform support for Chrome hardware"
88c2ecf20Sopenharmony_ci	depends on X86 || ARM || ARM64 || COMPILE_TEST
98c2ecf20Sopenharmony_ci	help
108c2ecf20Sopenharmony_ci	  Say Y here to get to see options for platform support for
118c2ecf20Sopenharmony_ci	  various Chromebooks and Chromeboxes. This option alone does
128c2ecf20Sopenharmony_ci	  not add any kernel code.
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci	  If you say N, all options in this submenu will be skipped and disabled.
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ciif CHROME_PLATFORMS
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ciconfig CHROMEOS_LAPTOP
198c2ecf20Sopenharmony_ci	tristate "Chrome OS Laptop"
208c2ecf20Sopenharmony_ci	depends on I2C && DMI && X86
218c2ecf20Sopenharmony_ci	help
228c2ecf20Sopenharmony_ci	  This driver instantiates i2c and smbus devices such as
238c2ecf20Sopenharmony_ci	  light sensors and touchpads.
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ci	  If you have a supported Chromebook, choose Y or M here.
268c2ecf20Sopenharmony_ci	  The module will be called chromeos_laptop.
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ciconfig CHROMEOS_PSTORE
298c2ecf20Sopenharmony_ci	tristate "Chrome OS pstore support"
308c2ecf20Sopenharmony_ci	depends on X86
318c2ecf20Sopenharmony_ci	help
328c2ecf20Sopenharmony_ci	  This module instantiates the persistent storage on x86 ChromeOS
338c2ecf20Sopenharmony_ci	  devices. It can be used to store away console logs and crash
348c2ecf20Sopenharmony_ci	  information across reboots.
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci	  The range of memory used is 0xf00000-0x1000000, traditionally
378c2ecf20Sopenharmony_ci	  the memory used to back VGA controller memory.
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_ci	  If you have a supported Chromebook, choose Y or M here.
408c2ecf20Sopenharmony_ci	  The module will be called chromeos_pstore.
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ciconfig CHROMEOS_TBMC
438c2ecf20Sopenharmony_ci	tristate "ChromeOS Tablet Switch Controller"
448c2ecf20Sopenharmony_ci	depends on ACPI
458c2ecf20Sopenharmony_ci	depends on INPUT
468c2ecf20Sopenharmony_ci	help
478c2ecf20Sopenharmony_ci	  This option adds a driver for the tablet switch on
488c2ecf20Sopenharmony_ci	  select Chrome OS systems.
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the
518c2ecf20Sopenharmony_ci	  module will be called chromeos_tbmc.
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_ciconfig CROS_EC
548c2ecf20Sopenharmony_ci	tristate "ChromeOS Embedded Controller"
558c2ecf20Sopenharmony_ci	select CROS_EC_PROTO
568c2ecf20Sopenharmony_ci	depends on X86 || ARM || ARM64 || COMPILE_TEST
578c2ecf20Sopenharmony_ci	help
588c2ecf20Sopenharmony_ci	  If you say Y here you get support for the ChromeOS Embedded
598c2ecf20Sopenharmony_ci	  Controller (EC) providing keyboard, battery and power services.
608c2ecf20Sopenharmony_ci	  You also need to enable the driver for the bus you are using. The
618c2ecf20Sopenharmony_ci	  protocol for talking to the EC is defined by the bus driver.
628c2ecf20Sopenharmony_ci
638c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the
648c2ecf20Sopenharmony_ci	  module will be called cros_ec.
658c2ecf20Sopenharmony_ci
668c2ecf20Sopenharmony_ciconfig CROS_EC_I2C
678c2ecf20Sopenharmony_ci	tristate "ChromeOS Embedded Controller (I2C)"
688c2ecf20Sopenharmony_ci	depends on CROS_EC && I2C
698c2ecf20Sopenharmony_ci
708c2ecf20Sopenharmony_ci	help
718c2ecf20Sopenharmony_ci	  If you say Y here, you get support for talking to the ChromeOS
728c2ecf20Sopenharmony_ci	  EC through an I2C bus. This uses a simple byte-level protocol with
738c2ecf20Sopenharmony_ci	  a checksum. Failing accesses will be retried three times to
748c2ecf20Sopenharmony_ci	  improve reliability.
758c2ecf20Sopenharmony_ci
768c2ecf20Sopenharmony_ciconfig CROS_EC_RPMSG
778c2ecf20Sopenharmony_ci	tristate "ChromeOS Embedded Controller (rpmsg)"
788c2ecf20Sopenharmony_ci	depends on CROS_EC && RPMSG && OF
798c2ecf20Sopenharmony_ci	help
808c2ecf20Sopenharmony_ci	  If you say Y here, you get support for talking to the ChromeOS EC
818c2ecf20Sopenharmony_ci	  through rpmsg. This uses a simple byte-level protocol with a
828c2ecf20Sopenharmony_ci	  checksum. Also since there's no addition EC-to-host interrupt, this
838c2ecf20Sopenharmony_ci	  use a byte in message to distinguish host event from host command.
848c2ecf20Sopenharmony_ci
858c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the
868c2ecf20Sopenharmony_ci	  module will be called cros_ec_rpmsg.
878c2ecf20Sopenharmony_ci
888c2ecf20Sopenharmony_ciconfig CROS_EC_ISHTP
898c2ecf20Sopenharmony_ci	tristate "ChromeOS Embedded Controller (ISHTP)"
908c2ecf20Sopenharmony_ci	depends on CROS_EC
918c2ecf20Sopenharmony_ci	depends on INTEL_ISH_HID
928c2ecf20Sopenharmony_ci	help
938c2ecf20Sopenharmony_ci	  If you say Y here, you get support for talking to the ChromeOS EC
948c2ecf20Sopenharmony_ci	  firmware running on Intel Integrated Sensor Hub (ISH), using the
958c2ecf20Sopenharmony_ci	  ISH Transport protocol (ISH-TP). This uses a simple byte-level
968c2ecf20Sopenharmony_ci	  protocol with a checksum.
978c2ecf20Sopenharmony_ci
988c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the
998c2ecf20Sopenharmony_ci	  module will be called cros_ec_ishtp.
1008c2ecf20Sopenharmony_ci
1018c2ecf20Sopenharmony_ciconfig CROS_EC_SPI
1028c2ecf20Sopenharmony_ci	tristate "ChromeOS Embedded Controller (SPI)"
1038c2ecf20Sopenharmony_ci	depends on CROS_EC && SPI
1048c2ecf20Sopenharmony_ci
1058c2ecf20Sopenharmony_ci	help
1068c2ecf20Sopenharmony_ci	  If you say Y here, you get support for talking to the ChromeOS EC
1078c2ecf20Sopenharmony_ci	  through a SPI bus, using a byte-level protocol. Since the EC's
1088c2ecf20Sopenharmony_ci	  response time cannot be guaranteed, we support ignoring
1098c2ecf20Sopenharmony_ci	  'pre-amble' bytes before the response actually starts.
1108c2ecf20Sopenharmony_ci
1118c2ecf20Sopenharmony_ciconfig CROS_EC_LPC
1128c2ecf20Sopenharmony_ci	tristate "ChromeOS Embedded Controller (LPC)"
1138c2ecf20Sopenharmony_ci	depends on CROS_EC && ACPI && (X86 || COMPILE_TEST)
1148c2ecf20Sopenharmony_ci	help
1158c2ecf20Sopenharmony_ci	  If you say Y here, you get support for talking to the ChromeOS EC
1168c2ecf20Sopenharmony_ci	  over an LPC bus, including the LPC Microchip EC (MEC) variant.
1178c2ecf20Sopenharmony_ci	  This uses a simple byte-level protocol with a checksum. This is
1188c2ecf20Sopenharmony_ci	  used for userspace access only. The kernel typically has its own
1198c2ecf20Sopenharmony_ci	  communication methods.
1208c2ecf20Sopenharmony_ci
1218c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the
1228c2ecf20Sopenharmony_ci	  module will be called cros_ec_lpcs.
1238c2ecf20Sopenharmony_ci
1248c2ecf20Sopenharmony_ciconfig CROS_EC_PROTO
1258c2ecf20Sopenharmony_ci	bool
1268c2ecf20Sopenharmony_ci	help
1278c2ecf20Sopenharmony_ci	  ChromeOS EC communication protocol helpers.
1288c2ecf20Sopenharmony_ci
1298c2ecf20Sopenharmony_ciconfig CROS_KBD_LED_BACKLIGHT
1308c2ecf20Sopenharmony_ci	tristate "Backlight LED support for Chrome OS keyboards"
1318c2ecf20Sopenharmony_ci	depends on LEDS_CLASS && ACPI
1328c2ecf20Sopenharmony_ci	help
1338c2ecf20Sopenharmony_ci	  This option enables support for the keyboard backlight LEDs on
1348c2ecf20Sopenharmony_ci	  select Chrome OS systems.
1358c2ecf20Sopenharmony_ci
1368c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the
1378c2ecf20Sopenharmony_ci	  module will be called cros_kbd_led_backlight.
1388c2ecf20Sopenharmony_ci
1398c2ecf20Sopenharmony_ciconfig CROS_EC_CHARDEV
1408c2ecf20Sopenharmony_ci	tristate "ChromeOS EC miscdevice"
1418c2ecf20Sopenharmony_ci	depends on MFD_CROS_EC_DEV
1428c2ecf20Sopenharmony_ci	default MFD_CROS_EC_DEV
1438c2ecf20Sopenharmony_ci	help
1448c2ecf20Sopenharmony_ci	  This driver adds file operations support to talk with the
1458c2ecf20Sopenharmony_ci	  ChromeOS EC from userspace via a character device.
1468c2ecf20Sopenharmony_ci
1478c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the
1488c2ecf20Sopenharmony_ci	  module will be called cros_ec_chardev.
1498c2ecf20Sopenharmony_ci
1508c2ecf20Sopenharmony_ciconfig CROS_EC_LIGHTBAR
1518c2ecf20Sopenharmony_ci	tristate "Chromebook Pixel's lightbar support"
1528c2ecf20Sopenharmony_ci	depends on MFD_CROS_EC_DEV
1538c2ecf20Sopenharmony_ci	default MFD_CROS_EC_DEV
1548c2ecf20Sopenharmony_ci	help
1558c2ecf20Sopenharmony_ci	  This option exposes the Chromebook Pixel's lightbar to
1568c2ecf20Sopenharmony_ci	  userspace.
1578c2ecf20Sopenharmony_ci
1588c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the
1598c2ecf20Sopenharmony_ci	  module will be called cros_ec_lightbar.
1608c2ecf20Sopenharmony_ci
1618c2ecf20Sopenharmony_ciconfig CROS_EC_VBC
1628c2ecf20Sopenharmony_ci	tristate "ChromeOS EC vboot context support"
1638c2ecf20Sopenharmony_ci	depends on MFD_CROS_EC_DEV && OF
1648c2ecf20Sopenharmony_ci	default MFD_CROS_EC_DEV
1658c2ecf20Sopenharmony_ci	help
1668c2ecf20Sopenharmony_ci	  This option exposes the ChromeOS EC vboot context nvram to
1678c2ecf20Sopenharmony_ci	  userspace.
1688c2ecf20Sopenharmony_ci
1698c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the
1708c2ecf20Sopenharmony_ci	  module will be called cros_ec_vbc.
1718c2ecf20Sopenharmony_ci
1728c2ecf20Sopenharmony_ciconfig CROS_EC_DEBUGFS
1738c2ecf20Sopenharmony_ci	tristate "Export ChromeOS EC internals in DebugFS"
1748c2ecf20Sopenharmony_ci	depends on MFD_CROS_EC_DEV && DEBUG_FS
1758c2ecf20Sopenharmony_ci	default MFD_CROS_EC_DEV
1768c2ecf20Sopenharmony_ci	help
1778c2ecf20Sopenharmony_ci	  This option exposes the ChromeOS EC device internals to
1788c2ecf20Sopenharmony_ci	  userspace.
1798c2ecf20Sopenharmony_ci
1808c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the
1818c2ecf20Sopenharmony_ci	  module will be called cros_ec_debugfs.
1828c2ecf20Sopenharmony_ci
1838c2ecf20Sopenharmony_ciconfig CROS_EC_SENSORHUB
1848c2ecf20Sopenharmony_ci	tristate "ChromeOS EC MEMS Sensor Hub"
1858c2ecf20Sopenharmony_ci	depends on MFD_CROS_EC_DEV
1868c2ecf20Sopenharmony_ci	default MFD_CROS_EC_DEV
1878c2ecf20Sopenharmony_ci	help
1888c2ecf20Sopenharmony_ci	  Allow loading IIO sensors. This driver is loaded by MFD and will in
1898c2ecf20Sopenharmony_ci	  turn query the EC and register the sensors.
1908c2ecf20Sopenharmony_ci	  It also spreads the sensor data coming from the EC to the IIO sensor
1918c2ecf20Sopenharmony_ci	  object.
1928c2ecf20Sopenharmony_ci
1938c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the
1948c2ecf20Sopenharmony_ci	  module will be called cros_ec_sensorhub.
1958c2ecf20Sopenharmony_ci
1968c2ecf20Sopenharmony_ciconfig CROS_EC_SYSFS
1978c2ecf20Sopenharmony_ci	tristate "ChromeOS EC control and information through sysfs"
1988c2ecf20Sopenharmony_ci	depends on MFD_CROS_EC_DEV && SYSFS
1998c2ecf20Sopenharmony_ci	default MFD_CROS_EC_DEV
2008c2ecf20Sopenharmony_ci	help
2018c2ecf20Sopenharmony_ci	  This option exposes some sysfs attributes to control and get
2028c2ecf20Sopenharmony_ci	  information from ChromeOS EC.
2038c2ecf20Sopenharmony_ci
2048c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the
2058c2ecf20Sopenharmony_ci	  module will be called cros_ec_sysfs.
2068c2ecf20Sopenharmony_ci
2078c2ecf20Sopenharmony_ciconfig CROS_EC_TYPEC
2088c2ecf20Sopenharmony_ci	tristate "ChromeOS EC Type-C Connector Control"
2098c2ecf20Sopenharmony_ci	depends on MFD_CROS_EC_DEV && TYPEC
2108c2ecf20Sopenharmony_ci	depends on CROS_USBPD_NOTIFY
2118c2ecf20Sopenharmony_ci	depends on USB_ROLE_SWITCH
2128c2ecf20Sopenharmony_ci	default MFD_CROS_EC_DEV
2138c2ecf20Sopenharmony_ci	help
2148c2ecf20Sopenharmony_ci	  If you say Y here, you get support for accessing Type C connector
2158c2ecf20Sopenharmony_ci	  information from the Chrome OS EC.
2168c2ecf20Sopenharmony_ci
2178c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the module will be
2188c2ecf20Sopenharmony_ci	  called cros_ec_typec.
2198c2ecf20Sopenharmony_ci
2208c2ecf20Sopenharmony_ciconfig CROS_USBPD_LOGGER
2218c2ecf20Sopenharmony_ci	tristate "Logging driver for USB PD charger"
2228c2ecf20Sopenharmony_ci	depends on CHARGER_CROS_USBPD
2238c2ecf20Sopenharmony_ci	default y
2248c2ecf20Sopenharmony_ci	select RTC_LIB
2258c2ecf20Sopenharmony_ci	help
2268c2ecf20Sopenharmony_ci	  This option enables support for logging event data for the USB PD charger
2278c2ecf20Sopenharmony_ci	  available in the Embedded Controller on ChromeOS systems.
2288c2ecf20Sopenharmony_ci
2298c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the
2308c2ecf20Sopenharmony_ci	  module will be called cros_usbpd_logger.
2318c2ecf20Sopenharmony_ci
2328c2ecf20Sopenharmony_ciconfig CROS_USBPD_NOTIFY
2338c2ecf20Sopenharmony_ci	tristate "ChromeOS Type-C power delivery event notifier"
2348c2ecf20Sopenharmony_ci	depends on MFD_CROS_EC_DEV
2358c2ecf20Sopenharmony_ci	default MFD_CROS_EC_DEV
2368c2ecf20Sopenharmony_ci	help
2378c2ecf20Sopenharmony_ci	  If you say Y here, you get support for Type-C PD event notifications
2388c2ecf20Sopenharmony_ci	  from the ChromeOS EC. On ACPI platorms this driver will bind to the
2398c2ecf20Sopenharmony_ci	  GOOG0003 ACPI device, and on platforms which don't have this device it
2408c2ecf20Sopenharmony_ci	  will get initialized on ECs which support the feature
2418c2ecf20Sopenharmony_ci	  EC_FEATURE_USB_PD.
2428c2ecf20Sopenharmony_ci
2438c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the
2448c2ecf20Sopenharmony_ci	  module will be called cros_usbpd_notify.
2458c2ecf20Sopenharmony_ci
2468c2ecf20Sopenharmony_cisource "drivers/platform/chrome/wilco_ec/Kconfig"
2478c2ecf20Sopenharmony_ci
2488c2ecf20Sopenharmony_ciendif # CHROMEOS_PLATFORMS
249