All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCHv4 1/3] sony_ff_hid_descriptor
@ 2011-06-04  9:32 Simon Wood
  2011-06-04  9:32 ` [PATCHv4 2/3] sony_ff_byteswap_accelerometer Simon Wood
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Simon Wood @ 2011-06-04  9:32 UTC (permalink / raw)
  To: linux-input
  Cc: linux-kernel, Jiri Kosina, Michael Bauer, Marcin Tolysz, Simon Wood

This patch modifies the HID descriptor of the Sixaxis controller
to allow the reporting of the accelerometers and gyro via
a joystick axis.

rewrite section from offset 148
--
0x75, 0x08,         /*          Report Size (8),            */
0x95, 0x27,         /*          Report Count (39),          */ /* all the other data
lumped together */
0x09, 0x01,         /*          Usage (Pointer),            */
0x81, 0x02,         /*          Input (Variable),           */
0x75, 0x08,         /*          Report Size (8),            */
0x95, 0x30,         /*          Report Count (48),          */
0x09, 0x01,         /*          Usage (Pointer),            */
0x91, 0x02,         /*          Output (Variable),          */ /* Note Output */
0x75, 0x08,         /*          Report Size (8),            */
0x95, 0x30,         /*          Report Count (48),          */
0x09, 0x01,         /*          Usage (Pointer),            */
0xB1, 0x02,         /*          Feature (Variable),         */ /* Note Feature */
--
with
--
0x95, 0x13,         /*          Report Count (19),          */ /* last 2 not used... */
0x09, 0x01,         /*          Usage (Pointer),            */
0x81, 0x02,         /*          Input (Variable),           */
0x95, 0x0C,         /*          Report Count (12),          */ /* Padding */
0x81, 0x01,         /*          Input (Constant),           */
0x75, 0x10,         /*          Report Size (16),           */
0x95, 0x04,         /*          Report Count (4),           */
0x26, 0xFF, 0x03,   /*          Logical Maximum (1023),     */
0x46, 0xFF, 0x03,   /*          Physical Maximum (1023),    */
0x09, 0x01,         /*          Usage (Pointer),            */
0x81, 0x02,         /*          Input (Variable),           */
--

Signed-off-by: Simon Wood <simon@mungewell.org>
---
 drivers/hid/hid-sony.c |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c
index 936c911..5c930dc 100644
--- a/drivers/hid/hid-sony.c
+++ b/drivers/hid/hid-sony.c
@@ -28,6 +28,12 @@
 #define SIXAXIS_CONTROLLER_USB  (1 << 1)
 #define SIXAXIS_CONTROLLER_BT   (1 << 2)
 
+static const u8 sixaxis_rdesc_fixup[] = {
+	0x95, 0x13, 0x09, 0x01, 0x81, 0x02, 0x95, 0x0C,
+	0x81, 0x01, 0x75, 0x10, 0x95, 0x04, 0x26, 0xFF, 
+	0x03, 0x46, 0xFF, 0x03, 0x09, 0x01, 0x81, 0x02
+	};
+
 struct sony_sc {
 	unsigned long quirks;
 };
@@ -43,6 +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) {
+		hid_info(hdev, "Fixing up Sony Sixaxis report descriptor\n");
+		memcpy((void *)&rdesc[83], (void *) &sixaxis_rdesc_fixup, sizeof(sixaxis_rdesc_fixup));
+	}
 	return rdesc;
 }
 
-- 
1.7.4.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCHv4 2/3] sony_ff_byteswap_accelerometer
  2011-06-04  9:32 [PATCHv4 1/3] sony_ff_hid_descriptor Simon Wood
@ 2011-06-04  9:32 ` Simon Wood
  2011-06-04  9:32 ` [PATCHv4 3/3] sony_ff_bluetooth Simon Wood
  2011-06-08  7:45 ` [PATCHv4 1/3] sony_ff_hid_descriptor Antonio Ospite
  2 siblings, 0 replies; 11+ messages in thread
From: Simon Wood @ 2011-06-04  9:32 UTC (permalink / raw)
  To: linux-input
  Cc: linux-kernel, Jiri Kosina, Michael Bauer, Marcin Tolysz, Simon Wood

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.

Fix extracted from previous patch submission:
https://patchwork.kernel.org/patch/95212/

