2019-05-19 13:07:45 +01:00
# SPDX-License-Identifier: GPL-2.0-only
2013-11-07 14:25:45 -08:00
#
# Platform support for Chrome OS hardware (Chromebooks and Chromeboxes)
#
menuconfig CHROME_PLATFORMS
bool "Platform support for Chrome hardware"
2015-07-01 12:46:42 +02:00
depends on X86 || ARM || ARM64 || COMPILE_TEST
2020-06-14 01:50:22 +09:00
help
2013-11-07 14:25:45 -08:00
Say Y here to get to see options for platform support for
various Chromebooks and Chromeboxes. This option alone does
not add any kernel code.
If you say N, all options in this submenu will be skipped and disabled.
if CHROME_PLATFORMS
config CHROMEOS_LAPTOP
tristate "Chrome OS Laptop"
2015-02-02 12:26:25 +01:00
depends on I2C && DMI && X86
2020-06-14 01:50:22 +09:00
help
2013-11-07 14:25:45 -08:00
This driver instantiates i2c and smbus devices such as
light sensors and touchpads.
If you have a supported Chromebook, choose Y or M here.
The module will be called chromeos_laptop.
2013-11-12 13:32:13 -08:00
config CHROMEOS_PSTORE
tristate "Chrome OS pstore support"
2015-02-02 12:26:25 +01:00
depends on X86
2020-06-14 01:50:22 +09:00
help
2013-11-12 13:32:13 -08:00
This module instantiates the persistent storage on x86 ChromeOS
devices. It can be used to store away console logs and crash
information across reboots.
The range of memory used is 0xf00000-0x1000000, traditionally
the memory used to back VGA controller memory.
If you have a supported Chromebook, choose Y or M here.
The module will be called chromeos_pstore.
2017-01-30 15:47:22 -08:00
config CHROMEOS_TBMC
tristate "ChromeOS Tablet Switch Controller"
depends on ACPI
2018-05-28 17:58:46 +02:00
depends on INPUT
2017-01-30 15:47:22 -08:00
help
This option adds a driver for the tablet switch on
select Chrome OS systems.
To compile this driver as a module, choose M here: the
module will be called chromeos_tbmc.
2019-09-02 11:53:01 +02:00
config CROS_EC
tristate "ChromeOS Embedded Controller"
select CROS_EC_PROTO
depends on X86 || ARM || ARM64 || COMPILE_TEST
help
If you say Y here you get support for the ChromeOS Embedded
Controller (EC) providing keyboard, battery and power services.
You also need to enable the driver for the bus you are using. The
protocol for talking to the EC is defined by the bus driver.
To compile this driver as a module, choose M here: the
module will be called cros_ec.
2018-07-02 12:21:59 +02:00
config CROS_EC_I2C
tristate "ChromeOS Embedded Controller (I2C)"
2019-09-02 11:53:01 +02:00
depends on CROS_EC && I2C
2018-07-02 12:21:59 +02:00
help
If you say Y here, you get support for talking to the ChromeOS
EC through an I2C bus. This uses a simple byte-level protocol with
a checksum. Failing accesses will be retried three times to
improve reliability.
2019-04-12 15:18:50 +08:00
config CROS_EC_RPMSG
tristate "ChromeOS Embedded Controller (rpmsg)"
2019-09-02 11:53:01 +02:00
depends on CROS_EC && RPMSG && OF
2019-04-12 15:18:50 +08:00
help
If you say Y here, you get support for talking to the ChromeOS EC
through rpmsg. This uses a simple byte-level protocol with a
checksum. Also since there's no addition EC-to-host interrupt, this
use a byte in message to distinguish host event from host command.
To compile this driver as a module, choose M here: the
module will be called cros_ec_rpmsg.
2019-05-15 16:08:41 +05:30
config CROS_EC_ISHTP
tristate "ChromeOS Embedded Controller (ISHTP)"
2019-09-02 11:53:04 +02:00
depends on CROS_EC
2019-05-15 16:08:41 +05:30
depends on INTEL_ISH_HID
help
If you say Y here, you get support for talking to the ChromeOS EC
firmware running on Intel Integrated Sensor Hub (ISH), using the
ISH Transport protocol (ISH-TP). This uses a simple byte-level
protocol with a checksum.
To compile this driver as a module, choose M here: the
module will be called cros_ec_ishtp.
2018-07-02 12:21:59 +02:00
config CROS_EC_SPI
tristate "ChromeOS Embedded Controller (SPI)"
2019-09-02 11:53:01 +02:00
depends on CROS_EC && SPI
2018-07-02 12:21:59 +02:00
2020-06-14 01:50:22 +09:00
help
2018-07-02 12:21:59 +02:00
If you say Y here, you get support for talking to the ChromeOS EC
through a SPI bus, using a byte-level protocol. Since the EC's
response time cannot be guaranteed, we support ignoring
'pre-amble' bytes before the response actually starts.
2015-02-02 12:26:24 +01:00
config CROS_EC_LPC
platform/chrome: cros_ec_lpc: Choose Microchip EC at runtime
On many boards, communication between the kernel and the Embedded
Controller happens over an LPC bus. In these cases, the kernel config
CONFIG_CROS_EC_LPC is enabled. Some of these LPC boards contain a
Microchip Embedded Controller (MEC) that is different from the regular
EC. On these devices, the same LPC bus is used, but the protocol is
a little different. In these cases, the CONFIG_CROS_EC_LPC_MEC kernel
config is enabled. Currently, the kernel decides at compile-time whether
or not to use the MEC variant, and, when that kernel option is selected
it breaks the other boards. We would like a kind of runtime detection to
avoid this.
This patch adds that detection mechanism by probing the protocol at
runtime, first we assume that a MEC variant is connected, and if the
protocol fails it fallbacks to the regular EC. This adds a bit of
overload because we try to read twice on those LPC boards that doesn't
contain a MEC variant, but is a better solution than having to select the
EC variant at compile-time.
While here also fix the alignment in Kconfig file for this config option
replacing the spaces by tabs.
Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Reviewed-by: Ezequiel Garcia <ezequiel@collabora.com>
Tested-by: Nick Crews <ncrews@chromium.org>
Reviewed-by: Nick Crews <ncrews@chromium.org>
2019-06-14 23:43:01 +02:00
tristate "ChromeOS Embedded Controller (LPC)"
2019-09-02 11:53:01 +02:00
depends on CROS_EC && ACPI && (X86 || COMPILE_TEST)
2017-05-16 17:46:48 +02:00
help
platform/chrome: cros_ec_lpc: Choose Microchip EC at runtime
On many boards, communication between the kernel and the Embedded
Controller happens over an LPC bus. In these cases, the kernel config
CONFIG_CROS_EC_LPC is enabled. Some of these LPC boards contain a
Microchip Embedded Controller (MEC) that is different from the regular
EC. On these devices, the same LPC bus is used, but the protocol is
a little different. In these cases, the CONFIG_CROS_EC_LPC_MEC kernel
config is enabled. Currently, the kernel decides at compile-time whether
or not to use the MEC variant, and, when that kernel option is selected
it breaks the other boards. We would like a kind of runtime detection to
avoid this.
This patch adds that detection mechanism by probing the protocol at
runtime, first we assume that a MEC variant is connected, and if the
protocol fails it fallbacks to the regular EC. This adds a bit of
overload because we try to read twice on those LPC boards that doesn't
contain a MEC variant, but is a better solution than having to select the
EC variant at compile-time.
While here also fix the alignment in Kconfig file for this config option
replacing the spaces by tabs.
Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Reviewed-by: Ezequiel Garcia <ezequiel@collabora.com>
Tested-by: Nick Crews <ncrews@chromium.org>
Reviewed-by: Nick Crews <ncrews@chromium.org>
2019-06-14 23:43:01 +02:00
If you say Y here, you get support for talking to the ChromeOS EC
over an LPC bus, including the LPC Microchip EC (MEC) variant.
This uses a simple byte-level protocol with a checksum. This is
used for userspace access only. The kernel typically has its own
communication methods.
2017-05-16 17:46:48 +02:00
platform/chrome: cros_ec_lpc: Choose Microchip EC at runtime
On many boards, communication between the kernel and the Embedded
Controller happens over an LPC bus. In these cases, the kernel config
CONFIG_CROS_EC_LPC is enabled. Some of these LPC boards contain a
Microchip Embedded Controller (MEC) that is different from the regular
EC. On these devices, the same LPC bus is used, but the protocol is
a little different. In these cases, the CONFIG_CROS_EC_LPC_MEC kernel
config is enabled. Currently, the kernel decides at compile-time whether
or not to use the MEC variant, and, when that kernel option is selected
it breaks the other boards. We would like a kind of runtime detection to
avoid this.
This patch adds that detection mechanism by probing the protocol at
runtime, first we assume that a MEC variant is connected, and if the
protocol fails it fallbacks to the regular EC. This adds a bit of
overload because we try to read twice on those LPC boards that doesn't
contain a MEC variant, but is a better solution than having to select the
EC variant at compile-time.
While here also fix the alignment in Kconfig file for this config option
replacing the spaces by tabs.
Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Reviewed-by: Ezequiel Garcia <ezequiel@collabora.com>
Tested-by: Nick Crews <ncrews@chromium.org>
Reviewed-by: Nick Crews <ncrews@chromium.org>
2019-06-14 23:43:01 +02:00
To compile this driver as a module, choose M here: the
module will be called cros_ec_lpcs.
2017-05-16 17:46:48 +02:00
2015-06-09 13:04:44 +02:00
config CROS_EC_PROTO
2019-11-20 21:40:13 +08:00
bool
help
ChromeOS EC communication protocol helpers.
2015-06-09 13:04:44 +02:00
2016-03-08 11:12:46 -08:00
config CROS_KBD_LED_BACKLIGHT
tristate "Backlight LED support for Chrome OS keyboards"
depends on LEDS_CLASS && ACPI
help
This option enables support for the keyboard backlight LEDs on
select Chrome OS systems.
To compile this driver as a module, choose M here: the
module will be called cros_kbd_led_backlight.
2019-09-02 11:53:02 +02:00
config CROS_EC_CHARDEV
tristate "ChromeOS EC miscdevice"
2019-09-02 11:53:04 +02:00
depends on MFD_CROS_EC_DEV
default MFD_CROS_EC_DEV
2019-09-02 11:53:02 +02:00
help
This driver adds file operations support to talk with the
ChromeOS EC from userspace via a character device.
To compile this driver as a module, choose M here: the
module will be called cros_ec_chardev.
2018-12-12 18:33:57 +01:00
config CROS_EC_LIGHTBAR
tristate "Chromebook Pixel's lightbar support"
2019-09-02 11:53:04 +02:00
depends on MFD_CROS_EC_DEV
default MFD_CROS_EC_DEV
2018-12-12 18:33:57 +01:00
help
This option exposes the Chromebook Pixel's lightbar to
userspace.
To compile this driver as a module, choose M here: the
module will be called cros_ec_lightbar.
2018-12-12 18:33:58 +01:00
config CROS_EC_VBC
tristate "ChromeOS EC vboot context support"
2019-09-02 11:53:04 +02:00
depends on MFD_CROS_EC_DEV && OF
default MFD_CROS_EC_DEV
2018-12-12 18:33:58 +01:00
help
This option exposes the ChromeOS EC vboot context nvram to
userspace.
To compile this driver as a module, choose M here: the
module will be called cros_ec_vbc.
2018-12-12 18:33:59 +01:00
config CROS_EC_DEBUGFS
tristate "Export ChromeOS EC internals in DebugFS"
2019-09-02 11:53:04 +02:00
depends on MFD_CROS_EC_DEV && DEBUG_FS
default MFD_CROS_EC_DEV
2018-12-12 18:33:59 +01:00
help
This option exposes the ChromeOS EC device internals to
userspace.
To compile this driver as a module, choose M here: the
module will be called cros_ec_debugfs.
2019-11-19 13:45:45 +01:00
config CROS_EC_SENSORHUB
tristate "ChromeOS EC MEMS Sensor Hub"
2019-11-27 09:49:39 +01:00
depends on MFD_CROS_EC_DEV
default MFD_CROS_EC_DEV
2019-11-19 13:45:45 +01:00
help
Allow loading IIO sensors. This driver is loaded by MFD and will in
turn query the EC and register the sensors.
It also spreads the sensor data coming from the EC to the IIO sensor
object.
To compile this driver as a module, choose M here: the
module will be called cros_ec_sensorhub.
2018-12-12 18:34:00 +01:00
config CROS_EC_SYSFS
tristate "ChromeOS EC control and information through sysfs"
2019-09-02 11:53:04 +02:00
depends on MFD_CROS_EC_DEV && SYSFS
default MFD_CROS_EC_DEV
2018-12-12 18:34:00 +01:00
help
This option exposes some sysfs attributes to control and get
information from ChromeOS EC.
To compile this driver as a module, choose M here: the
module will be called cros_ec_sysfs.
2020-03-16 02:00:17 -07:00
config CROS_EC_TYPEC
tristate "ChromeOS EC Type-C Connector Control"
depends on MFD_CROS_EC_DEV && TYPEC
2020-04-14 22:29:41 -07:00
depends on CROS_USBPD_NOTIFY
2020-06-29 12:32:23 +02:00
depends on USB_ROLE_SWITCH
2020-03-16 02:00:17 -07:00
default MFD_CROS_EC_DEV
help
If you say Y here, you get support for accessing Type C connector
information from the Chrome OS EC.
To compile this driver as a module, choose M here: the module will be
called cros_ec_typec.
2019-04-03 16:05:28 +02:00
config CROS_USBPD_LOGGER
tristate "Logging driver for USB PD charger"
depends on CHARGER_CROS_USBPD
default y
select RTC_LIB
help
This option enables support for logging event data for the USB PD charger
available in the Embedded Controller on ChromeOS systems.
To compile this driver as a module, choose M here: the
module will be called cros_usbpd_logger.
2020-01-24 15:18:32 -08:00
config CROS_USBPD_NOTIFY
tristate "ChromeOS Type-C power delivery event notifier"
depends on MFD_CROS_EC_DEV
default MFD_CROS_EC_DEV
help
If you say Y here, you get support for Type-C PD event notifications
from the ChromeOS EC. On ACPI platorms this driver will bind to the
GOOG0003 ACPI device, and on platforms which don't have this device it
will get initialized on ECs which support the feature
EC_FEATURE_USB_PD.
To compile this driver as a module, choose M here: the
module will be called cros_usbpd_notify.
2019-02-08 17:37:17 -07:00
source "drivers/platform/chrome/wilco_ec/Kconfig"
2013-11-07 14:25:45 -08:00
endif # CHROMEOS_PLATFORMS