lkml.org 
[lkml]   [2011]   [Jun]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 2/2] sony_ff_byteswap_accelerometer
On Mon, 23 May 2011 03:19:59 -0700
Simon Wood <simon@mungewell.org> wrote:

> The accelerometers/gyro on the sixaxis are reported in the wrong
> endianness (ie. not compatible with HID), so this patch intercepts
> the report and swaps the appropriate bytes over.
>
> Accelerometers are scaled with a nominal value of +/-4000 = 1G,
> maximum value would be around +/-32768 = 8G.
>
> Gyro on my device always reports -32768, might need some calibration
> set within the controller.
> ---
> drivers/hid/hid-sony.c | 19 +++++++++++++++++++
> 1 files changed, 19 insertions(+), 0 deletions(-)
>

Should this one have Marcin as the original author or at least as the
first Signed-off-by, and an additional Signed-off-by you Simon?

Thanks,
Antonio

> diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c
> index 5c930dc..f219746 100644
> --- a/drivers/hid/hid-sony.c
> +++ b/drivers/hid/hid-sony.c
> @@ -57,6 +57,24 @@ static __u8 *sony_report_fixup(struct hid_device *hdev, __u8 *rdesc,
> return rdesc;
> }
>
> +/* Sixaxis HID report has acclerometers/gyro with MSByte first, this has
> + * to be BYTE_SWAPPED before passing up to joystick interface
> + */
> +static int sony_raw_event(struct hid_device *hdev, struct hid_report *report, __u8 *rd, int size)
> +{
> + struct sony_sc *sc = hid_get_drvdata(hdev);
> +
> + if ((sc->quirks & SIXAXIS_CONTROLLER_USB) &&
> + rd[0] == 0x01 && size == 49) {
> + swap(rd[41], rd[42]);
> + swap(rd[43], rd[44]);
> + swap(rd[45], rd[46]);
> + swap(rd[47], rd[48]);
> + }
> +
> + return 0;
> +}
> +
> /*
> * The Sony Sixaxis does not handle HID Output Reports on the Interrupt EP
> * like it should according to usbhid/hid-core.c::usbhid_output_raw_report()
> @@ -205,6 +223,7 @@ static struct hid_driver sony_driver = {
> .probe = sony_probe,
> .remove = sony_remove,
> .report_fixup = sony_report_fixup,
> + .raw_event = sony_raw_event
> };
>
> static int __init sony_init(void)
> --
> 1.7.4.1
>
>


--
Antonio Ospite
http://ao2.it

PGP public key ID: 0x4553B001

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?
[unhandled content-type:application/pgp-signature]
\
 
 \ /
  Last update: 2011-06-01 21:55    [W:0.089 / U:0.116 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site