Skip to content

Commit ce52c0c

Browse files
LawstorantJiri Kosina
authored andcommitted
HID: pidff: Stop all effects before enabling actuators
Some PID compliant devices automatically play effects after boot (i.e. autocenter spring) that prevent the rendering of other effects since it is done outside the kernel driver. This makes sure all the effects currently played are stopped after resetting the device. It brings compatibility to the Brunner CLS-P joystick and others Reported-by: Jules Noirant <jules.noirant@orange.fr> Signed-off-by: Tomasz Pakuła <tomasz.pakula.oficjalny@gmail.com> Reviewed-by: Michał Kopeć <michal@nozomi.space> Reviewed-by: Paul Dino Jones <paul@spacefreak18.xyz> Tested-by: Paul Dino Jones <paul@spacefreak18.xyz> Tested-by: Cristóferson Bueno <cbueno81@gmail.com> Tested-by: Pablo Cisneros <patchkez@protonmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.com>
1 parent 3051bf5 commit ce52c0c

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

drivers/hid/usbhid/hid-pidff.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,9 @@ static const u8 pidff_pool[] = { 0x80, 0x83, 0xa9 };
109109
/* Special field key tables used to put special field keys into arrays */
110110

111111
#define PID_ENABLE_ACTUATORS 0
112-
#define PID_RESET 1
113-
static const u8 pidff_device_control[] = { 0x97, 0x9a };
112+
#define PID_STOP_ALL_EFFECTS 1
113+
#define PID_RESET 2
114+
static const u8 pidff_device_control[] = { 0x97, 0x99, 0x9a };
114115

115116
#define PID_CONSTANT 0
116117
#define PID_RAMP 1
@@ -1222,6 +1223,10 @@ static void pidff_reset(struct pidff_device *pidff)
12221223
hid_hw_request(hid, pidff->reports[PID_DEVICE_CONTROL], HID_REQ_SET_REPORT);
12231224
hid_hw_wait(hid);
12241225

1226+
pidff->device_control->value[0] = pidff->control_id[PID_STOP_ALL_EFFECTS];
1227+
hid_hw_request(hid, pidff->reports[PID_DEVICE_CONTROL], HID_REQ_SET_REPORT);
1228+
hid_hw_wait(hid);
1229+
12251230
pidff->device_control->value[0] =
12261231
pidff->control_id[PID_ENABLE_ACTUATORS];
12271232
hid_hw_request(hid, pidff->reports[PID_DEVICE_CONTROL], HID_REQ_SET_REPORT);

0 commit comments

Comments
 (0)