From f4462f85e6188ad308df431d7c20b675be712caf Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Mon, 1 Oct 2018 12:22:10 -0600 Subject: [PATCH] UPSTREAM: spl: input: Allow input in SPL and TPL In some cases it is necessary to read the keyboard in early phases of U-Boot. Update the config to allow this. Signed-off-by: Simon Glass Signed-off-by: Jason Zhu Change-Id: I0f166e55c84c9f10ced9e4580e6b7c7a6f980a79 --- drivers/input/Kconfig | 48 ++++++++++++++++++++++++++++++++++++++++++ drivers/input/Makefile | 13 ++++++++---- drivers/input/input.c | 5 ++++- 3 files changed, 61 insertions(+), 5 deletions(-) diff --git a/drivers/input/Kconfig b/drivers/input/Kconfig index 8a70723626..2c6a1e24dc 100644 --- a/drivers/input/Kconfig +++ b/drivers/input/Kconfig @@ -1,3 +1,16 @@ +config INPUT + bool "Enable input subsystem" + depends on DM + default y + +config SPL_INPUT + bool "Enable input subsystem for SPL" + depends on SPL_DM + +config TPL_INPUT + bool "Enable input subsystem for TPL" + depends on TPL_DM + config DM_KEYBOARD bool "Enable driver model keyboard support" depends on DM @@ -27,8 +40,43 @@ config RK_IR help This adds a driver for the rockchip IR controller. +config SPL_DM_KEYBOARD + bool "Enable driver model keyboard support" + depends on SPL_DM + help + This adds a uclass for keyboards and implements keyboard support + using driver model. The API is implemented by keyboard.h and + includes methods to start/stop the device, check for available + input and update LEDs if the keyboard has them. + +config TPL_DM_KEYBOARD + bool "Enable driver model keyboard support" + depends on TPL_DM + help + This adds a uclass for keyboards and implements keyboard support + using driver model. The API is implemented by keyboard.h and + includes methods to start/stop the device, check for available + input and update LEDs if the keyboard has them. + config CROS_EC_KEYB bool "Enable Chrome OS EC keyboard support" + depends on INPUT + help + Most ARM Chromebooks use an EC to provide access to the keyboard. + Messages are used to request key scans from the EC and these are + then decoded into keys by this driver. + +config SPL_CROS_EC_KEYB + bool "Enable Chrome OS EC keyboard support in SPL" + depends on SPL_INPUT + help + Most ARM Chromebooks use an EC to provide access to the keyboard. + Messages are used to request key scans from the EC and these are + then decoded into keys by this driver. + +config TPL_CROS_EC_KEYB + bool "Enable Chrome OS EC keyboard support in TPL" + depends on TPL_INPUT help Most ARM Chromebooks use an EC to provide access to the keyboard. Messages are used to request key scans from the EC and these are diff --git a/drivers/input/Makefile b/drivers/input/Makefile index 73235e1d88..3d6469cd70 100644 --- a/drivers/input/Makefile +++ b/drivers/input/Makefile @@ -5,23 +5,28 @@ # SPDX-License-Identifier: GPL-2.0+ # -obj-$(CONFIG_DM_KEYBOARD) += keyboard-uclass.o obj-$(CONFIG_DM_KEY) += key-uclass.o obj-$(CONFIG_DM_RC) += rc-uclass.o obj-$(CONFIG_RK_IR) += rockchip_ir.o +obj-y += input.o +obj-$(CONFIG_$(SPL_TPL_)CROS_EC_KEYB) += cros_ec_keyb.o +obj-$(CONFIG_$(SPL_TPL_)OF_CONTROL) += key_matrix.o +obj-$(CONFIG_$(SPL_TPL_)DM_KEYBOARD) += keyboard-uclass.o +obj-$(CONFIG_RK8XX_PWRKEY) += rk8xx_pwrkey.o + +ifndef CONFIG_SPL_BUILD obj-$(CONFIG_I8042_KEYB) += i8042.o obj-$(CONFIG_TEGRA_KEYBOARD) += tegra-kbc.o obj-$(CONFIG_TWL4030_INPUT) += twl4030.o obj-$(CONFIG_TWL6030_INPUT) += twl6030.o -obj-$(CONFIG_CROS_EC_KEYB) += cros_ec_keyb.o obj-$(CONFIG_RK8XX_PWRKEY) += rk8xx_pwrkey.o ifdef CONFIG_PS2KBD obj-y += keyboard.o pc_keyb.o obj-$(CONFIG_PS2MULT) += ps2mult.o ps2ser.o endif -obj-y += input.o -obj-$(CONFIG_$(SPL_)OF_CONTROL) += key_matrix.o +endif + obj-$(CONFIG_ADC_KEY) += adc_key.o obj-$(CONFIG_GPIO_KEY) += gpio_key.o obj-$(CONFIG_RK_KEY) += rk_key.o diff --git a/drivers/input/input.c b/drivers/input/input.c index 26da3a95ff..4c84dd40ae 100644 --- a/drivers/input/input.c +++ b/drivers/input/input.c @@ -650,7 +650,7 @@ int input_stdio_register(struct stdio_dev *dev) int error; error = stdio_register(dev); - +#if !defined(CONFIG_SPL_BUILD) || CONFIG_IS_ENABLED(ENV_SUPPORT) /* check if this is the standard input device */ if (!error && strcmp(env_get("stdin"), dev->name) == 0) { /* reassign the console */ @@ -658,6 +658,9 @@ int input_stdio_register(struct stdio_dev *dev) console_assign(stdin, dev->name)) return -1; } +#else + error = error; +#endif return 0; }