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 7ffb949..7afdafe 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 d13baf3..fd56d7b 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 29620a9..4f514db 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;
 }