diff options
author | Bin Meng | 2015-11-12 05:33:02 -0800 |
---|---|---|
committer | Simon Glass | 2015-11-19 20:13:41 -0700 |
commit | cd810918fd638df4e91f232ec889896c6155440a (patch) | |
tree | 2e20db88ed9c5f73a863154c1470d548e4e08ee9 | |
parent | 533c81a94988362fe7379bebd13ee0f701b38454 (diff) |
input: Call keyboard's update_leds() method when the LEDs change
We should request keyboard to turn on/off its LED when detecting
any changes on the LEDs.
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Acked-by: Simon Glass <sjg@chromium.org>
Minor changes to allow this to build without CONFIG_DM_KEYBOARD:
Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r-- | drivers/input/input.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/input/input.c b/drivers/input/input.c index 575f4b66f0a..e02e2643c9f 100644 --- a/drivers/input/input.c +++ b/drivers/input/input.c @@ -8,9 +8,13 @@ */ #include <common.h> +#include <dm.h> #include <errno.h> #include <stdio_dev.h> #include <input.h> +#ifdef CONFIG_DM_KEYBOARD +#include <keyboard.h> +#endif #include <linux/input.h> enum { @@ -235,6 +239,10 @@ int input_getc(struct input_config *config) static struct input_key_xlate *process_modifier(struct input_config *config, int key, int release) { +#ifdef CONFIG_DM_KEYBOARD + struct udevice *dev = config->dev; + struct keyboard_ops *ops = keyboard_get_ops(dev); +#endif struct input_key_xlate *table; int i; @@ -276,6 +284,13 @@ static struct input_key_xlate *process_modifier(struct input_config *config, leds |= INPUT_LED_SCROLL; config->leds = leds; config->leds_changed = flip; + +#ifdef CONFIG_DM_KEYBOARD + if (ops->update_leds) { + if (ops->update_leds(dev, config->leds)) + debug("Update keyboard's LED failed\n"); + } +#endif } } |