Input updates for v6.0-rc3
- 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. -----BEGIN PGP SIGNATURE----- iHUEABYIAB0WIQST2eWILY88ieB2DOtAj56VGEWXnAUCYxOy5gAKCRBAj56VGEWX nHe9AQDPTQk4YTBis6QJ6eVd/qnwiBiitKXkmQAKFliJFxrYAQEAs/ykRS3O0DPx ptGEH2IGnjKSdtVBbfEMUllo52XohQQ= =t3iB -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
6433fe06f6
|
@ -16,6 +16,7 @@ properties:
|
|||
compatible:
|
||||
enum:
|
||||
- goodix,gt1151
|
||||
- goodix,gt1158
|
||||
- goodix,gt5663
|
||||
- goodix,gt5688
|
||||
- goodix,gt911
|
||||
|
|
|
@ -517,6 +517,7 @@ All I-Force devices are supported by the iforce module. This includes:
|
|||
* AVB Mag Turbo Force
|
||||
* AVB Top Shot Pegasus
|
||||
* AVB Top Shot Force Feedback Racing Wheel
|
||||
* Boeder Force Feedback Wheel
|
||||
* Logitech WingMan Force
|
||||
* Logitech WingMan Force Wheel
|
||||
* Guillemot Race Leader Force Feedback
|
||||
|
|
|
@ -10032,6 +10032,7 @@ F: Documentation/devicetree/bindings/input/
|
|||
F: Documentation/devicetree/bindings/serio/
|
||||
F: Documentation/input/
|
||||
F: drivers/input/
|
||||
F: include/dt-bindings/input/
|
||||
F: include/linux/input.h
|
||||
F: include/linux/input/
|
||||
F: include/uapi/linux/input-event-codes.h
|
||||
|
|
|
@ -50,6 +50,7 @@ static struct iforce_device iforce_device[] = {
|
|||
{ 0x046d, 0xc291, "Logitech WingMan Formula Force", btn_wheel, abs_wheel, ff_iforce },
|
||||
{ 0x05ef, 0x020a, "AVB Top Shot Pegasus", btn_joystick_avb, abs_avb_pegasus, ff_iforce },
|
||||
{ 0x05ef, 0x8884, "AVB Mag Turbo Force", btn_wheel, abs_wheel, ff_iforce },
|
||||
{ 0x05ef, 0x8886, "Boeder Force Feedback Wheel", btn_wheel, abs_wheel, ff_iforce },
|
||||
{ 0x05ef, 0x8888, "AVB Top Shot Force Feedback Racing Wheel", btn_wheel, abs_wheel, ff_iforce }, //?
|
||||
{ 0x061c, 0xc0a4, "ACT LABS Force RS", btn_wheel, abs_wheel, ff_iforce }, //?
|
||||
{ 0x061c, 0xc084, "ACT LABS Force RS", btn_wheel, abs_wheel, ff_iforce },
|
||||
|
|
|
@ -39,7 +39,7 @@ static void iforce_serio_xmit(struct iforce *iforce)
|
|||
|
||||
again:
|
||||
if (iforce->xmit.head == iforce->xmit.tail) {
|
||||
clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags);
|
||||
iforce_clear_xmit_and_wake(iforce);
|
||||
spin_unlock_irqrestore(&iforce->xmit_lock, flags);
|
||||
return;
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ again:
|
|||
if (test_and_clear_bit(IFORCE_XMIT_AGAIN, iforce->xmit_flags))
|
||||
goto again;
|
||||
|
||||
clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags);
|
||||
iforce_clear_xmit_and_wake(iforce);
|
||||
|
||||
spin_unlock_irqrestore(&iforce->xmit_lock, flags);
|
||||
}
|
||||
|
@ -169,7 +169,7 @@ static irqreturn_t iforce_serio_irq(struct serio *serio,
|
|||
iforce_serio->cmd_response_len = iforce_serio->len;
|
||||
|
||||
/* Signal that command is done */
|
||||
wake_up(&iforce->wait);
|
||||
wake_up_all(&iforce->wait);
|
||||
} else if (likely(iforce->type)) {
|
||||
iforce_process_packet(iforce, iforce_serio->id,
|
||||
iforce_serio->data_in,
|
||||
|
|
|
@ -30,7 +30,7 @@ static void __iforce_usb_xmit(struct iforce *iforce)
|
|||
spin_lock_irqsave(&iforce->xmit_lock, flags);
|
||||
|
||||
if (iforce->xmit.head == iforce->xmit.tail) {
|
||||
clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags);
|
||||
iforce_clear_xmit_and_wake(iforce);
|
||||
spin_unlock_irqrestore(&iforce->xmit_lock, flags);
|
||||
return;
|
||||
}
|
||||
|
@ -58,9 +58,9 @@ static void __iforce_usb_xmit(struct iforce *iforce)
|
|||
XMIT_INC(iforce->xmit.tail, n);
|
||||
|
||||
if ( (n=usb_submit_urb(iforce_usb->out, GFP_ATOMIC)) ) {
|
||||
clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags);
|
||||
dev_warn(&iforce_usb->intf->dev,
|
||||
"usb_submit_urb failed %d\n", n);
|
||||
iforce_clear_xmit_and_wake(iforce);
|
||||
}
|
||||
|
||||
/* The IFORCE_XMIT_RUNNING bit is not cleared here. That's intended.
|
||||
|
@ -175,15 +175,15 @@ static void iforce_usb_out(struct urb *urb)
|
|||
struct iforce *iforce = &iforce_usb->iforce;
|
||||
|
||||
if (urb->status) {
|
||||
clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags);
|
||||
dev_dbg(&iforce_usb->intf->dev, "urb->status %d, exiting\n",
|
||||
urb->status);
|
||||
iforce_clear_xmit_and_wake(iforce);
|
||||
return;
|
||||
}
|
||||
|
||||
__iforce_usb_xmit(iforce);
|
||||
|
||||
wake_up(&iforce->wait);
|
||||
wake_up_all(&iforce->wait);
|
||||
}
|
||||
|
||||
static int iforce_usb_probe(struct usb_interface *intf,
|
||||
|
|
|
@ -119,6 +119,12 @@ static inline int iforce_get_id_packet(struct iforce *iforce, u8 id,
|
|||
response_data, response_len);
|
||||
}
|
||||
|
||||
static inline void iforce_clear_xmit_and_wake(struct iforce *iforce)
|
||||
{
|
||||
clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags);
|
||||
wake_up_all(&iforce->wait);
|
||||
}
|
||||
|
||||
/* Public functions */
|
||||
/* iforce-main.c */
|
||||
int iforce_init_device(struct device *parent, u16 bustype,
|
||||
|
|
|
@ -98,6 +98,7 @@ static struct platform_driver rk805_pwrkey_driver = {
|
|||
};
|
||||
module_platform_driver(rk805_pwrkey_driver);
|
||||
|
||||
MODULE_ALIAS("platform:rk805-pwrkey");
|
||||
MODULE_AUTHOR("Joseph Chen <chenjh@rock-chips.com>");
|
||||
MODULE_DESCRIPTION("RK805 PMIC Power Key driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
|
|
@ -95,6 +95,7 @@ static const struct goodix_chip_data gt9x_chip_data = {
|
|||
|
||||
static const struct goodix_chip_id goodix_chip_ids[] = {
|
||||
{ .id = "1151", .data = >1x_chip_data },
|
||||
{ .id = "1158", .data = >1x_chip_data },
|
||||
{ .id = "5663", .data = >1x_chip_data },
|
||||
{ .id = "5688", .data = >1x_chip_data },
|
||||
{ .id = "917S", .data = >1x_chip_data },
|
||||
|
@ -1508,6 +1509,7 @@ MODULE_DEVICE_TABLE(acpi, goodix_acpi_match);
|
|||
#ifdef CONFIG_OF
|
||||
static const struct of_device_id goodix_of_match[] = {
|
||||
{ .compatible = "goodix,gt1151" },
|
||||
{ .compatible = "goodix,gt1158" },
|
||||
{ .compatible = "goodix,gt5663" },
|
||||
{ .compatible = "goodix,gt5688" },
|
||||
{ .compatible = "goodix,gt911" },
|
||||
|
|
Loading…
Reference in New Issue