diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-02-10 15:21:57 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-02-10 15:21:57 -0500 |
| commit | 74c7b2af37ad431c3b69961a5cdbd0a92292c92a (patch) | |
| tree | 10ab40b1b3d8c4343d67422f1d19045e65465113 | |
| parent | 4e54169986d5197cc51ee1069922364c9a92d1be (diff) | |
| parent | ff84dabe3c6ebba517086e1161145d70ff129665 (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
Pull input updates from Dmitry Torokhov:
"Just small driver fixups"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
Input: colibri-vf50-ts - add missing #include <linux/of.h>
Input: adp5589 - fix row 5 handling for adp5589
Input: edt-ft5x06 - fix setting gain, offset, and threshold via device tree
Input: vmmouse - fix absolute device registration
Input: serio - drop warnings in case of EPROBE_DEFER from serio_find_driver()
Input: cap11xx - add missing of_node_put
Input: sirfsoc-onkey - allow modular build
Input: xpad - remove unused function
| -rw-r--r-- | drivers/input/joystick/xpad.c | 1 | ||||
| -rw-r--r-- | drivers/input/keyboard/adp5589-keys.c | 7 | ||||
| -rw-r--r-- | drivers/input/keyboard/cap11xx.c | 8 | ||||
| -rw-r--r-- | drivers/input/misc/Kconfig | 2 | ||||
| -rw-r--r-- | drivers/input/misc/sirfsoc-onkey.c | 2 | ||||
| -rw-r--r-- | drivers/input/mouse/vmmouse.c | 13 | ||||
| -rw-r--r-- | drivers/input/serio/serio.c | 2 | ||||
| -rw-r--r-- | drivers/input/touchscreen/colibri-vf50-ts.c | 1 | ||||
| -rw-r--r-- | drivers/input/touchscreen/edt-ft5x06.c | 18 |
9 files changed, 33 insertions, 21 deletions
diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c index 6727954ab74b..e8a84d12b7ff 100644 --- a/drivers/input/joystick/xpad.c +++ b/drivers/input/joystick/xpad.c | |||
| @@ -1207,7 +1207,6 @@ static void xpad_led_disconnect(struct usb_xpad *xpad) | |||
| 1207 | #else | 1207 | #else |
| 1208 | static int xpad_led_probe(struct usb_xpad *xpad) { return 0; } | 1208 | static int xpad_led_probe(struct usb_xpad *xpad) { return 0; } |
| 1209 | static void xpad_led_disconnect(struct usb_xpad *xpad) { } | 1209 | static void xpad_led_disconnect(struct usb_xpad *xpad) { } |
| 1210 | static void xpad_identify_controller(struct usb_xpad *xpad) { } | ||
| 1211 | #endif | 1210 | #endif |
| 1212 | 1211 | ||
| 1213 | static int xpad_start_input(struct usb_xpad *xpad) | 1212 | static int xpad_start_input(struct usb_xpad *xpad) |
diff --git a/drivers/input/keyboard/adp5589-keys.c b/drivers/input/keyboard/adp5589-keys.c index 4d446d5085aa..c01a1d648f9f 100644 --- a/drivers/input/keyboard/adp5589-keys.c +++ b/drivers/input/keyboard/adp5589-keys.c | |||
| @@ -235,7 +235,7 @@ struct adp5589_kpad { | |||
| 235 | unsigned short gpimapsize; | 235 | unsigned short gpimapsize; |
| 236 | unsigned extend_cfg; | 236 | unsigned extend_cfg; |
| 237 | bool is_adp5585; | 237 | bool is_adp5585; |
| 238 | bool adp5585_support_row5; | 238 | bool support_row5; |
| 239 | #ifdef CONFIG_GPIOLIB | 239 | #ifdef CONFIG_GPIOLIB |
| 240 | unsigned char gpiomap[ADP5589_MAXGPIO]; | 240 | unsigned char gpiomap[ADP5589_MAXGPIO]; |
| 241 | bool export_gpio; | 241 | bool export_gpio; |
| @@ -485,7 +485,7 @@ static int adp5589_build_gpiomap(struct adp5589_kpad *kpad, | |||
| 485 | if (kpad->extend_cfg & C4_EXTEND_CFG) | 485 | if (kpad->extend_cfg & C4_EXTEND_CFG) |
| 486 | pin_used[kpad->var->c4_extend_cfg] = true; | 486 | pin_used[kpad->var->c4_extend_cfg] = true; |
| 487 | 487 | ||
| 488 | if (!kpad->adp5585_support_row5) | 488 | if (!kpad->support_row5) |
| 489 | pin_used[5] = true; | 489 | pin_used[5] = true; |
| 490 | 490 | ||
| 491 | for (i = 0; i < kpad->var->maxgpio; i++) | 491 | for (i = 0; i < kpad->var->maxgpio; i++) |
| @@ -884,12 +884,13 @@ static int adp5589_probe(struct i2c_client *client, | |||
| 884 | 884 | ||
| 885 | switch (id->driver_data) { | 885 | switch (id->driver_data) { |
| 886 | case ADP5585_02: | 886 | case ADP5585_02: |
| 887 | kpad->adp5585_support_row5 = true; | 887 | kpad->support_row5 = true; |
| 888 | case ADP5585_01: | 888 | case ADP5585_01: |
| 889 | kpad->is_adp5585 = true; | 889 | kpad->is_adp5585 = true; |
| 890 | kpad->var = &const_adp5585; | 890 | kpad->var = &const_adp5585; |
| 891 | break; | 891 | break; |
| 892 | case ADP5589: | 892 | case ADP5589: |
| 893 | kpad->support_row5 = true; | ||
| 893 | kpad->var = &const_adp5589; | 894 | kpad->var = &const_adp5589; |
| 894 | break; | 895 | break; |
| 895 | } | 896 | } |
diff --git a/drivers/input/keyboard/cap11xx.c b/drivers/input/keyboard/cap11xx.c index 378db10001df..4401be225d64 100644 --- a/drivers/input/keyboard/cap11xx.c +++ b/drivers/input/keyboard/cap11xx.c | |||
| @@ -304,8 +304,10 @@ static int cap11xx_init_leds(struct device *dev, | |||
| 304 | led->cdev.brightness = LED_OFF; | 304 | led->cdev.brightness = LED_OFF; |
| 305 | 305 | ||
| 306 | error = of_property_read_u32(child, "reg", ®); | 306 | error = of_property_read_u32(child, "reg", ®); |
| 307 | if (error != 0 || reg >= num_leds) | 307 | if (error != 0 || reg >= num_leds) { |
| 308 | of_node_put(child); | ||
| 308 | return -EINVAL; | 309 | return -EINVAL; |
| 310 | } | ||
| 309 | 311 | ||
| 310 | led->reg = reg; | 312 | led->reg = reg; |
| 311 | led->priv = priv; | 313 | led->priv = priv; |
| @@ -313,8 +315,10 @@ static int cap11xx_init_leds(struct device *dev, | |||
| 313 | INIT_WORK(&led->work, cap11xx_led_work); | 315 | INIT_WORK(&led->work, cap11xx_led_work); |
| 314 | 316 | ||
| 315 | error = devm_led_classdev_register(dev, &led->cdev); | 317 | error = devm_led_classdev_register(dev, &led->cdev); |
| 316 | if (error) | 318 | if (error) { |
| 319 | of_node_put(child); | ||
| 317 | return error; | 320 | return error; |
| 321 | } | ||
| 318 | 322 | ||
| 319 | priv->num_leds++; | 323 | priv->num_leds++; |
| 320 | led++; | 324 | led++; |
diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig index d6d16fa78281..1f2337abcf2f 100644 --- a/drivers/input/misc/Kconfig +++ b/drivers/input/misc/Kconfig | |||
| @@ -733,7 +733,7 @@ config INPUT_XEN_KBDDEV_FRONTEND | |||
| 733 | module will be called xen-kbdfront. | 733 | module will be called xen-kbdfront. |
| 734 | 734 | ||
| 735 | config INPUT_SIRFSOC_ONKEY | 735 | config INPUT_SIRFSOC_ONKEY |
| 736 | bool "CSR SiRFSoC power on/off/suspend key support" | 736 | tristate "CSR SiRFSoC power on/off/suspend key support" |
| 737 | depends on ARCH_SIRF && OF | 737 | depends on ARCH_SIRF && OF |
| 738 | default y | 738 | default y |
| 739 | help | 739 | help |
diff --git a/drivers/input/misc/sirfsoc-onkey.c b/drivers/input/misc/sirfsoc-onkey.c index 9d5b89befe6f..ed7237f19539 100644 --- a/drivers/input/misc/sirfsoc-onkey.c +++ b/drivers/input/misc/sirfsoc-onkey.c | |||
| @@ -101,7 +101,7 @@ static void sirfsoc_pwrc_close(struct input_dev *input) | |||
| 101 | static const struct of_device_id sirfsoc_pwrc_of_match[] = { | 101 | static const struct of_device_id sirfsoc_pwrc_of_match[] = { |
| 102 | { .compatible = "sirf,prima2-pwrc" }, | 102 | { .compatible = "sirf,prima2-pwrc" }, |
| 103 | {}, | 103 | {}, |
| 104 | } | 104 | }; |
| 105 | MODULE_DEVICE_TABLE(of, sirfsoc_pwrc_of_match); | 105 | MODULE_DEVICE_TABLE(of, sirfsoc_pwrc_of_match); |
| 106 | 106 | ||
| 107 | static int sirfsoc_pwrc_probe(struct platform_device *pdev) | 107 | static int sirfsoc_pwrc_probe(struct platform_device *pdev) |
diff --git a/drivers/input/mouse/vmmouse.c b/drivers/input/mouse/vmmouse.c index e272f06258ce..a3f0f5a47490 100644 --- a/drivers/input/mouse/vmmouse.c +++ b/drivers/input/mouse/vmmouse.c | |||
| @@ -458,8 +458,6 @@ int vmmouse_init(struct psmouse *psmouse) | |||
| 458 | priv->abs_dev = abs_dev; | 458 | priv->abs_dev = abs_dev; |
| 459 | psmouse->private = priv; | 459 | psmouse->private = priv; |
| 460 | 460 | ||
| 461 | input_set_capability(rel_dev, EV_REL, REL_WHEEL); | ||
| 462 | |||
| 463 | /* Set up and register absolute device */ | 461 | /* Set up and register absolute device */ |
| 464 | snprintf(priv->phys, sizeof(priv->phys), "%s/input1", | 462 | snprintf(priv->phys, sizeof(priv->phys), "%s/input1", |
| 465 | psmouse->ps2dev.serio->phys); | 463 | psmouse->ps2dev.serio->phys); |
| @@ -475,10 +473,6 @@ int vmmouse_init(struct psmouse *psmouse) | |||
| 475 | abs_dev->id.version = psmouse->model; | 473 | abs_dev->id.version = psmouse->model; |
| 476 | abs_dev->dev.parent = &psmouse->ps2dev.serio->dev; | 474 | abs_dev->dev.parent = &psmouse->ps2dev.serio->dev; |
| 477 | 475 | ||
| 478 | error = input_register_device(priv->abs_dev); | ||
| 479 | if (error) | ||
| 480 | goto init_fail; | ||
| 481 | |||
| 482 | /* Set absolute device capabilities */ | 476 | /* Set absolute device capabilities */ |
| 483 | input_set_capability(abs_dev, EV_KEY, BTN_LEFT); | 477 | input_set_capability(abs_dev, EV_KEY, BTN_LEFT); |
| 484 | input_set_capability(abs_dev, EV_KEY, BTN_RIGHT); | 478 | input_set_capability(abs_dev, EV_KEY, BTN_RIGHT); |
| @@ -488,6 +482,13 @@ int vmmouse_init(struct psmouse *psmouse) | |||
| 488 | input_set_abs_params(abs_dev, ABS_X, 0, VMMOUSE_MAX_X, 0, 0); | 482 | input_set_abs_params(abs_dev, ABS_X, 0, VMMOUSE_MAX_X, 0, 0); |
| 489 | input_set_abs_params(abs_dev, ABS_Y, 0, VMMOUSE_MAX_Y, 0, 0); | 483 | input_set_abs_params(abs_dev, ABS_Y, 0, VMMOUSE_MAX_Y, 0, 0); |
| 490 | 484 | ||
| 485 | error = input_register_device(priv->abs_dev); | ||
| 486 | if (error) | ||
| 487 | goto init_fail; | ||
| 488 | |||
| 489 | /* Add wheel capability to the relative device */ | ||
| 490 | input_set_capability(rel_dev, EV_REL, REL_WHEEL); | ||
| 491 | |||
| 491 | psmouse->protocol_handler = vmmouse_process_byte; | 492 | psmouse->protocol_handler = vmmouse_process_byte; |
| 492 | psmouse->disconnect = vmmouse_disconnect; | 493 | psmouse->disconnect = vmmouse_disconnect; |
| 493 | psmouse->reconnect = vmmouse_reconnect; | 494 | psmouse->reconnect = vmmouse_reconnect; |
diff --git a/drivers/input/serio/serio.c b/drivers/input/serio/serio.c index 8f828975ab10..1ca7f551e2da 100644 --- a/drivers/input/serio/serio.c +++ b/drivers/input/serio/serio.c | |||
| @@ -134,7 +134,7 @@ static void serio_find_driver(struct serio *serio) | |||
| 134 | int error; | 134 | int error; |
| 135 | 135 | ||
| 136 | error = device_attach(&serio->dev); | 136 | error = device_attach(&serio->dev); |
| 137 | if (error < 0) | 137 | if (error < 0 && error != -EPROBE_DEFER) |
| 138 | dev_warn(&serio->dev, | 138 | dev_warn(&serio->dev, |
| 139 | "device_attach() failed for %s (%s), error: %d\n", | 139 | "device_attach() failed for %s (%s), error: %d\n", |
| 140 | serio->phys, serio->name, error); | 140 | serio->phys, serio->name, error); |
diff --git a/drivers/input/touchscreen/colibri-vf50-ts.c b/drivers/input/touchscreen/colibri-vf50-ts.c index 5d4903a402cc..69828d015d45 100644 --- a/drivers/input/touchscreen/colibri-vf50-ts.c +++ b/drivers/input/touchscreen/colibri-vf50-ts.c | |||
| @@ -21,6 +21,7 @@ | |||
| 21 | #include <linux/interrupt.h> | 21 | #include <linux/interrupt.h> |
| 22 | #include <linux/kernel.h> | 22 | #include <linux/kernel.h> |
| 23 | #include <linux/module.h> | 23 | #include <linux/module.h> |
| 24 | #include <linux/of.h> | ||
| 24 | #include <linux/pinctrl/consumer.h> | 25 | #include <linux/pinctrl/consumer.h> |
| 25 | #include <linux/platform_device.h> | 26 | #include <linux/platform_device.h> |
| 26 | #include <linux/slab.h> | 27 | #include <linux/slab.h> |
diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c index 0b0f8c17f3f7..23fbe382da8b 100644 --- a/drivers/input/touchscreen/edt-ft5x06.c +++ b/drivers/input/touchscreen/edt-ft5x06.c | |||
| @@ -822,16 +822,22 @@ static void edt_ft5x06_ts_get_defaults(struct device *dev, | |||
| 822 | int error; | 822 | int error; |
| 823 | 823 | ||
| 824 | error = device_property_read_u32(dev, "threshold", &val); | 824 | error = device_property_read_u32(dev, "threshold", &val); |
| 825 | if (!error) | 825 | if (!error) { |
| 826 | reg_addr->reg_threshold = val; | 826 | edt_ft5x06_register_write(tsdata, reg_addr->reg_threshold, val); |
| 827 | tsdata->threshold = val; | ||
| 828 | } | ||
| 827 | 829 | ||
| 828 | error = device_property_read_u32(dev, "gain", &val); | 830 | error = device_property_read_u32(dev, "gain", &val); |
| 829 | if (!error) | 831 | if (!error) { |
| 830 | reg_addr->reg_gain = val; | 832 | edt_ft5x06_register_write(tsdata, reg_addr->reg_gain, val); |
| 833 | tsdata->gain = val; | ||
| 834 | } | ||
| 831 | 835 | ||
| 832 | error = device_property_read_u32(dev, "offset", &val); | 836 | error = device_property_read_u32(dev, "offset", &val); |
| 833 | if (!error) | 837 | if (!error) { |
| 834 | reg_addr->reg_offset = val; | 838 | edt_ft5x06_register_write(tsdata, reg_addr->reg_offset, val); |
| 839 | tsdata->offset = val; | ||
| 840 | } | ||
| 835 | } | 841 | } |
| 836 | 842 | ||
| 837 | static void | 843 | static void |