Signed-off-by: Marcin Tolysz <tolysz@gmail.com>
Signed-off-by: Simon Wood <simon@mungewell.org>
---
 drivers/hid/hid-sony.c |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)

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


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCHv4 3/3] sony_ff_bluetooth
  2011-06-04  9:32 [PATCHv4 1/3] sony_ff_hid_descriptor Simon Wood
  2011-06-04  9:32 ` [PATCHv4 2/3] sony_ff_byteswap_accelerometer Simon Wood
@ 2011-06-04  9:32 ` Simon Wood
  2011-06-08  7:47   ` Antonio Ospite
  2011-06-08  7:45 ` [PATCHv4 1/3] sony_ff_hid_descriptor Antonio Ospite
  2 siblings, 1 reply; 11+ messages in thread
From: Simon Wood @ 2011-06-04  9:32 UTC (permalink / raw)
  To: linux-input
  Cc: linux-kernel, Jiri Kosina, Michael Bauer, Marcin Tolysz,
	Simon Wood, Antonio Ospite

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

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]);
-- 
1.7.4.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCHv4 1/3] sony_ff_hid_descriptor
  2011-06-04  9:32 [PATCHv4 1/3] sony_ff_hid_descriptor Simon Wood
  2011-06-04  9:32 ` [PATCHv4 2/3] sony_ff_byteswap_accelerometer Simon Wood
  2011-06-04  9:32 ` [PATCHv4 3/3] sony_ff_bluetooth Simon Wood
@ 2011-06-08  7:45 ` Antonio Ospite
  2 siblings, 0 replies; 11+ messages in thread
From: Antonio Ospite @ 2011-06-08  7:45 UTC (permalink / raw)
  To: Simon Wood
  Cc: linux-input, linux-kernel, Jiri Kosina, Michael Bauer, Marcin Tolysz

[-- Attachment #1: Type: text/plain, Size: 1325 bytes --]

On Sat,  4 Jun 2011 02:32:35 -0700
Simon Wood <simon@mungewell.org> wrote:

> This patch modifies the HID descriptor of the Sixaxis controller
> to allow the reporting of the accelerometers and gyro via
> a joystick axis.
> 
> rewrite section from offset 148

From offset 83? Below I see rdesc[83] == 0x75

> --
> 0x75, 0x08,         /*          Report Size (8),            */
> 0x95, 0x27,         /*          Report Count (39),          */ /* all the other data
> lumped together */

I'd keep commit messages wrapped to 72/80 chars as well if possible.

[...]
> @@ -43,6 +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) {
> +		hid_info(hdev, "Fixing up Sony Sixaxis report descriptor\n");
> +		memcpy((void *)&rdesc[83], (void *) &sixaxis_rdesc_fixup, sizeof(sixaxis_rdesc_fixup));
> +	}
>  	return rdesc;
>  }
>  

Thanks,
   Antonio

-- 
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?

[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCHv4 3/3] sony_ff_bluetooth
  2011-06-04  9:32 ` [PATCHv4 3/3] sony_ff_bluetooth Simon Wood
@ 2011-06-08  7:47   ` Antonio Ospite
  2011-06-08 23:57     ` simon
  0 siblings, 1 reply; 11+ messages in thread
From: Antonio Ospite @ 2011-06-08  7:47 UTC (permalink / raw)
  To: Simon Wood
  Cc: linux-input, linux-kernel, Jiri Kosina, Michael Bauer, Marcin Tolysz

[-- Attachment #1: Type: text/plain, Size: 2280 bytes --]

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]);
> -- 

-- 
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?

[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCHv4 3/3] sony_ff_bluetooth
  2011-06-08  7:47   ` Antonio Ospite
@ 2011-06-08 23:57     ` simon
  2011-06-10 10:00       ` [PATCH v5 1/2] hid-sony: amend Sixaxis descriptor to enable accelerometers Antonio Ospite
  2011-06-10 10:00       ` [PATCH v5 2/2] hid-sony: fix endiannes of Sixaxis accel/gyro values Antonio Ospite
  0 siblings, 2 replies; 11+ messages in thread
From: simon @ 2011-06-08 23:57 UTC (permalink / raw)
  To: Antonio Ospite
  Cc: Simon Wood, linux-input, linux-kernel, Jiri Kosina,
	Michael Bauer, Marcin Tolysz


>
> 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



