Re: [PATCH] HID: Add 044f:b320 ThrustMaster, Inc. 2 in 1 DT

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
>



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux