Skip to content

Commit 6433fe0

Browse files
committed
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
2 parents 42cf58c + 9c9c711 commit 6433fe0

File tree

9 files changed

+20
-7
lines changed

9 files changed

+20
-7
lines changed

Documentation/devicetree/bindings/input/touchscreen/goodix.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ properties:
1616
compatible:
1717
enum:
1818
- goodix,gt1151
19+
- goodix,gt1158
1920
- goodix,gt5663
2021
- goodix,gt5688
2122
- goodix,gt911

Documentation/input/joydev/joystick.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -517,6 +517,7 @@ All I-Force devices are supported by the iforce module. This includes:
517517
* AVB Mag Turbo Force
518518
* AVB Top Shot Pegasus
519519
* AVB Top Shot Force Feedback Racing Wheel
520+
* Boeder Force Feedback Wheel
520521
* Logitech WingMan Force
521522
* Logitech WingMan Force Wheel
522523
* Guillemot Race Leader Force Feedback

MAINTAINERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10032,6 +10032,7 @@ F: Documentation/devicetree/bindings/input/
1003210032
F: Documentation/devicetree/bindings/serio/
1003310033
F: Documentation/input/
1003410034
F: drivers/input/
10035+
F: include/dt-bindings/input/
1003510036
F: include/linux/input.h
1003610037
F: include/linux/input/
1003710038
F: include/uapi/linux/input-event-codes.h

drivers/input/joystick/iforce/iforce-main.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ static struct iforce_device iforce_device[] = {
5050
{ 0x046d, 0xc291, "Logitech WingMan Formula Force", btn_wheel, abs_wheel, ff_iforce },
5151
{ 0x05ef, 0x020a, "AVB Top Shot Pegasus", btn_joystick_avb, abs_avb_pegasus, ff_iforce },
5252
{ 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 },
5354
{ 0x05ef, 0x8888, "AVB Top Shot Force Feedback Racing Wheel", btn_wheel, abs_wheel, ff_iforce }, //?
5455
{ 0x061c, 0xc0a4, "ACT LABS Force RS", btn_wheel, abs_wheel, ff_iforce }, //?
5556
{ 0x061c, 0xc084, "ACT LABS Force RS", btn_wheel, abs_wheel, ff_iforce },

drivers/input/joystick/iforce/iforce-serio.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ static void iforce_serio_xmit(struct iforce *iforce)
3939

4040
again:
4141
if (iforce->xmit.head == iforce->xmit.tail) {
42-
clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags);
42+
iforce_clear_xmit_and_wake(iforce);
4343
spin_unlock_irqrestore(&iforce->xmit_lock, flags);
4444
return;
4545
}
@@ -64,7 +64,7 @@ static void iforce_serio_xmit(struct iforce *iforce)
6464
if (test_and_clear_bit(IFORCE_XMIT_AGAIN, iforce->xmit_flags))
6565
goto again;
6666

67-
clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags);
67+
iforce_clear_xmit_and_wake(iforce);
6868

6969
spin_unlock_irqrestore(&iforce->xmit_lock, flags);
7070
}
@@ -169,7 +169,7 @@ static irqreturn_t iforce_serio_irq(struct serio *serio,
169169
iforce_serio->cmd_response_len = iforce_serio->len;
170170

171171
/* Signal that command is done */
172-
wake_up(&iforce->wait);
172+
wake_up_all(&iforce->wait);
173173
} else if (likely(iforce->type)) {
174174
iforce_process_packet(iforce, iforce_serio->id,
175175
iforce_serio->data_in,

drivers/input/joystick/iforce/iforce-usb.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ static void __iforce_usb_xmit(struct iforce *iforce)
3030
spin_lock_irqsave(&iforce->xmit_lock, flags);
3131

3232
if (iforce->xmit.head == iforce->xmit.tail) {
33-
clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags);
33+
iforce_clear_xmit_and_wake(iforce);
3434
spin_unlock_irqrestore(&iforce->xmit_lock, flags);
3535
return;
3636
}
@@ -58,9 +58,9 @@ static void __iforce_usb_xmit(struct iforce *iforce)
5858
XMIT_INC(iforce->xmit.tail, n);
5959

6060
if ( (n=usb_submit_urb(iforce_usb->out, GFP_ATOMIC)) ) {
61-
clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags);
6261
dev_warn(&iforce_usb->intf->dev,
6362
"usb_submit_urb failed %d\n", n);
63+
iforce_clear_xmit_and_wake(iforce);
6464
}
6565

6666
/* The IFORCE_XMIT_RUNNING bit is not cleared here. That's intended.
@@ -175,15 +175,15 @@ static void iforce_usb_out(struct urb *urb)
175175
struct iforce *iforce = &iforce_usb->iforce;
176176

177177
if (urb->status) {
178-
clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags);
179178
dev_dbg(&iforce_usb->intf->dev, "urb->status %d, exiting\n",
180179
urb->status);
180+
iforce_clear_xmit_and_wake(iforce);
181181
return;
182182
}
183183

184184
__iforce_usb_xmit(iforce);
185185

186-
wake_up(&iforce->wait);
186+
wake_up_all(&iforce->wait);
187187
}
188188

189189
static int iforce_usb_probe(struct usb_interface *intf,

drivers/input/joystick/iforce/iforce.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,12 @@ static inline int iforce_get_id_packet(struct iforce *iforce, u8 id,
119119
response_data, response_len);
120120
}
121121

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+
122128
/* Public functions */
123129
/* iforce-main.c */
124130
int iforce_init_device(struct device *parent, u16 bustype,

drivers/input/misc/rk805-pwrkey.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ static struct platform_driver rk805_pwrkey_driver = {
9898
};
9999
module_platform_driver(rk805_pwrkey_driver);
100100

101+
MODULE_ALIAS("platform:rk805-pwrkey");
101102
MODULE_AUTHOR("Joseph Chen <chenjh@rock-chips.com>");
102103
MODULE_DESCRIPTION("RK805 PMIC Power Key driver");
103104
MODULE_LICENSE("GPL");

drivers/input/touchscreen/goodix.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ static const struct goodix_chip_data gt9x_chip_data = {
9595

9696
static const struct goodix_chip_id goodix_chip_ids[] = {
9797
{ .id = "1151", .data = &gt1x_chip_data },
98+
{ .id = "1158", .data = &gt1x_chip_data },
9899
{ .id = "5663", .data = &gt1x_chip_data },
99100
{ .id = "5688", .data = &gt1x_chip_data },
100101
{ .id = "917S", .data = &gt1x_chip_data },
@@ -1508,6 +1509,7 @@ MODULE_DEVICE_TABLE(acpi, goodix_acpi_match);
15081509
#ifdef CONFIG_OF
15091510
static const struct of_device_id goodix_of_match[] = {
15101511
{ .compatible = "goodix,gt1151" },
1512+
{ .compatible = "goodix,gt1158" },
15111513
{ .compatible = "goodix,gt5663" },
15121514
{ .compatible = "goodix,gt5688" },
15131515
{ .compatible = "goodix,gt911" },

0 commit comments

Comments
 (0)