Message ID | 1307179957-24458-3-git-send-email-simon@mungewell.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Sat, 4 Jun 2011 02:32:37 -0700 Simon Wood <simon@mungewell.org> wrote: > Add support for patching the HID descriptor when Sixaxis is connect > via Bluetooth. In this mode the desciptor contains a trailing '0x00'. > > Patch suggested by Antonio > Simon I think this one can be split and the first hunk can be merged with 1/2 and the second hunk with 2/2. Also the short commit messages still need to be fixed for all the patches to be more descriptive, if you don't want to spend any more time on that just tell and I'll do it :) Thanks, Antonio > Signed-off-by: Antonio Ospite <ospite@studenti.unina.it> > Signed-off-by: Simon Wood <simon@mungewell.org> > --- > drivers/hid/hid-sony.c | 9 ++++++--- > 1 files changed, 6 insertions(+), 3 deletions(-) > > diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c > index f219746..5d37f97 100644 > --- a/drivers/hid/hid-sony.c > +++ b/drivers/hid/hid-sony.c > @@ -49,8 +49,11 @@ static __u8 *sony_report_fixup(struct hid_device *hdev, __u8 *rdesc, > hid_info(hdev, "Fixing up Sony Vaio VGX report descriptor\n"); > rdesc[55] = 0x06; > } > - if ((sc->quirks & SIXAXIS_CONTROLLER_USB) && > - *rsize == 148 && rdesc[83] == 0x75) { > + > + /* The HID descriptor exposed over BT has a trailing zero byte */ > + if ((((sc->quirks & SIXAXIS_CONTROLLER_USB) && *rsize == 148) || > + ((sc->quirks & SIXAXIS_CONTROLLER_BT) && *rsize == 149 )) && > + rdesc[83] == 0x75) { > hid_info(hdev, "Fixing up Sony Sixaxis report descriptor\n"); > memcpy((void *)&rdesc[83], (void *) &sixaxis_rdesc_fixup, sizeof(sixaxis_rdesc_fixup)); > } > @@ -64,7 +67,7 @@ static int sony_raw_event(struct hid_device *hdev, struct hid_report *report, __ > { > struct sony_sc *sc = hid_get_drvdata(hdev); > > - if ((sc->quirks & SIXAXIS_CONTROLLER_USB) && > + if ((sc->quirks & (SIXAXIS_CONTROLLER_USB | SIXAXIS_CONTROLLER_BT)) && > rd[0] == 0x01 && size == 49) { > swap(rd[41], rd[42]); > swap(rd[43], rd[44]); > --
> > Simon I think this one can be split and the first hunk can be merged > with 1/2 and the second hunk with 2/2. > > Also the short commit messages still need to be fixed for all the > patches to be more descriptive, if you don't want to spend any more > time on that just tell and I'll do it :) I'm traveling for the rest of the week and don't have access to the Sixaxis hardware to test, so if you have the time/motivation to spin a new patch that would be great.... if not I can try again over the weekend. > rewrite section from offset 148 .... er, yes I am an idiot. ;-) Simon -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c index f219746..5d37f97 100644 --- a/drivers/hid/hid-sony.c +++ b/drivers/hid/hid-sony.c @@ -49,8 +49,11 @@ static __u8 *sony_report_fixup(struct hid_device *hdev, __u8 *rdesc, hid_info(hdev, "Fixing up Sony Vaio VGX report descriptor\n"); rdesc[55] = 0x06; } - if ((sc->quirks & SIXAXIS_CONTROLLER_USB) && - *rsize == 148 && rdesc[83] == 0x75) { + + /* The HID descriptor exposed over BT has a trailing zero byte */ + if ((((sc->quirks & SIXAXIS_CONTROLLER_USB) && *rsize == 148) || + ((sc->quirks & SIXAXIS_CONTROLLER_BT) && *rsize == 149 )) && + rdesc[83] == 0x75) { hid_info(hdev, "Fixing up Sony Sixaxis report descriptor\n"); memcpy((void *)&rdesc[83], (void *) &sixaxis_rdesc_fixup, sizeof(sixaxis_rdesc_fixup)); } @@ -64,7 +67,7 @@ static int sony_raw_event(struct hid_device *hdev, struct hid_report *report, __ { struct sony_sc *sc = hid_get_drvdata(hdev); - if ((sc->quirks & SIXAXIS_CONTROLLER_USB) && + if ((sc->quirks & (SIXAXIS_CONTROLLER_USB | SIXAXIS_CONTROLLER_BT)) && rd[0] == 0x01 && size == 49) { swap(rd[41], rd[42]); swap(rd[43], rd[44]);