diff options
author | Simon Glass <sjg@chromium.org> | 2015-11-11 10:05:40 -0700 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2015-11-19 20:13:41 -0700 |
commit | 3b5f6f5001d0f3dfde98ccc6b9350fe74dac41f8 (patch) | |
tree | 114c3fda09983d90591ee629923a934a390d196a | |
parent | ba42034267050d1a41479ba133d1c5b8679397f7 (diff) | |
download | talos-obmc-uboot-3b5f6f5001d0f3dfde98ccc6b9350fe74dac41f8.tar.gz talos-obmc-uboot-3b5f6f5001d0f3dfde98ccc6b9350fe74dac41f8.zip |
input: Allow updating of keyboard LEDs
Add a function which returns a new keyboard LED value when the LEDs need
updating.
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
-rw-r--r-- | drivers/input/input.c | 9 | ||||
-rw-r--r-- | include/input.h | 14 |
2 files changed, 22 insertions, 1 deletions
diff --git a/drivers/input/input.c b/drivers/input/input.c index 5de8d9d005..954ecec595 100644 --- a/drivers/input/input.c +++ b/drivers/input/input.c @@ -275,6 +275,7 @@ static struct input_key_xlate *process_modifier(struct input_config *config, if (config->flags & FLAG_SCROLL_LOCK) leds |= INPUT_LED_SCROLL; config->leds = leds; + config->leds_changed = flip; } } @@ -586,6 +587,14 @@ void input_allow_repeats(struct input_config *config, bool allow_repeats) config->allow_repeats = allow_repeats; } +int input_leds_changed(struct input_config *config) +{ + if (config->leds_changed) + return config->leds; + + return -1; +} + int input_add_tables(struct input_config *config, bool german) { struct kbd_entry *entry; diff --git a/include/input.h b/include/input.h index c1af259e26..ad120e47f5 100644 --- a/include/input.h +++ b/include/input.h @@ -43,7 +43,8 @@ struct input_config { /* Which modifiers are active (1 bit for each MOD_... value) */ uchar modifiers; uchar flags; /* active state keys (FLAGS_...) */ - uchar leds; /* active LEDS (INPUT_LED_...) */ + uchar leds; /* active LEDs (INPUT_LED_...) */ + uchar leds_changed; /* LEDs that just changed */ uchar num_tables; /* number of modifier tables */ int prev_keycodes[INPUT_BUFFER_LEN]; /* keys held last time */ int num_prev_keycodes; /* number of prev keys */ @@ -162,6 +163,17 @@ void input_set_delays(struct input_config *config, int repeat_delay_ms, void input_allow_repeats(struct input_config *config, bool allow_repeats); /** + * Check if keyboard LEDs need to be updated + * + * This can be called after input_tstc() to see if keyboard LEDs need + * updating. + * + * @param config Input state + * @return -1 if no LEDs need updating, other value if they do + */ +int input_leds_changed(struct input_config *config); + +/** * Set up the key map tables * * This must be called after input_init() or keycode decoding will not work. |