^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v5 1/2] hid-sony: amend Sixaxis descriptor to enable accelerometers
  2011-06-08 23:57     ` simon
@ 2011-06-10 10:00       ` Antonio Ospite
  2011-06-10 18:48         ` simon
  2011-06-13 11:22         ` Jiri Kosina
  2011-06-10 10:00       ` [PATCH v5 2/2] hid-sony: fix endiannes of Sixaxis accel/gyro values Antonio Ospite
  1 sibling, 2 replies; 11+ messages in thread
From: Antonio Ospite @ 2011-06-10 10:00 UTC (permalink / raw)
  To: linux-input
  Cc: Simon Wood, Jiri Kosina, Marcin Tolysz, Michael Bauer, Antonio Ospite

From: Simon Wood <simon@mungewell.org>

Modify the HID descriptor of the Sixaxis controller to allow the
reporting of the accelerometers and gyro via a joystick axis.

Rewrite section from offset 83:
--
0x75, 0x08,         /* Report Size (8),         */
/* all the other data lumped together */
0x95, 0x27,         /* Report Count (39),       */
0x09, 0x01,         /* Usage (Pointer),         */
0x81, 0x02,         /* Input (Variable),        */
0x75, 0x08,         /* Report Size (8),         */
0x95, 0x30,         /* Report Count (48),       */
0x09, 0x01,         /* Usage (Pointer),         */
/* Note Output */
0x91, 0x02,         /* Output (Variable),       */
0x75, 0x08,         /* Report Size (8),         */
0x95, 0x30,         /* Report Count (48),       */
0x09, 0x01,         /* Usage (Pointer),         */
/* Note Feature */
0xB1, 0x02,         /* Feature (Variable),      */
--
with
--
/* last 2 not used... */
0x95, 0x13,         /* Report Count (19),       */
0x09, 0x01,         /* Usage (Pointer),         */
0x81, 0x02,         /* Input (Variable),        */
/* Padding */
0x95, 0x0C,         /* Report Count (12),       */
0x81, 0x01,         /* Input (Constant),        */
0x75, 0x10,         /* Report Size (16),        */
0x95, 0x04,         /* Report Count (4),        */
0x26, 0xFF, 0x03,   /* Logical Maximum (1023),  */
0x46, 0xFF, 0x03,   /* Physical Maximum (1023), */
0x09, 0x01,         /* Usage (Pointer),         */
0x81, 0x02,         /* Input (Variable),        */
--

Signed-off-by: Simon Wood <simon@mungewell.org>
Signed-off-by: Antonio Ospite <ospite@studenti.unina.it>
---

Changes since v4:
 - Adjusted the short commit message
 - Wrapped the long commit message to 72 chars
 - Fixed the typo about the offset 
 - Removed a trailing space in sixaxis_rdesc_fixup[]
 - Removed some extra white spaces from the if condition

Simon, please double check the comments above in the commit message, I 
put the inlined ones before the line they were on.

The patch gives only one checkpatch.pl WARNING about a line over 80 chars, 
but I guess this can be accepted.

I tested both patches, my Signed-off-by includes the Tested-by :)

Thanks,
   Antonio

 drivers/hid/hid-sony.c |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c
index e0c83ef..60b4257 100644
--- a/drivers/hid/hid-sony.c
+++ b/drivers/hid/hid-sony.c
@@ -28,6 +28,12 @@
 #define SIXAXIS_CONTROLLER_USB  (1 << 1)
 #define SIXAXIS_CONTROLLER_BT   (1 << 2)
 
+static const u8 sixaxis_rdesc_fixup[] = {
+	0x95, 0x13, 0x09, 0x01, 0x81, 0x02, 0x95, 0x0C,
+	0x81, 0x01, 0x75, 0x10, 0x95, 0x04, 0x26, 0xFF,
+	0x03, 0x46, 0xFF, 0x03, 0x09, 0x01, 0x81, 0x02
+};
+
 struct sony_sc {
 	unsigned long quirks;
 };
@@ -43,6 +49,15 @@ 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;
 	}
+
+	/* 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));
+	}
 	return rdesc;
 }
 
-- 
1.7.5.3


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v5 2/2] hid-sony: fix endiannes of Sixaxis accel/gyro values
  2011-06-08 23:57     ` simon
  2011-06-10 10:00       ` [PATCH v5 1/2] hid-sony: amend Sixaxis descriptor to enable accelerometers Antonio Ospite
@ 2011-06-10 10:00       ` Antonio Ospite
  2011-06-13 11:22         ` Jiri Kosina
  1 sibling, 1 reply; 11+ messages in thread
From: Antonio Ospite @ 2011-06-10 10:00 UTC (permalink / raw)
  To: linux-input
  Cc: Simon Wood, Jiri Kosina, Marcin Tolysz, Michael Bauer, Antonio Ospite

From: Simon Wood <simon@mungewell.org>

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.

Fix extracted from previous patch submission:
https://patchwork.kernel.org/patch/95212/

Signed-off-by: Marcin Tolysz <tolysz@gmail.com>
Signed-off-by: Simon Wood <simon@mungewell.org>
Signed-off-by: Antonio Ospite <ospite@studenti.unina.it>
---

Changes since v4:
 - Adjusted the short commit message
 - Wrapped the sony_raw_event() definition to stay in 80 chars

The patch has been tested and it is checkpatch.pl clean.

Thanks,
   Antonio

 drivers/hid/hid-sony.c |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c
index 60b4257..5d8a200 100644
--- a/drivers/hid/hid-sony.c
+++ b/drivers/hid/hid-sony.c
@@ -61,6 +61,25 @@ static __u8 *sony_report_fixup(struct hid_device *hdev, __u8 *rdesc,
 	return rdesc;
 }
 
+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);
+
+	/* Sixaxis HID report has acclerometers/gyro with MSByte first, this
+	 * has to be BYTE_SWAPPED before passing up to joystick interface
+	 */
+	if ((sc->quirks & (SIXAXIS_CONTROLLER_USB | SIXAXIS_CONTROLLER_BT)) &&
+			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()
@@ -190,6 +209,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.5.3


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH v5 1/2] hid-sony: amend Sixaxis descriptor to enable accelerometers
  2011-06-10 10:00       ` [PATCH v5 1/2] hid-sony: amend Sixaxis descriptor to enable accelerometers Antonio Ospite
