Commit 627fa177a1502ad24390d945851209ac022f3a36
Exists in
master
and in
7 other branches
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: Input: usbtouchscreen - extend coordinate range for Generaltouch devices Input: polldev can cause crash in case when polling disabled
Showing 2 changed files Side-by-side Diff
drivers/input/input-polldev.c
... | ... | @@ -100,6 +100,12 @@ |
100 | 100 | struct input_polled_dev *dev = input_get_drvdata(input); |
101 | 101 | |
102 | 102 | cancel_delayed_work_sync(&dev->work); |
103 | + /* | |
104 | + * Clean up work struct to remove references to the workqueue. | |
105 | + * It may be destroyed by the next call. This causes problems | |
106 | + * at next device open-close in case of poll_interval == 0. | |
107 | + */ | |
108 | + INIT_DELAYED_WORK(&dev->work, dev->work.work.func); | |
103 | 109 | input_polldev_stop_workqueue(); |
104 | 110 | |
105 | 111 | if (dev->close) |
drivers/input/touchscreen/usbtouchscreen.c
... | ... | @@ -618,8 +618,8 @@ |
618 | 618 | #ifdef CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH |
619 | 619 | static int general_touch_read_data(struct usbtouch_usb *dev, unsigned char *pkt) |
620 | 620 | { |
621 | - dev->x = ((pkt[2] & 0x0F) << 8) | pkt[1] ; | |
622 | - dev->y = ((pkt[4] & 0x0F) << 8) | pkt[3] ; | |
621 | + dev->x = (pkt[2] << 8) | pkt[1]; | |
622 | + dev->y = (pkt[4] << 8) | pkt[3]; | |
623 | 623 | dev->press = pkt[5] & 0xff; |
624 | 624 | dev->touch = pkt[0] & 0x01; |
625 | 625 | |
626 | 626 | |
... | ... | @@ -809,9 +809,9 @@ |
809 | 809 | #ifdef CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH |
810 | 810 | [DEVTYPE_GENERAL_TOUCH] = { |
811 | 811 | .min_xc = 0x0, |
812 | - .max_xc = 0x0500, | |
812 | + .max_xc = 0x7fff, | |
813 | 813 | .min_yc = 0x0, |
814 | - .max_yc = 0x0500, | |
814 | + .max_yc = 0x7fff, | |
815 | 815 | .rept_size = 7, |
816 | 816 | .read_data = general_touch_read_data, |
817 | 817 | }, |