diff options
Diffstat (limited to 'drivers/input/keyboard')
-rw-r--r-- | drivers/input/keyboard/Kconfig | 3 | ||||
-rw-r--r-- | drivers/input/keyboard/gpio_keys.c | 13 | ||||
-rw-r--r-- | drivers/input/keyboard/gpio_keys_polled.c | 13 | ||||
-rw-r--r-- | drivers/input/keyboard/lm8323.c | 2 | ||||
-rw-r--r-- | drivers/input/keyboard/matrix_keypad.c | 8 | ||||
-rw-r--r-- | drivers/input/keyboard/spear-keyboard.c | 8 | ||||
-rw-r--r-- | drivers/input/keyboard/tc3589x-keypad.c | 8 | ||||
-rw-r--r-- | drivers/input/keyboard/tca8418_keypad.c | 2 | ||||
-rw-r--r-- | drivers/input/keyboard/tegra-kbc.c | 2 |
9 files changed, 40 insertions, 19 deletions
diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig index 992137cf3a64..ac0500667000 100644 --- a/drivers/input/keyboard/Kconfig +++ b/drivers/input/keyboard/Kconfig | |||
@@ -409,7 +409,7 @@ config KEYBOARD_NEWTON | |||
409 | 409 | ||
410 | config KEYBOARD_NOMADIK | 410 | config KEYBOARD_NOMADIK |
411 | tristate "ST-Ericsson Nomadik SKE keyboard" | 411 | tristate "ST-Ericsson Nomadik SKE keyboard" |
412 | depends on PLAT_NOMADIK | 412 | depends on (ARCH_NOMADIK || ARCH_U8500) |
413 | select INPUT_MATRIXKMAP | 413 | select INPUT_MATRIXKMAP |
414 | help | 414 | help |
415 | Say Y here if you want to use a keypad provided on the SKE controller | 415 | Say Y here if you want to use a keypad provided on the SKE controller |
@@ -554,6 +554,7 @@ config KEYBOARD_OMAP | |||
554 | 554 | ||
555 | config KEYBOARD_OMAP4 | 555 | config KEYBOARD_OMAP4 |
556 | tristate "TI OMAP4+ keypad support" | 556 | tristate "TI OMAP4+ keypad support" |
557 | depends on ARCH_OMAP2PLUS | ||
557 | select INPUT_MATRIXKMAP | 558 | select INPUT_MATRIXKMAP |
558 | help | 559 | help |
559 | Say Y here if you want to use the OMAP4+ keypad. | 560 | Say Y here if you want to use the OMAP4+ keypad. |
diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c index d327f5a2bb0e..b29ca651a395 100644 --- a/drivers/input/keyboard/gpio_keys.c +++ b/drivers/input/keyboard/gpio_keys.c | |||
@@ -602,6 +602,7 @@ gpio_keys_get_devtree_pdata(struct device *dev) | |||
602 | 602 | ||
603 | i = 0; | 603 | i = 0; |
604 | for_each_child_of_node(node, pp) { | 604 | for_each_child_of_node(node, pp) { |
605 | int gpio; | ||
605 | enum of_gpio_flags flags; | 606 | enum of_gpio_flags flags; |
606 | 607 | ||
607 | if (!of_find_property(pp, "gpios", NULL)) { | 608 | if (!of_find_property(pp, "gpios", NULL)) { |
@@ -610,9 +611,19 @@ gpio_keys_get_devtree_pdata(struct device *dev) | |||
610 | continue; | 611 | continue; |
611 | } | 612 | } |
612 | 613 | ||
614 | gpio = of_get_gpio_flags(pp, 0, &flags); | ||
615 | if (gpio < 0) { | ||
616 | error = gpio; | ||
617 | if (error != -EPROBE_DEFER) | ||
618 | dev_err(dev, | ||
619 | "Failed to get gpio flags, error: %d\n", | ||
620 | error); | ||
621 | goto err_free_pdata; | ||
622 | } | ||
623 | |||
613 | button = &pdata->buttons[i++]; | 624 | button = &pdata->buttons[i++]; |
614 | 625 | ||
615 | button->gpio = of_get_gpio_flags(pp, 0, &flags); | 626 | button->gpio = gpio; |
616 | button->active_low = flags & OF_GPIO_ACTIVE_LOW; | 627 | button->active_low = flags & OF_GPIO_ACTIVE_LOW; |
617 | 628 | ||
618 | if (of_property_read_u32(pp, "linux,code", &button->code)) { | 629 | if (of_property_read_u32(pp, "linux,code", &button->code)) { |
diff --git a/drivers/input/keyboard/gpio_keys_polled.c b/drivers/input/keyboard/gpio_keys_polled.c index f686fd970553..21147164874d 100644 --- a/drivers/input/keyboard/gpio_keys_polled.c +++ b/drivers/input/keyboard/gpio_keys_polled.c | |||
@@ -135,6 +135,7 @@ static struct gpio_keys_platform_data *gpio_keys_polled_get_devtree_pdata(struct | |||
135 | 135 | ||
136 | i = 0; | 136 | i = 0; |
137 | for_each_child_of_node(node, pp) { | 137 | for_each_child_of_node(node, pp) { |
138 | int gpio; | ||
138 | enum of_gpio_flags flags; | 139 | enum of_gpio_flags flags; |
139 | 140 | ||
140 | if (!of_find_property(pp, "gpios", NULL)) { | 141 | if (!of_find_property(pp, "gpios", NULL)) { |
@@ -143,9 +144,19 @@ static struct gpio_keys_platform_data *gpio_keys_polled_get_devtree_pdata(struct | |||
143 | continue; | 144 | continue; |
144 | } | 145 | } |
145 | 146 | ||
147 | gpio = of_get_gpio_flags(pp, 0, &flags); | ||
148 | if (gpio < 0) { | ||
149 | error = gpio; | ||
150 | if (error != -EPROBE_DEFER) | ||
151 | dev_err(dev, | ||
152 | "Failed to get gpio flags, error: %d\n", | ||
153 | error); | ||
154 | goto err_free_pdata; | ||
155 | } | ||
156 | |||
146 | button = &pdata->buttons[i++]; | 157 | button = &pdata->buttons[i++]; |
147 | 158 | ||
148 | button->gpio = of_get_gpio_flags(pp, 0, &flags); | 159 | button->gpio = gpio; |
149 | button->active_low = flags & OF_GPIO_ACTIVE_LOW; | 160 | button->active_low = flags & OF_GPIO_ACTIVE_LOW; |
150 | 161 | ||
151 | if (of_property_read_u32(pp, "linux,code", &button->code)) { | 162 | if (of_property_read_u32(pp, "linux,code", &button->code)) { |
diff --git a/drivers/input/keyboard/lm8323.c b/drivers/input/keyboard/lm8323.c index 93c812662134..0de23f41b2d3 100644 --- a/drivers/input/keyboard/lm8323.c +++ b/drivers/input/keyboard/lm8323.c | |||
@@ -398,7 +398,7 @@ static irqreturn_t lm8323_irq(int irq, void *_lm) | |||
398 | lm8323_configure(lm); | 398 | lm8323_configure(lm); |
399 | } | 399 | } |
400 | for (i = 0; i < LM8323_NUM_PWMS; i++) { | 400 | for (i = 0; i < LM8323_NUM_PWMS; i++) { |
401 | if (ints & (1 << (INT_PWM1 + i))) { | 401 | if (ints & (INT_PWM1 << i)) { |
402 | dev_vdbg(&lm->client->dev, | 402 | dev_vdbg(&lm->client->dev, |
403 | "pwm%d engine completed\n", i); | 403 | "pwm%d engine completed\n", i); |
404 | pwm_done(&lm->pwm[i]); | 404 | pwm_done(&lm->pwm[i]); |
diff --git a/drivers/input/keyboard/matrix_keypad.c b/drivers/input/keyboard/matrix_keypad.c index f4ff0dda7597..71d77192ac1e 100644 --- a/drivers/input/keyboard/matrix_keypad.c +++ b/drivers/input/keyboard/matrix_keypad.c | |||
@@ -403,7 +403,7 @@ matrix_keypad_parse_dt(struct device *dev) | |||
403 | struct matrix_keypad_platform_data *pdata; | 403 | struct matrix_keypad_platform_data *pdata; |
404 | struct device_node *np = dev->of_node; | 404 | struct device_node *np = dev->of_node; |
405 | unsigned int *gpios; | 405 | unsigned int *gpios; |
406 | int i; | 406 | int i, nrow, ncol; |
407 | 407 | ||
408 | if (!np) { | 408 | if (!np) { |
409 | dev_err(dev, "device lacks DT data\n"); | 409 | dev_err(dev, "device lacks DT data\n"); |
@@ -416,9 +416,9 @@ matrix_keypad_parse_dt(struct device *dev) | |||
416 | return ERR_PTR(-ENOMEM); | 416 | return ERR_PTR(-ENOMEM); |
417 | } | 417 | } |
418 | 418 | ||
419 | pdata->num_row_gpios = of_gpio_named_count(np, "row-gpios"); | 419 | pdata->num_row_gpios = nrow = of_gpio_named_count(np, "row-gpios"); |
420 | pdata->num_col_gpios = of_gpio_named_count(np, "col-gpios"); | 420 | pdata->num_col_gpios = ncol = of_gpio_named_count(np, "col-gpios"); |
421 | if (!pdata->num_row_gpios || !pdata->num_col_gpios) { | 421 | if (nrow <= 0 || ncol <= 0) { |
422 | dev_err(dev, "number of keypad rows/columns not specified\n"); | 422 | dev_err(dev, "number of keypad rows/columns not specified\n"); |
423 | return ERR_PTR(-EINVAL); | 423 | return ERR_PTR(-EINVAL); |
424 | } | 424 | } |
diff --git a/drivers/input/keyboard/spear-keyboard.c b/drivers/input/keyboard/spear-keyboard.c index 695d237417d6..cb1e8f614631 100644 --- a/drivers/input/keyboard/spear-keyboard.c +++ b/drivers/input/keyboard/spear-keyboard.c | |||
@@ -228,11 +228,9 @@ static int spear_kbd_probe(struct platform_device *pdev) | |||
228 | kbd->suspended_rate = pdata->suspended_rate; | 228 | kbd->suspended_rate = pdata->suspended_rate; |
229 | } | 229 | } |
230 | 230 | ||
231 | kbd->io_base = devm_request_and_ioremap(&pdev->dev, res); | 231 | kbd->io_base = devm_ioremap_resource(&pdev->dev, res); |
232 | if (!kbd->io_base) { | 232 | if (IS_ERR(kbd->io_base)) |
233 | dev_err(&pdev->dev, "request-ioremap failed for kbd_region\n"); | 233 | return PTR_ERR(kbd->io_base); |
234 | return -ENOMEM; | ||
235 | } | ||
236 | 234 | ||
237 | kbd->clk = devm_clk_get(&pdev->dev, NULL); | 235 | kbd->clk = devm_clk_get(&pdev->dev, NULL); |
238 | if (IS_ERR(kbd->clk)) | 236 | if (IS_ERR(kbd->clk)) |
diff --git a/drivers/input/keyboard/tc3589x-keypad.c b/drivers/input/keyboard/tc3589x-keypad.c index 2fb0d76a04c4..208de7cbb7fa 100644 --- a/drivers/input/keyboard/tc3589x-keypad.c +++ b/drivers/input/keyboard/tc3589x-keypad.c | |||
@@ -70,8 +70,6 @@ | |||
70 | #define TC3589x_EVT_INT_CLR 0x2 | 70 | #define TC3589x_EVT_INT_CLR 0x2 |
71 | #define TC3589x_KBD_INT_CLR 0x1 | 71 | #define TC3589x_KBD_INT_CLR 0x1 |
72 | 72 | ||
73 | #define TC3589x_KBD_KEYMAP_SIZE 64 | ||
74 | |||
75 | /** | 73 | /** |
76 | * struct tc_keypad - data structure used by keypad driver | 74 | * struct tc_keypad - data structure used by keypad driver |
77 | * @tc3589x: pointer to tc35893 | 75 | * @tc3589x: pointer to tc35893 |
@@ -88,7 +86,7 @@ struct tc_keypad { | |||
88 | const struct tc3589x_keypad_platform_data *board; | 86 | const struct tc3589x_keypad_platform_data *board; |
89 | unsigned int krow; | 87 | unsigned int krow; |
90 | unsigned int kcol; | 88 | unsigned int kcol; |
91 | unsigned short keymap[TC3589x_KBD_KEYMAP_SIZE]; | 89 | unsigned short *keymap; |
92 | bool keypad_stopped; | 90 | bool keypad_stopped; |
93 | }; | 91 | }; |
94 | 92 | ||
@@ -338,12 +336,14 @@ static int tc3589x_keypad_probe(struct platform_device *pdev) | |||
338 | 336 | ||
339 | error = matrix_keypad_build_keymap(plat->keymap_data, NULL, | 337 | error = matrix_keypad_build_keymap(plat->keymap_data, NULL, |
340 | TC3589x_MAX_KPROW, TC3589x_MAX_KPCOL, | 338 | TC3589x_MAX_KPROW, TC3589x_MAX_KPCOL, |
341 | keypad->keymap, input); | 339 | NULL, input); |
342 | if (error) { | 340 | if (error) { |
343 | dev_err(&pdev->dev, "Failed to build keymap\n"); | 341 | dev_err(&pdev->dev, "Failed to build keymap\n"); |
344 | goto err_free_mem; | 342 | goto err_free_mem; |
345 | } | 343 | } |
346 | 344 | ||
345 | keypad->keymap = input->keycode; | ||
346 | |||
347 | input_set_capability(input, EV_MSC, MSC_SCAN); | 347 | input_set_capability(input, EV_MSC, MSC_SCAN); |
348 | if (!plat->no_autorepeat) | 348 | if (!plat->no_autorepeat) |
349 | __set_bit(EV_REP, input->evbit); | 349 | __set_bit(EV_REP, input->evbit); |
diff --git a/drivers/input/keyboard/tca8418_keypad.c b/drivers/input/keyboard/tca8418_keypad.c index 50e9c5e195e1..a34cc6714e5b 100644 --- a/drivers/input/keyboard/tca8418_keypad.c +++ b/drivers/input/keyboard/tca8418_keypad.c | |||
@@ -384,7 +384,7 @@ static const struct i2c_device_id tca8418_id[] = { | |||
384 | MODULE_DEVICE_TABLE(i2c, tca8418_id); | 384 | MODULE_DEVICE_TABLE(i2c, tca8418_id); |
385 | 385 | ||
386 | #ifdef CONFIG_OF | 386 | #ifdef CONFIG_OF |
387 | static const struct of_device_id tca8418_dt_ids[] __devinitconst = { | 387 | static const struct of_device_id tca8418_dt_ids[] = { |
388 | { .compatible = "ti,tca8418", }, | 388 | { .compatible = "ti,tca8418", }, |
389 | { } | 389 | { } |
390 | }; | 390 | }; |
diff --git a/drivers/input/keyboard/tegra-kbc.c b/drivers/input/keyboard/tegra-kbc.c index d89e7d392d1e..0e138ebcc768 100644 --- a/drivers/input/keyboard/tegra-kbc.c +++ b/drivers/input/keyboard/tegra-kbc.c | |||
@@ -30,7 +30,7 @@ | |||
30 | #include <linux/clk.h> | 30 | #include <linux/clk.h> |
31 | #include <linux/slab.h> | 31 | #include <linux/slab.h> |
32 | #include <linux/input/matrix_keypad.h> | 32 | #include <linux/input/matrix_keypad.h> |
33 | #include <mach/clk.h> | 33 | #include <linux/clk/tegra.h> |
34 | 34 | ||
35 | #define KBC_MAX_GPIO 24 | 35 | #define KBC_MAX_GPIO 24 |
36 | #define KBC_MAX_KPENT 8 | 36 | #define KBC_MAX_KPENT 8 |