spl: input: Allow input in SPL and TPL
authorSimon Glass <sjg@chromium.org>
Mon, 1 Oct 2018 18:22:10 +0000 (12:22 -0600)
committerSimon Glass <sjg@chromium.org>
Tue, 9 Oct 2018 10:40:27 +0000 (04:40 -0600)
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 <sjg@chromium.org>
drivers/input/Kconfig
drivers/input/Makefile
drivers/input/input.c

index 7ffb949f12dced0827bc8a994375019fb0c0f328..7afdafed94825781968f6ffb6021f816c65903b2 100644 (file)
@@ -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
@@ -7,8 +20,43 @@ config DM_KEYBOARD
          includes methods to start/stop the device, check for available
          input and update LEDs if the keyboard has them.
 
+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
index d13baf3576ae42532400887c7eb2f3f49fe6fff4..fd56d7b349234b922f4b76f60c1915f1bfdc05cb 100644 (file)
@@ -3,12 +3,15 @@
 # (C) Copyright 2000-2007
 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
 
-obj-$(CONFIG_DM_KEYBOARD) += keyboard-uclass.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
+
+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-y += input.o
-obj-$(CONFIG_$(SPL_)OF_CONTROL) += key_matrix.o
+endif
index 29620a9e2793b5d318bafc9d67d77ef734698ef8..4f514dba56d578605c880e44f43299b0d10d0d16 100644 (file)
@@ -652,7 +652,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 */
@@ -660,6 +660,9 @@ int input_stdio_register(struct stdio_dev *dev)
                                console_assign(stdin, dev->name))
                        return -1;
        }
+#else
+       error = error;
+#endif
 
        return 0;
 }