2019-05-19 20:07:45 +08:00
|
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
2013-11-08 06:25:45 +08:00
|
|
|
#
|
|
|
|
# Platform support for Chrome OS hardware (Chromebooks and Chromeboxes)
|
|
|
|
#
|
|
|
|
|
2019-09-02 17:53:04 +08:00
|
|
|
config MFD_CROS_EC
|
|
|
|
tristate "Platform support for Chrome hardware (transitional)"
|
|
|
|
select CHROME_PLATFORMS
|
|
|
|
select CROS_EC
|
2020-03-05 18:28:38 +08:00
|
|
|
select MFD_CROS_EC_DEV
|
2019-09-02 17:53:04 +08:00
|
|
|
depends on X86 || ARM || ARM64 || COMPILE_TEST
|
|
|
|
help
|
|
|
|
This is a transitional Kconfig option and will be removed after
|
|
|
|
everyone enables the parts individually.
|
|
|
|
|
2013-11-08 06:25:45 +08:00
|
|
|
menuconfig CHROME_PLATFORMS
|
|
|
|
bool "Platform support for Chrome hardware"
|
2015-07-01 18:46:42 +08:00
|
|
|
depends on X86 || ARM || ARM64 || COMPILE_TEST
|
2020-06-14 00:50:22 +08:00
|
|
|
help
|
2013-11-08 06: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 19:26:25 +08:00
|
|
|
depends on I2C && DMI && X86
|
2020-06-14 00:50:22 +08:00
|
|
|
help
|
2013-11-08 06: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-13 05:32:13 +08:00
|
|
|
config CHROMEOS_PSTORE
|
|
|
|
tristate "Chrome OS pstore support"
|
2015-02-02 19:26:25 +08:00
|
|
|
depends on X86
|
2020-06-14 00:50:22 +08:00
|
|
|
help
|
2013-11-13 05: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-31 07:47:22 +08:00
|
|
|
config CHROMEOS_TBMC
|
|
|
|
tristate "ChromeOS Tablet Switch Controller"
|
|
|
|
depends on ACPI
|
2018-05-28 23:58:46 +08:00
|
|
|
depends on INPUT
|
2017-01-31 07: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 17:53:01 +08: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 18:21:59 +08:00
|
|
|
config CROS_EC_I2C
|
|
|
|
tristate "ChromeOS Embedded Controller (I2C)"
|
2019-09-02 17:53:01 +08:00
|
|
|
depends on CROS_EC && I2C
|
2018-07-02 18:21:59 +08: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 17:53:01 +08: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 18:38:41 +08:00
|
|
|
config CROS_EC_ISHTP
|
|
|
|
tristate "ChromeOS Embedded Controller (ISHTP)"
|
2019-09-02 17:53:04 +08:00
|
|
|
depends on CROS_EC
|
2019-05-15 18:38:41 +08:00
|
|
|
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 18:21:59 +08:00
|
|
|
config CROS_EC_SPI
|
|
|
|
tristate "ChromeOS Embedded Controller (SPI)"
|
2019-09-02 17:53:01 +08:00
|
|
|
depends on CROS_EC && SPI
|
2018-07-02 18:21:59 +08:00
|
|
|
|
2020-06-14 00:50:22 +08:00
|
|
|
help
|
2018-07-02 18:21:59 +08: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 19:26:24 +08: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-15 05:43:01 +08:00
|
|
|
tristate "ChromeOS Embedded Controller (LPC)"
|
2019-09-02 17:53:01 +08:00
|
|
|
depends on CROS_EC && ACPI && (X86 || COMPILE_TEST)
|
2017-05-16 23:46:48 +08: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-15 05:43:01 +08: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 23:46:48 +08: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-15 05:43:01 +08:00
|
|
|
To compile this driver as a module, choose M here: the
|
|
|
|
module will be called cros_ec_lpcs.
|
2017-05-16 23:46:48 +08:00
|
|
|
|
2015-06-09 19:04:44 +08:00
|
|
|
config CROS_EC_PROTO
|
2019-11-20 21:40:13 +08:00
|
|
|
bool
|
|
|
|
help
|
|
|
|
ChromeOS EC communication protocol helpers.
|
2015-06-09 19:04:44 +08:00
|
|
|
|
2016-03-09 03: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 17:53:02 +08:00
|
|
|
config CROS_EC_CHARDEV
|
|
|
|
tristate "ChromeOS EC miscdevice"
|
2019-09-02 17:53:04 +08:00
|
|
|
depends on MFD_CROS_EC_DEV
|
|
|
|
default MFD_CROS_EC_DEV
|
2019-09-02 17:53:02 +08: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-13 01:33:57 +08:00
|
|
|
config CROS_EC_LIGHTBAR
|
|
|
|
tristate "Chromebook Pixel's lightbar support"
|
2019-09-02 17:53:04 +08:00
|
|
|
depends on MFD_CROS_EC_DEV
|
|
|
|
default MFD_CROS_EC_DEV
|
2018-12-13 01:33:57 +08: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-13 01:33:58 +08:00
|
|
|
config CROS_EC_VBC
|
|
|
|
tristate "ChromeOS EC vboot context support"
|
2019-09-02 17:53:04 +08:00
|
|
|
depends on MFD_CROS_EC_DEV && OF
|
|
|
|
default MFD_CROS_EC_DEV
|
2018-12-13 01:33:58 +08: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-13 01:33:59 +08:00
|
|
|
config CROS_EC_DEBUGFS
|
|
|
|
tristate "Export ChromeOS EC internals in DebugFS"
|
2019-09-02 17:53:04 +08:00
|
|
|
depends on MFD_CROS_EC_DEV && DEBUG_FS
|
|
|
|
default MFD_CROS_EC_DEV
|
2018-12-13 01:33:59 +08: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 20:45:45 +08:00
|
|
|
config CROS_EC_SENSORHUB
|
|
|
|
tristate "ChromeOS EC MEMS Sensor Hub"
|
2019-11-27 16:49:39 +08:00
|
|
|
depends on MFD_CROS_EC_DEV
|
|
|
|
default MFD_CROS_EC_DEV
|
2019-11-19 20:45:45 +08: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-13 01:34:00 +08:00
|
|
|
config CROS_EC_SYSFS
|
|
|
|
tristate "ChromeOS EC control and information through sysfs"
|
2019-09-02 17:53:04 +08:00
|
|
|
depends on MFD_CROS_EC_DEV && SYSFS
|
|
|
|
default MFD_CROS_EC_DEV
|
2018-12-13 01:34:00 +08: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 17:00:17 +08:00
|
|
|
config CROS_EC_TYPEC
|
|
|
|
tristate "ChromeOS EC Type-C Connector Control"
|
|
|
|
depends on MFD_CROS_EC_DEV && TYPEC
|
2020-04-15 13:29:41 +08:00
|
|
|
depends on CROS_USBPD_NOTIFY
|
2020-06-29 18:32:23 +08:00
|
|
|
depends on USB_ROLE_SWITCH
|
2020-03-16 17:00:17 +08: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 22:05:28 +08: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-25 07: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-09 08:37:17 +08:00
|
|
|
source "drivers/platform/chrome/wilco_ec/Kconfig"
|
|
|
|
|
2013-11-08 06:25:45 +08:00
|
|
|
endif # CHROMEOS_PLATFORMS
|