Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'input-for-v6.0-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input

Pull input fixes from Dmitry Torokhov:

- GT1158 ID added to Goodix touchscreen driver

- Boeder Force Feedback Wheel USB added to iforce joystick driver

- fixup for iforce driver to avoid hangups

- fix autoloading of rk805-pwrkey driver.

* tag 'input-for-v6.0-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
Input: iforce - add support for Boeder Force Feedback Wheel
Input: iforce - wake up after clearing IFORCE_XMIT_RUNNING flag
Input: goodix - add compatible string for GT1158
MAINTAINERS: add include/dt-bindings/input to INPUT DRIVERS
Input: rk805-pwrkey - fix module autoloading
Input: goodix - add support for GT1158
dt-bindings: input: touchscreen: add compatible string for Goodix GT1158

+20 -7
+1
Documentation/devicetree/bindings/input/touchscreen/goodix.yaml
··· 16 16 compatible: 17 17 enum: 18 18 - goodix,gt1151 19 + - goodix,gt1158 19 20 - goodix,gt5663 20 21 - goodix,gt5688 21 22 - goodix,gt911
+1
Documentation/input/joydev/joystick.rst
··· 517 517 * AVB Mag Turbo Force 518 518 * AVB Top Shot Pegasus 519 519 * AVB Top Shot Force Feedback Racing Wheel 520 + * Boeder Force Feedback Wheel 520 521 * Logitech WingMan Force 521 522 * Logitech WingMan Force Wheel 522 523 * Guillemot Race Leader Force Feedback
+1
MAINTAINERS
··· 10032 10032 F: Documentation/devicetree/bindings/serio/ 10033 10033 F: Documentation/input/ 10034 10034 F: drivers/input/ 10035 + F: include/dt-bindings/input/ 10035 10036 F: include/linux/input.h 10036 10037 F: include/linux/input/ 10037 10038 F: include/uapi/linux/input-event-codes.h
+1
drivers/input/joystick/iforce/iforce-main.c
··· 50 50 { 0x046d, 0xc291, "Logitech WingMan Formula Force", btn_wheel, abs_wheel, ff_iforce }, 51 51 { 0x05ef, 0x020a, "AVB Top Shot Pegasus", btn_joystick_avb, abs_avb_pegasus, ff_iforce }, 52 52 { 0x05ef, 0x8884, "AVB Mag Turbo Force", btn_wheel, abs_wheel, ff_iforce }, 53 + { 0x05ef, 0x8886, "Boeder Force Feedback Wheel", btn_wheel, abs_wheel, ff_iforce }, 53 54 { 0x05ef, 0x8888, "AVB Top Shot Force Feedback Racing Wheel", btn_wheel, abs_wheel, ff_iforce }, //? 54 55 { 0x061c, 0xc0a4, "ACT LABS Force RS", btn_wheel, abs_wheel, ff_iforce }, //? 55 56 { 0x061c, 0xc084, "ACT LABS Force RS", btn_wheel, abs_wheel, ff_iforce },
+3 -3
drivers/input/joystick/iforce/iforce-serio.c
··· 39 39 40 40 again: 41 41 if (iforce->xmit.head == iforce->xmit.tail) { 42 - clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags); 42 + iforce_clear_xmit_and_wake(iforce); 43 43 spin_unlock_irqrestore(&iforce->xmit_lock, flags); 44 44 return; 45 45 } ··· 64 64 if (test_and_clear_bit(IFORCE_XMIT_AGAIN, iforce->xmit_flags)) 65 65 goto again; 66 66 67 - clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags); 67 + iforce_clear_xmit_and_wake(iforce); 68 68 69 69 spin_unlock_irqrestore(&iforce->xmit_lock, flags); 70 70 } ··· 169 169 iforce_serio->cmd_response_len = iforce_serio->len; 170 170 171 171 /* Signal that command is done */ 172 - wake_up(&iforce->wait); 172 + wake_up_all(&iforce->wait); 173 173 } else if (likely(iforce->type)) { 174 174 iforce_process_packet(iforce, iforce_serio->id, 175 175 iforce_serio->data_in,
+4 -4
drivers/input/joystick/iforce/iforce-usb.c
··· 30 30 spin_lock_irqsave(&iforce->xmit_lock, flags); 31 31 32 32 if (iforce->xmit.head == iforce->xmit.tail) { 33 - clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags); 33 + iforce_clear_xmit_and_wake(iforce); 34 34 spin_unlock_irqrestore(&iforce->xmit_lock, flags); 35 35 return; 36 36 } ··· 58 58 XMIT_INC(iforce->xmit.tail, n); 59 59 60 60 if ( (n=usb_submit_urb(iforce_usb->out, GFP_ATOMIC)) ) { 61 - clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags); 62 61 dev_warn(&iforce_usb->intf->dev, 63 62 "usb_submit_urb failed %d\n", n); 63 + iforce_clear_xmit_and_wake(iforce); 64 64 } 65 65 66 66 /* The IFORCE_XMIT_RUNNING bit is not cleared here. That's intended. ··· 175 175 struct iforce *iforce = &iforce_usb->iforce; 176 176 177 177 if (urb->status) { 178 - clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags); 179 178 dev_dbg(&iforce_usb->intf->dev, "urb->status %d, exiting\n", 180 179 urb->status); 180 + iforce_clear_xmit_and_wake(iforce); 181 181 return; 182 182 } 183 183 184 184 __iforce_usb_xmit(iforce); 185 185 186 - wake_up(&iforce->wait); 186 + wake_up_all(&iforce->wait); 187 187 } 188 188 189 189 static int iforce_usb_probe(struct usb_interface *intf,
+6
drivers/input/joystick/iforce/iforce.h
··· 119 119 response_data, response_len); 120 120 } 121 121 122 + static inline void iforce_clear_xmit_and_wake(struct iforce *iforce) 123 + { 124 + clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags); 125 + wake_up_all(&iforce->wait); 126 + } 127 + 122 128 /* Public functions */ 123 129 /* iforce-main.c */ 124 130 int iforce_init_device(struct device *parent, u16 bustype,
+1
drivers/input/misc/rk805-pwrkey.c
··· 98 98 }; 99 99 module_platform_driver(rk805_pwrkey_driver); 100 100 101 + MODULE_ALIAS("platform:rk805-pwrkey"); 101 102 MODULE_AUTHOR("Joseph Chen <chenjh@rock-chips.com>"); 102 103 MODULE_DESCRIPTION("RK805 PMIC Power Key driver"); 103 104 MODULE_LICENSE("GPL");
+2
drivers/input/touchscreen/goodix.c
··· 95 95 96 96 static const struct goodix_chip_id goodix_chip_ids[] = { 97 97 { .id = "1151", .data = &gt1x_chip_data }, 98 + { .id = "1158", .data = &gt1x_chip_data }, 98 99 { .id = "5663", .data = &gt1x_chip_data }, 99 100 { .id = "5688", .data = &gt1x_chip_data }, 100 101 { .id = "917S", .data = &gt1x_chip_data }, ··· 1509 1508 #ifdef CONFIG_OF 1510 1509 static const struct of_device_id goodix_of_match[] = { 1511 1510 { .compatible = "goodix,gt1151" }, 1511 + { .compatible = "goodix,gt1158" }, 1512 1512 { .compatible = "goodix,gt5663" }, 1513 1513 { .compatible = "goodix,gt5688" }, 1514 1514 { .compatible = "goodix,gt911" },