[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1307179957-24458-1-git-send-email-simon@mungewell.org>
Date: Sat, 4 Jun 2011 02:32:35 -0700
From: Simon Wood <simon@...gewell.org>
To: linux-input@...r.kernel.org
Cc: linux-kernel@...r.kernel.org, Jiri Kosina <jkosina@...e.cz>,
Michael Bauer <michael@...auer.org>,
Marcin Tolysz <tolysz@...il.com>,
Simon Wood <simon@...gewell.org>
Subject: [PATCHv4 1/3] sony_ff_hid_descriptor
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@...gewell.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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists