
Hi Simon,
On Wed, Sep 9, 2015 at 12:32 PM, Simon Glass sjg@chromium.org wrote:
Require the caller to add the keycode translation tables separately so that it can select which ones to use. In a later patch we will add the option to add German tables.
Signed-off-by: Simon Glass sjg@chromium.org
board/kosagi/novena/novena.c | 1 + drivers/input/cros_ec_keyb.c | 1 + drivers/input/input.c | 21 ++++++++++++--------- drivers/input/tegra-kbc.c | 1 + include/input.h | 10 ++++++++++ 5 files changed, 25 insertions(+), 9 deletions(-)
diff --git a/board/kosagi/novena/novena.c b/board/kosagi/novena/novena.c index 69f5be3..48cbb0f 100644 --- a/board/kosagi/novena/novena.c +++ b/board/kosagi/novena/novena.c @@ -88,6 +88,7 @@ int drv_keyboard_init(void) debug("%s: Cannot set up input\n", __func__); return -1; }
input_add_tables(&button_input); button_input.read_keys = novena_gpio_button_read_keys; error = input_stdio_register(&dev);
diff --git a/drivers/input/cros_ec_keyb.c b/drivers/input/cros_ec_keyb.c index a31aa77..eaab86f 100644 --- a/drivers/input/cros_ec_keyb.c +++ b/drivers/input/cros_ec_keyb.c @@ -255,6 +255,7 @@ int drv_keyboard_init(void) return -1; } config.input.read_keys = cros_ec_kbc_check;
input_add_tables(&config.input); memset(&dev, '\0', sizeof(dev)); strcpy(dev.name, "cros-ec-keyb");
diff --git a/drivers/input/input.c b/drivers/input/input.c index 9033935..0f11ae6 100644 --- a/drivers/input/input.c +++ b/drivers/input/input.c @@ -457,19 +457,22 @@ void input_set_delays(struct input_config *config, int repeat_delay_ms, config->repeat_rate_ms = repeat_rate_ms; }
+int input_add_tables(struct input_config *config) +{
input_add_table(config, -1, -1,
kbd_plain_xlate, ARRAY_SIZE(kbd_plain_xlate));
input_add_table(config, KEY_LEFTSHIFT, KEY_RIGHTSHIFT,
kbd_shift_xlate, ARRAY_SIZE(kbd_shift_xlate));
input_add_table(config, KEY_LEFTCTRL, KEY_RIGHTCTRL,
kbd_ctrl_xlate, ARRAY_SIZE(kbd_ctrl_xlate));
Should we return error codes here? In previous patch, we've added -ENOSPC.
return 0;
+}
int input_init(struct input_config *config, int leds) { memset(config, '\0', sizeof(*config)); config->leds = leds;
if (input_add_table(config, -1, -1,
kbd_plain_xlate, ARRAY_SIZE(kbd_plain_xlate)) ||
input_add_table(config, KEY_LEFTSHIFT, KEY_RIGHTSHIFT,
kbd_shift_xlate, ARRAY_SIZE(kbd_shift_xlate)) ||
input_add_table(config, KEY_LEFTCTRL, KEY_RIGHTCTRL,
kbd_ctrl_xlate, ARRAY_SIZE(kbd_ctrl_xlate))) {
debug("%s: Could not add modifier tables\n", __func__);
return -ENOSPC;
} return 0;
} diff --git a/drivers/input/tegra-kbc.c b/drivers/input/tegra-kbc.c index c9c9fac..3310f84 100644 --- a/drivers/input/tegra-kbc.c +++ b/drivers/input/tegra-kbc.c @@ -355,6 +355,7 @@ int drv_keyboard_init(void) return -1; } config.input.read_keys = tegra_kbc_check;
input_add_tables(input); memset(&dev, '\0', sizeof(dev)); strcpy(dev.name, "tegra-kbc");
diff --git a/include/input.h b/include/input.h index 7bccc8e..71f3538 100644 --- a/include/input.h +++ b/include/input.h @@ -123,6 +123,16 @@ void input_set_delays(struct input_config *config, int repeat_delay_ms, int repeat_rate_ms);
/**
- Set up the key map tables
- This must be called after input_init() or keycode decoding will not work.
- @param config Input state
- @return 0 if ok, -1 on error
- */
+int input_add_tables(struct input_config *config);
+/**
- Set up the input handler with basic key maps.
- @param config Input state
--
Regards, Bin