Hi Ilya, On Mon, Jun 24, 2019 at 5:28 PM Ilya Trukhanov <lahvuun@xxxxxxxxx> wrote: > > Enable force feedback for the Thrustmaster Dual Trigger 2 in 1 Rumble Force > gamepad. Compared to other Thrustmaster devices, left and right rumble > motors here are swapped. > > Signed-off-by: Ilya Trukhanov <lahvuun@xxxxxxxxxxxxxx> > --- > drivers/hid/hid-quirks.c | 1 + > drivers/hid/hid-tmff.c | 10 ++++++++++ > 2 files changed, 11 insertions(+) > > diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c > index e5ca6fe2ca57..7408a4759b35 100644 > --- a/drivers/hid/hid-quirks.c > +++ b/drivers/hid/hid-quirks.c > @@ -638,6 +638,7 @@ static const struct hid_device_id hid_have_special_driver[] = { > #if IS_ENABLED(CONFIG_HID_THRUSTMASTER) > { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb300) }, > { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb304) }, > + { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb320) }, You should be able to drop this hunk from the patch. > { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb323) }, > { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb324) }, > { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb605) }, > diff --git a/drivers/hid/hid-tmff.c b/drivers/hid/hid-tmff.c > index e12f2588ddeb..78b931d8617f 100644 > --- a/drivers/hid/hid-tmff.c > +++ b/drivers/hid/hid-tmff.c > @@ -76,6 +76,7 @@ static int tmff_play(struct input_dev *dev, void *data, > struct hid_field *ff_field = tmff->ff_field; > int x, y; > int left, right; /* Rumbling */ > + int motor_swap; > > switch (effect->type) { > case FF_CONSTANT: > @@ -100,6 +101,13 @@ static int tmff_play(struct input_dev *dev, void *data, > ff_field->logical_minimum, > ff_field->logical_maximum); > > + /* 2-in-1 strong motor is left */ > + if (hid->product == 0xb320) { I think we better have a (local) #define for the PID here. You are reusing it below. Cheers, Benjamin > + motor_swap = left; > + left = right; > + right = motor_swap; > + } > + > dbg_hid("(left,right)=(%08x, %08x)\n", left, right); > ff_field->value[0] = left; > ff_field->value[1] = right; > @@ -226,6 +234,8 @@ static const struct hid_device_id tm_devices[] = { > .driver_data = (unsigned long)ff_rumble }, > { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb304), /* FireStorm Dual Power 2 (and 3) */ > .driver_data = (unsigned long)ff_rumble }, > + { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb320), /* Dual Trigger 2-in-1 */ > + .driver_data = (unsigned long)ff_rumble }, > { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb323), /* Dual Trigger 3-in-1 (PC Mode) */ > .driver_data = (unsigned long)ff_rumble }, > { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb324), /* Dual Trigger 3-in-1 (PS3 Mode) */ > -- > 2.22.0 >