From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bin Meng Date: Thu, 12 Nov 2015 21:50:46 +0800 Subject: [U-Boot] [PATCH v3 04/12] input: Allow updating of keyboard LEDs In-Reply-To: <1447261548-14304-5-git-send-email-sjg@chromium.org> References: <1447261548-14304-1-git-send-email-sjg@chromium.org> <1447261548-14304-5-git-send-email-sjg@chromium.org> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Thu, Nov 12, 2015 at 1:05 AM, Simon Glass wrote: > Add a function which returns a new keyboard LED value when the LEDs need > updating. > > Signed-off-by: Simon Glass > --- > > Changes in v3: None > Changes in v2: None > > drivers/input/input.c | 9 +++++++++ > include/input.h | 14 +++++++++++++- > 2 files changed, 22 insertions(+), 1 deletion(-) > > diff --git a/drivers/input/input.c b/drivers/input/input.c > index a8a15c9..bf1acdc 100644 > --- a/drivers/input/input.c > +++ b/drivers/input/input.c > @@ -276,6 +276,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; > } > } > > @@ -587,6 +588,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 c1af259..ad120e4 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. > -- Reviewed-by: Bin Meng