diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-07-23 18:42:53 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-07-23 18:42:53 -0400 |
| commit | b292d6b5c4220d527c92316c0d11d16e9895f07e (patch) | |
| tree | da823cb677507c313643886b45dc3d03827c9d96 /drivers | |
| parent | 7442cf9ac2de31b33311209476cd81398d3863cf (diff) | |
| parent | f62d14a8072b9756db36ba394e2b267470a40240 (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
Pull input layer fixes from Dmitry Torokhov:
"A few fixups for the input subsystem"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
Input: document INPUT_PROP_TOPBUTTONPAD
Input: fix defuzzing logic
Input: sirfsoc-onkey - fix GPL v2 license string typo
Input: st-keyscan - fix 'defined but not used' compiler warnings
Input: synaptics - add min/max quirk for pnp-id LEN2002 (Edge E531)
Input: i8042 - add Acer Aspire 5710 to nomux blacklist
Input: ti_am335x_tsc - warn about incorrect spelling
Input: wacom - cleanup multitouch code when touch_max is 2
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/input/input.c | 6 | ||||
| -rw-r--r-- | drivers/input/keyboard/st-keyscan.c | 2 | ||||
| -rw-r--r-- | drivers/input/misc/sirfsoc-onkey.c | 2 | ||||
| -rw-r--r-- | drivers/input/mouse/synaptics.c | 5 | ||||
| -rw-r--r-- | drivers/input/serio/i8042-x86ia64io.h | 7 | ||||
| -rw-r--r-- | drivers/input/tablet/wacom_wac.c | 28 | ||||
| -rw-r--r-- | drivers/input/touchscreen/ti_am335x_tsc.c | 5 |
7 files changed, 28 insertions, 27 deletions
diff --git a/drivers/input/input.c b/drivers/input/input.c index 1c4c0db05550..29ca0bb4f561 100644 --- a/drivers/input/input.c +++ b/drivers/input/input.c | |||
| @@ -257,9 +257,10 @@ static int input_handle_abs_event(struct input_dev *dev, | |||
| 257 | } | 257 | } |
| 258 | 258 | ||
| 259 | static int input_get_disposition(struct input_dev *dev, | 259 | static int input_get_disposition(struct input_dev *dev, |
| 260 | unsigned int type, unsigned int code, int value) | 260 | unsigned int type, unsigned int code, int *pval) |
| 261 | { | 261 | { |
| 262 | int disposition = INPUT_IGNORE_EVENT; | 262 | int disposition = INPUT_IGNORE_EVENT; |
| 263 | int value = *pval; | ||
| 263 | 264 | ||
| 264 | switch (type) { | 265 | switch (type) { |
| 265 | 266 | ||
| @@ -357,6 +358,7 @@ static int input_get_disposition(struct input_dev *dev, | |||
| 357 | break; | 358 | break; |
| 358 | } | 359 | } |
| 359 | 360 | ||
| 361 | *pval = value; | ||
| 360 | return disposition; | 362 | return disposition; |
| 361 | } | 363 | } |
| 362 | 364 | ||
| @@ -365,7 +367,7 @@ static void input_handle_event(struct input_dev *dev, | |||
| 365 | { | 367 | { |
| 366 | int disposition; | 368 | int disposition; |
| 367 | 369 | ||
| 368 | disposition = input_get_disposition(dev, type, code, value); | 370 | disposition = input_get_disposition(dev, type, code, &value); |
| 369 | 371 | ||
| 370 | if ((disposition & INPUT_PASS_TO_DEVICE) && dev->event) | 372 | if ((disposition & INPUT_PASS_TO_DEVICE) && dev->event) |
| 371 | dev->event(dev, type, code, value); | 373 | dev->event(dev, type, code, value); |
diff --git a/drivers/input/keyboard/st-keyscan.c b/drivers/input/keyboard/st-keyscan.c index 758b48731415..de7be4f03d91 100644 --- a/drivers/input/keyboard/st-keyscan.c +++ b/drivers/input/keyboard/st-keyscan.c | |||
| @@ -215,6 +215,7 @@ static int keyscan_probe(struct platform_device *pdev) | |||
| 215 | return 0; | 215 | return 0; |
| 216 | } | 216 | } |
| 217 | 217 | ||
| 218 | #ifdef CONFIG_PM_SLEEP | ||
| 218 | static int keyscan_suspend(struct device *dev) | 219 | static int keyscan_suspend(struct device *dev) |
| 219 | { | 220 | { |
| 220 | struct platform_device *pdev = to_platform_device(dev); | 221 | struct platform_device *pdev = to_platform_device(dev); |
| @@ -249,6 +250,7 @@ static int keyscan_resume(struct device *dev) | |||
| 249 | mutex_unlock(&input->mutex); | 250 | mutex_unlock(&input->mutex); |
| 250 | return retval; | 251 | return retval; |
| 251 | } | 252 | } |
| 253 | #endif | ||
| 252 | 254 | ||
| 253 | static SIMPLE_DEV_PM_OPS(keyscan_dev_pm_ops, keyscan_suspend, keyscan_resume); | 255 | static SIMPLE_DEV_PM_OPS(keyscan_dev_pm_ops, keyscan_suspend, keyscan_resume); |
| 254 | 256 | ||
diff --git a/drivers/input/misc/sirfsoc-onkey.c b/drivers/input/misc/sirfsoc-onkey.c index e4104f9b2e6d..fed5102e1802 100644 --- a/drivers/input/misc/sirfsoc-onkey.c +++ b/drivers/input/misc/sirfsoc-onkey.c | |||
| @@ -213,7 +213,7 @@ static struct platform_driver sirfsoc_pwrc_driver = { | |||
| 213 | 213 | ||
| 214 | module_platform_driver(sirfsoc_pwrc_driver); | 214 | module_platform_driver(sirfsoc_pwrc_driver); |
| 215 | 215 | ||
| 216 | MODULE_LICENSE("GPLv2"); | 216 | MODULE_LICENSE("GPL v2"); |
| 217 | MODULE_AUTHOR("Binghua Duan <Binghua.Duan@csr.com>, Xianglong Du <Xianglong.Du@csr.com>"); | 217 | MODULE_AUTHOR("Binghua Duan <Binghua.Duan@csr.com>, Xianglong Du <Xianglong.Du@csr.com>"); |
| 218 | MODULE_DESCRIPTION("CSR Prima2 PWRC Driver"); | 218 | MODULE_DESCRIPTION("CSR Prima2 PWRC Driver"); |
| 219 | MODULE_ALIAS("platform:sirfsoc-pwrc"); | 219 | MODULE_ALIAS("platform:sirfsoc-pwrc"); |
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c index ec772d962f06..ef9e0b8a9aa7 100644 --- a/drivers/input/mouse/synaptics.c +++ b/drivers/input/mouse/synaptics.c | |||
| @@ -132,7 +132,8 @@ static const struct min_max_quirk min_max_pnpid_table[] = { | |||
| 132 | 1232, 5710, 1156, 4696 | 132 | 1232, 5710, 1156, 4696 |
| 133 | }, | 133 | }, |
| 134 | { | 134 | { |
| 135 | (const char * const []){"LEN0034", "LEN0036", "LEN2004", NULL}, | 135 | (const char * const []){"LEN0034", "LEN0036", "LEN2002", |
| 136 | "LEN2004", NULL}, | ||
| 136 | 1024, 5112, 2024, 4832 | 137 | 1024, 5112, 2024, 4832 |
| 137 | }, | 138 | }, |
| 138 | { | 139 | { |
| @@ -168,7 +169,7 @@ static const char * const topbuttonpad_pnp_ids[] = { | |||
| 168 | "LEN0049", | 169 | "LEN0049", |
| 169 | "LEN2000", | 170 | "LEN2000", |
| 170 | "LEN2001", /* Edge E431 */ | 171 | "LEN2001", /* Edge E431 */ |
| 171 | "LEN2002", | 172 | "LEN2002", /* Edge E531 */ |
| 172 | "LEN2003", | 173 | "LEN2003", |
| 173 | "LEN2004", /* L440 */ | 174 | "LEN2004", /* L440 */ |
| 174 | "LEN2005", | 175 | "LEN2005", |
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h index 381b20d4c561..136b7b204f56 100644 --- a/drivers/input/serio/i8042-x86ia64io.h +++ b/drivers/input/serio/i8042-x86ia64io.h | |||
| @@ -402,6 +402,13 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = { | |||
| 402 | }, | 402 | }, |
| 403 | }, | 403 | }, |
| 404 | { | 404 | { |
| 405 | /* Acer Aspire 5710 */ | ||
| 406 | .matches = { | ||
| 407 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), | ||
| 408 | DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5710"), | ||
| 409 | }, | ||
| 410 | }, | ||
| 411 | { | ||
| 405 | /* Gericom Bellagio */ | 412 | /* Gericom Bellagio */ |
| 406 | .matches = { | 413 | .matches = { |
| 407 | DMI_MATCH(DMI_SYS_VENDOR, "Gericom"), | 414 | DMI_MATCH(DMI_SYS_VENDOR, "Gericom"), |
diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c index 977d05cd9e2e..e73cf2c71f35 100644 --- a/drivers/input/tablet/wacom_wac.c +++ b/drivers/input/tablet/wacom_wac.c | |||
| @@ -1217,9 +1217,9 @@ static void wacom_bpt3_touch_msg(struct wacom_wac *wacom, unsigned char *data) | |||
| 1217 | * a=(pi*r^2)/C. | 1217 | * a=(pi*r^2)/C. |
| 1218 | */ | 1218 | */ |
| 1219 | int a = data[5]; | 1219 | int a = data[5]; |
| 1220 | int x_res = input_abs_get_res(input, ABS_X); | 1220 | int x_res = input_abs_get_res(input, ABS_MT_POSITION_X); |
| 1221 | int y_res = input_abs_get_res(input, ABS_Y); | 1221 | int y_res = input_abs_get_res(input, ABS_MT_POSITION_Y); |
| 1222 | width = 2 * int_sqrt(a * WACOM_CONTACT_AREA_SCALE); | 1222 | width = 2 * int_sqrt(a * WACOM_CONTACT_AREA_SCALE); |
| 1223 | height = width * y_res / x_res; | 1223 | height = width * y_res / x_res; |
| 1224 | } | 1224 | } |
| 1225 | 1225 | ||
| @@ -1587,7 +1587,7 @@ static void wacom_abs_set_axis(struct input_dev *input_dev, | |||
| 1587 | input_abs_set_res(input_dev, ABS_X, features->x_resolution); | 1587 | input_abs_set_res(input_dev, ABS_X, features->x_resolution); |
| 1588 | input_abs_set_res(input_dev, ABS_Y, features->y_resolution); | 1588 | input_abs_set_res(input_dev, ABS_Y, features->y_resolution); |
| 1589 | } else { | 1589 | } else { |
| 1590 | if (features->touch_max <= 2) { | 1590 | if (features->touch_max == 1) { |
| 1591 | input_set_abs_params(input_dev, ABS_X, 0, | 1591 | input_set_abs_params(input_dev, ABS_X, 0, |
| 1592 | features->x_max, features->x_fuzz, 0); | 1592 | features->x_max, features->x_fuzz, 0); |
| 1593 | input_set_abs_params(input_dev, ABS_Y, 0, | 1593 | input_set_abs_params(input_dev, ABS_Y, 0, |
| @@ -1815,14 +1815,8 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev, | |||
| 1815 | case MTTPC: | 1815 | case MTTPC: |
| 1816 | case MTTPC_B: | 1816 | case MTTPC_B: |
| 1817 | case TABLETPC2FG: | 1817 | case TABLETPC2FG: |
| 1818 | if (features->device_type == BTN_TOOL_FINGER) { | 1818 | if (features->device_type == BTN_TOOL_FINGER && features->touch_max > 1) |
| 1819 | unsigned int flags = INPUT_MT_DIRECT; | 1819 | input_mt_init_slots(input_dev, features->touch_max, INPUT_MT_DIRECT); |
| 1820 | |||
| 1821 | if (wacom_wac->features.type == TABLETPC2FG) | ||
| 1822 | flags = 0; | ||
| 1823 | |||
| 1824 | input_mt_init_slots(input_dev, features->touch_max, flags); | ||
| 1825 | } | ||
| 1826 | /* fall through */ | 1820 | /* fall through */ |
| 1827 | 1821 | ||
| 1828 | case TABLETPC: | 1822 | case TABLETPC: |
| @@ -1883,10 +1877,6 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev, | |||
| 1883 | __set_bit(BTN_RIGHT, input_dev->keybit); | 1877 | __set_bit(BTN_RIGHT, input_dev->keybit); |
| 1884 | 1878 | ||
| 1885 | if (features->touch_max) { | 1879 | if (features->touch_max) { |
| 1886 | /* touch interface */ | ||
| 1887 | unsigned int flags = INPUT_MT_POINTER; | ||
| 1888 | |||
| 1889 | __set_bit(INPUT_PROP_POINTER, input_dev->propbit); | ||
| 1890 | if (features->pktlen == WACOM_PKGLEN_BBTOUCH3) { | 1880 | if (features->pktlen == WACOM_PKGLEN_BBTOUCH3) { |
| 1891 | input_set_abs_params(input_dev, | 1881 | input_set_abs_params(input_dev, |
| 1892 | ABS_MT_TOUCH_MAJOR, | 1882 | ABS_MT_TOUCH_MAJOR, |
| @@ -1894,12 +1884,8 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev, | |||
| 1894 | input_set_abs_params(input_dev, | 1884 | input_set_abs_params(input_dev, |
| 1895 | ABS_MT_TOUCH_MINOR, | 1885 | ABS_MT_TOUCH_MINOR, |
| 1896 | 0, features->y_max, 0, 0); | 1886 | 0, features->y_max, 0, 0); |
| 1897 | } else { | ||
| 1898 | __set_bit(BTN_TOOL_FINGER, input_dev->keybit); | ||
| 1899 | __set_bit(BTN_TOOL_DOUBLETAP, input_dev->keybit); | ||
| 1900 | flags = 0; | ||
| 1901 | } | 1887 | } |
| 1902 | input_mt_init_slots(input_dev, features->touch_max, flags); | 1888 | input_mt_init_slots(input_dev, features->touch_max, INPUT_MT_POINTER); |
| 1903 | } else { | 1889 | } else { |
| 1904 | /* buttons/keys only interface */ | 1890 | /* buttons/keys only interface */ |
| 1905 | __clear_bit(ABS_X, input_dev->absbit); | 1891 | __clear_bit(ABS_X, input_dev->absbit); |
diff --git a/drivers/input/touchscreen/ti_am335x_tsc.c b/drivers/input/touchscreen/ti_am335x_tsc.c index 4e793a17361f..2ce649520fe0 100644 --- a/drivers/input/touchscreen/ti_am335x_tsc.c +++ b/drivers/input/touchscreen/ti_am335x_tsc.c | |||
| @@ -359,9 +359,12 @@ static int titsc_parse_dt(struct platform_device *pdev, | |||
| 359 | */ | 359 | */ |
| 360 | err = of_property_read_u32(node, "ti,coordinate-readouts", | 360 | err = of_property_read_u32(node, "ti,coordinate-readouts", |
| 361 | &ts_dev->coordinate_readouts); | 361 | &ts_dev->coordinate_readouts); |
| 362 | if (err < 0) | 362 | if (err < 0) { |
| 363 | dev_warn(&pdev->dev, "please use 'ti,coordinate-readouts' instead\n"); | ||
| 363 | err = of_property_read_u32(node, "ti,coordiante-readouts", | 364 | err = of_property_read_u32(node, "ti,coordiante-readouts", |
| 364 | &ts_dev->coordinate_readouts); | 365 | &ts_dev->coordinate_readouts); |
| 366 | } | ||
| 367 | |||
| 365 | if (err < 0) | 368 | if (err < 0) |
| 366 | return err; | 369 | return err; |
| 367 | 370 | ||
