Re: [PATCH v2] HID: sony: disable descriptor fixup for FutureMax Dance Mat
On Thu, 21 Jul 2016, Mikko Perttunen wrote: > From: Mikko Perttunen > > The FutureMax Dance Mat claims to be a SixAxis controller > but breaks if descriptor fixups are applied. Detect the > device using its USB product string and disable fixups > when it is detected. What a mess; kudos to the HW vendors again. Applied to for-4.8/upstream-fixes, thanks. -- Jiri Kosina SUSE Labs
Re: [PATCH v2] HID: sony: disable descriptor fixup for FutureMax Dance Mat
Reviewed-by: Benjamin Tissoires Acked-by: Antonio Ospite Thanks! Mikko
Re: [PATCH v2] HID: sony: disable descriptor fixup for FutureMax Dance Mat
On Thu, 21 Jul 2016 19:54:48 +0300 Mikko Perttunen wrote: > From: Mikko Perttunen > > The FutureMax Dance Mat claims to be a SixAxis controller > but breaks if descriptor fixups are applied. Detect the > device using its USB product string and disable fixups > when it is detected. > > Signed-off-by: Mikko Perttunen Acked-by: Antonio Ospite > --- > v2: don't use usb device properties > > drivers/hid/hid-sony.c | 6 +- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c > index 310436a..29a1aa9 100644 > --- a/drivers/hid/hid-sony.c > +++ b/drivers/hid/hid-sony.c > @@ -51,6 +51,7 @@ > #define NAVIGATION_CONTROLLER_USB BIT(9) > #define NAVIGATION_CONTROLLER_BT BIT(10) > #define SINO_LITE_CONTROLLER BIT(11) > +#define FUTUREMAX_DANCE_MAT BIT(12) > > #define SIXAXIS_CONTROLLER (SIXAXIS_CONTROLLER_USB | SIXAXIS_CONTROLLER_BT) > #define MOTION_CONTROLLER (MOTION_CONTROLLER_USB | MOTION_CONTROLLER_BT) > @@ -1125,7 +1126,7 @@ static u8 *sony_report_fixup(struct hid_device *hdev, > u8 *rdesc, > { > struct sony_sc *sc = hid_get_drvdata(hdev); > > - if (sc->quirks & SINO_LITE_CONTROLLER) > + if (sc->quirks & (SINO_LITE_CONTROLLER | FUTUREMAX_DANCE_MAT)) > return rdesc; > > /* > @@ -2289,6 +2290,9 @@ static int sony_probe(struct hid_device *hdev, const > struct hid_device_id *id) > struct sony_sc *sc; > unsigned int connect_mask = HID_CONNECT_DEFAULT; > > + if (!strcmp(hdev->name, "FutureMax Dance Mat")) > + quirks |= FUTUREMAX_DANCE_MAT; > + > sc = devm_kzalloc(&hdev->dev, sizeof(*sc), GFP_KERNEL); > if (sc == NULL) { > hid_err(hdev, "can't alloc sony descriptor\n"); > -- > 2.9.0 > -- Antonio Ospite http://ao2.it A: Because it messes up the order in which people normally read text. See http://en.wikipedia.org/wiki/Posting_style Q: Why is top-posting such a bad thing?
Re: [PATCH v2] HID: sony: disable descriptor fixup for FutureMax Dance Mat
On Jul 21 2016 or thereabouts, Mikko Perttunen wrote: > From: Mikko Perttunen > > The FutureMax Dance Mat claims to be a SixAxis controller > but breaks if descriptor fixups are applied. Detect the > device using its USB product string and disable fixups > when it is detected. > > Signed-off-by: Mikko Perttunen Works for me but I'd like to get Antonio's ACK or Rev-by. Reviewed-by: Benjamin Tissoires Cheers, Benjamin > --- > v2: don't use usb device properties > > drivers/hid/hid-sony.c | 6 +- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c > index 310436a..29a1aa9 100644 > --- a/drivers/hid/hid-sony.c > +++ b/drivers/hid/hid-sony.c > @@ -51,6 +51,7 @@ > #define NAVIGATION_CONTROLLER_USB BIT(9) > #define NAVIGATION_CONTROLLER_BT BIT(10) > #define SINO_LITE_CONTROLLER BIT(11) > +#define FUTUREMAX_DANCE_MAT BIT(12) > > #define SIXAXIS_CONTROLLER (SIXAXIS_CONTROLLER_USB | SIXAXIS_CONTROLLER_BT) > #define MOTION_CONTROLLER (MOTION_CONTROLLER_USB | MOTION_CONTROLLER_BT) > @@ -1125,7 +1126,7 @@ static u8 *sony_report_fixup(struct hid_device *hdev, > u8 *rdesc, > { > struct sony_sc *sc = hid_get_drvdata(hdev); > > - if (sc->quirks & SINO_LITE_CONTROLLER) > + if (sc->quirks & (SINO_LITE_CONTROLLER | FUTUREMAX_DANCE_MAT)) > return rdesc; > > /* > @@ -2289,6 +2290,9 @@ static int sony_probe(struct hid_device *hdev, const > struct hid_device_id *id) > struct sony_sc *sc; > unsigned int connect_mask = HID_CONNECT_DEFAULT; > > + if (!strcmp(hdev->name, "FutureMax Dance Mat")) > + quirks |= FUTUREMAX_DANCE_MAT; > + > sc = devm_kzalloc(&hdev->dev, sizeof(*sc), GFP_KERNEL); > if (sc == NULL) { > hid_err(hdev, "can't alloc sony descriptor\n"); > -- > 2.9.0 >