@ 2011-06-10 18:48         ` simon
  2011-06-13 11:22         ` Jiri Kosina
  1 sibling, 0 replies; 11+ messages in thread
From: simon @ 2011-06-10 18:48 UTC (permalink / raw)
  Cc: linux-input, Simon Wood, Jiri Kosina, Marcin Tolysz,
	Michael Bauer, Antonio Ospite


> Simon, please double check the comments above in the commit message, I
> put the inlined ones before the line they were on.

Looks good to me, thanks for helping out with this.
Simon.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v5 1/2] hid-sony: amend Sixaxis descriptor to enable accelerometers
  2011-06-10 10:00       ` [PATCH v5 1/2] hid-sony: amend Sixaxis descriptor to enable accelerometers Antonio Ospite
  2011-06-10 18:48         ` simon
@ 2011-06-13 11:22         ` Jiri Kosina
  1 sibling, 0 replies; 11+ messages in thread
From: Jiri Kosina @ 2011-06-13 11:22 UTC (permalink / raw)
  To: Antonio Ospite; +Cc: linux-input, Simon Wood, Marcin Tolysz, Michael Bauer

On Fri, 10 Jun 2011, Antonio Ospite wrote:

> From: Simon Wood <simon@mungewell.org>
> 
> Modify the HID descriptor of the Sixaxis controller to allow the
> reporting of the accelerometers and gyro via a joystick axis.

Applied, thanks.

-- 
Jiri Kosina
SUSE Labs

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v5 2/2] hid-sony: fix endiannes of Sixaxis accel/gyro values
  2011-06-10 10:00       ` [PATCH v5 2/2] hid-sony: fix endiannes of Sixaxis accel/gyro values Antonio Ospite
@ 2011-06-13 11:22         ` Jiri Kosina
  0 siblings, 0 replies; 11+ messages in thread
From: Jiri Kosina @ 2011-06-13 11:22 UTC (permalink / raw)
  To: Antonio Ospite; +Cc: linux-input, Simon Wood, Marcin Tolysz, Michael Bauer

On Fri, 10 Jun 2011, Antonio Ospite wrote:

> From: Simon Wood <simon@mungewell.org>
> 
> 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.
> 
> Fix extracted from previous patch submission:
> https://patchwork.kernel.org/patch/95212/
> 
> Signed-off-by: Marcin Tolysz <tolysz@gmail.com>
> Signed-off-by: Simon Wood <simon@mungewell.org>
> Signed-off-by: Antonio Ospite <ospite@studenti.unina.it>

Applied, thanks guys.

-- 
Jiri Kosina
SUSE Labs

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2011-06-13 11:22 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-06-04  9:32 [PATCHv4 1/3] sony_ff_hid_descriptor Simon Wood
2011-06-04  9:32 ` [PATCHv4 2/3] sony_ff_byteswap_accelerometer Simon Wood
2011-06-04  9:32 ` [PATCHv4 3/3] sony_ff_bluetooth Simon Wood
2011-06-08  7:47   ` Antonio Ospite
2011-06-08 23:57     ` simon
2011-06-10 10:00       ` [PATCH v5 1/2] hid-sony: amend Sixaxis descriptor to enable accelerometers Antonio Ospite
2011-06-10 18:48         ` simon
2011-06-13 11:22         ` Jiri Kosina
2011-06-10 10:00       ` [PATCH v5 2/2] hid-sony: fix endiannes of Sixaxis accel/gyro values Antonio Ospite
2011-06-13 11:22         ` Jiri Kosina
2011-06-08  7:45 ` [PATCHv4 1/3] sony_ff_hid_descriptor Antonio Ospite

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.