* [PATCH 1/5] HID: LG: Add support for Logitech Momo Force (Red) Wheel
@ 2013-02-20 3:25 Simon Wood
2013-02-20 3:25 ` [PATCH 2/5] HID: LG: Fix detection of Logitech Speed Force Wireless (WiiWheel) Simon Wood
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Simon Wood @ 2013-02-20 3:25 UTC (permalink / raw)
To: linux-input; +Cc: Jiri Kosina, linux-kernel, simon
This patch provides a modified report descriptor to split accelerator
and brake, and adds the 'NO_GET' flag to prevent it hanging on
connection.
Note: for convience this patch is against the follow patch which was applied
earlier this week.
https://patchwork.kernel.org/patch/2153471/
Signed-off-by: Simon Wood <simon@mungewell.org>
---
drivers/hid/hid-lg.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 57 insertions(+), 1 deletion(-)
diff --git a/drivers/hid/hid-lg.c b/drivers/hid/hid-lg.c
index 6bb7f05..160c489 100644
--- a/drivers/hid/hid-lg.c
+++ b/drivers/hid/hid-lg.c
@@ -45,6 +45,7 @@
/* Size of the original descriptors of the Driving Force (and Pro) wheels */
#define DF_RDESC_ORIG_SIZE 130
#define DFP_RDESC_ORIG_SIZE 97
+#define MOMO_RDESC_ORIG_SIZE 87
/* Fixed report descriptors for Logitech Driving Force (and Pro)
* wheel controllers
@@ -169,6 +170,52 @@ static __u8 dfp_rdesc_fixed[] = {
0xC0 /* End Collection */
};
+static __u8 momo_rdesc_fixed[] = {
+0x05, 0x01, /* Usage Page (Desktop), */
+0x09, 0x04, /* Usage (Joystik), */
+0xA1, 0x01, /* Collection (Application), */
+0xA1, 0x02, /* Collection (Logical), */
+0x95, 0x01, /* Report Count (1), */
+0x75, 0x0A, /* Report Size (10), */
+0x15, 0x00, /* Logical Minimum (0), */
+0x26, 0xFF, 0x03, /* Logical Maximum (1023), */
+0x35, 0x00, /* Physical Minimum (0), */
+0x46, 0xFF, 0x03, /* Physical Maximum (1023), */
+0x09, 0x30, /* Usage (X), */
+0x81, 0x02, /* Input (Variable), */
+0x95, 0x08, /* Report Count (8), */
+0x75, 0x01, /* Report Size (1), */
+0x25, 0x01, /* Logical Maximum (1), */
+0x45, 0x01, /* Physical Maximum (1), */
+0x05, 0x09, /* Usage Page (Button), */
+0x19, 0x01, /* Usage Minimum (01h), */
+0x29, 0x08, /* Usage Maximum (08h), */
+0x81, 0x02, /* Input (Variable), */
+0x06, 0x00, 0xFF, /* Usage Page (FF00h), */
+0x75, 0x0E, /* Report Size (14), */
+0x95, 0x01, /* Report Count (1), */
+0x26, 0xFF, 0x00, /* Logical Maximum (255), */
+0x46, 0xFF, 0x00, /* Physical Maximum (255), */
+0x09, 0x00, /* Usage (00h), */
+0x81, 0x02, /* Input (Variable), */
+0x05, 0x01, /* Usage Page (Desktop), */
+0x75, 0x08, /* Report Size (8), */
+0x09, 0x31, /* Usage (Y), */
+0x81, 0x02, /* Input (Variable), */
+0x09, 0x32, /* Usage (Z), */
+0x81, 0x02, /* Input (Variable), */
+0x06, 0x00, 0xFF, /* Usage Page (FF00h), */
+0x09, 0x01, /* Usage (01h), */
+0x81, 0x02, /* Input (Variable), */
+0xC0, /* End Collection, */
+0xA1, 0x02, /* Collection (Logical), */
+0x09, 0x02, /* Usage (02h), */
+0x95, 0x07, /* Report Count (7), */
+0x91, 0x02, /* Output (Variable), */
+0xC0, /* End Collection, */
+0xC0 /* End Collection */
+};
+
/*
* Certain Logitech keyboards send in report #3 keys which are far
* above the logical maximum described in descriptor. This extends
@@ -228,6 +275,15 @@ static __u8 *lg_report_fixup(struct hid_device *hdev, __u8 *rdesc,
}
break;
+ case USB_DEVICE_ID_LOGITECH_MOMO_WHEEL:
+ if (*rsize == MOMO_RDESC_ORIG_SIZE) {
+ hid_info(hdev,
+ "fixing up Logitech Momo Force (Red) report descriptor\n");
+ rdesc = momo_rdesc_fixed;
+ *rsize = sizeof(momo_rdesc_fixed);
+ }
+ break;
+
case USB_DEVICE_ID_LOGITECH_DFP_WHEEL:
if (*rsize == DFP_RDESC_ORIG_SIZE) {
hid_info(hdev,
@@ -558,7 +614,7 @@ static const struct hid_device_id lg_devices[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_FORCE3D_PRO),
.driver_data = LG_FF },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOMO_WHEEL),
- .driver_data = LG_FF4 },
+ .driver_data = LG_NOGET | LG_FF4 },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOMO_WHEEL2),
.driver_data = LG_FF4 },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_G25_WHEEL),
--
1.7.10.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/5] HID: LG: Fix detection of Logitech Speed Force Wireless (WiiWheel)
2013-02-20 3:25 [PATCH 1/5] HID: LG: Add support for Logitech Momo Force (Red) Wheel Simon Wood
@ 2013-02-20 3:25 ` Simon Wood
2013-02-20 3:25 ` [PATCH 3/5] HID: LG: Prevent the Logitech Gaming Wheels deadzone Simon Wood
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Simon Wood @ 2013-02-20 3:25 UTC (permalink / raw)
To: linux-input; +Cc: Jiri Kosina, linux-kernel, simon
Previously 'LG4FF' was only used for the WiiWheel, however it is now used
for all the Logitech Wheels. This patch corrects the detection mechanism
for the patching the report descriptor to ensure only the WiiWheel will
be patched.
Signed-off-by: Simon Wood <simon@mungewell.org>
---
drivers/hid/hid-lg.c | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/drivers/hid/hid-lg.c b/drivers/hid/hid-lg.c
index 160c489..c065598 100644
--- a/drivers/hid/hid-lg.c
+++ b/drivers/hid/hid-lg.c
@@ -242,15 +242,6 @@ static __u8 *lg_report_fixup(struct hid_device *hdev, __u8 *rdesc,
"fixing up rel/abs in Logitech report descriptor\n");
rdesc[33] = rdesc[50] = 0x02;
}
- if ((drv_data->quirks & LG_FF4) && *rsize >= 101 &&
- rdesc[41] == 0x95 && rdesc[42] == 0x0B &&
- rdesc[47] == 0x05 && rdesc[48] == 0x09) {
- hid_info(hdev, "fixing up Logitech Speed Force Wireless button descriptor\n");
- rdesc[41] = 0x05;
- rdesc[42] = 0x09;
- rdesc[47] = 0x95;
- rdesc[48] = 0x0B;
- }
switch (hdev->product) {
@@ -292,6 +283,17 @@ static __u8 *lg_report_fixup(struct hid_device *hdev, __u8 *rdesc,
*rsize = sizeof(dfp_rdesc_fixed);
}
break;
+
+ case USB_DEVICE_ID_LOGITECH_WII_WHEEL:
+ if (*rsize >= 101 && rdesc[41] == 0x95 && rdesc[42] == 0x0B &&
+ rdesc[47] == 0x05 && rdesc[48] == 0x09) {
+ hid_info(hdev, "fixing up Logitech Speed Force Wireless report descriptor\n");
+ rdesc[41] = 0x05;
+ rdesc[42] = 0x09;
+ rdesc[47] = 0x95;
+ rdesc[48] = 0x0B;
+ }
+ break;
}
return rdesc;
--
1.7.10.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/5] HID: LG: Prevent the Logitech Gaming Wheels deadzone
2013-02-20 3:25 [PATCH 1/5] HID: LG: Add support for Logitech Momo Force (Red) Wheel Simon Wood
2013-02-20 3:25 ` [PATCH 2/5] HID: LG: Fix detection of Logitech Speed Force Wireless (WiiWheel) Simon Wood
@ 2013-02-20 3:25 ` Simon Wood
2013-02-20 3:25 ` [PATCH 4/5] HID: LG4FF: Remove unnecessary deadzone code Simon Wood
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Simon Wood @ 2013-02-20 3:25 UTC (permalink / raw)
To: linux-input; +Cc: Jiri Kosina, linux-kernel, simon
This patch ensures that the Logitech wheels are not initialised with
default fuzz/flat values, by marking them as multiaxis devices (rather
than joysticks).
Signed-off-by: Simon Wood <simon@mungewell.org>
---
drivers/hid/hid-lg.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/drivers/hid/hid-lg.c b/drivers/hid/hid-lg.c
index c065598..5d3c861 100644
--- a/drivers/hid/hid-lg.c
+++ b/drivers/hid/hid-lg.c
@@ -479,6 +479,26 @@ static int lg_input_mapped(struct hid_device *hdev, struct hid_input *hi,
usage->type == EV_REL || usage->type == EV_ABS))
clear_bit(usage->code, *bit);
+ /* Ensure that Logitech wheels are not given a default fuzz/flat value */
+ if (usage->type == EV_ABS && (usage->code == ABS_X ||
+ usage->code == ABS_Y || usage->code == ABS_Z ||
+ usage->code == ABS_RZ)) {
+ switch (hdev->product) {
+ case USB_DEVICE_ID_LOGITECH_WHEEL:
+ case USB_DEVICE_ID_LOGITECH_MOMO_WHEEL:
+ case USB_DEVICE_ID_LOGITECH_DFP_WHEEL:
+ case USB_DEVICE_ID_LOGITECH_G25_WHEEL:
+ case USB_DEVICE_ID_LOGITECH_DFGT_WHEEL:
+ case USB_DEVICE_ID_LOGITECH_G27_WHEEL:
+ case USB_DEVICE_ID_LOGITECH_WII_WHEEL:
+ case USB_DEVICE_ID_LOGITECH_MOMO_WHEEL2:
+ field->application = HID_GD_MULTIAXIS;
+ break;
+ default:
+ break;
+ }
+ }
+
return 0;
}
--
1.7.10.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 4/5] HID: LG4FF: Remove unnecessary deadzone code
2013-02-20 3:25 [PATCH 1/5] HID: LG: Add support for Logitech Momo Force (Red) Wheel Simon Wood
2013-02-20 3:25 ` [PATCH 2/5] HID: LG: Fix detection of Logitech Speed Force Wireless (WiiWheel) Simon Wood
2013-02-20 3:25 ` [PATCH 3/5] HID: LG: Prevent the Logitech Gaming Wheels deadzone Simon Wood
@ 2013-02-20 3:25 ` Simon Wood
2013-02-20 3:25 ` [PATCH 5/5] HID: Correct Logitech order in hid-ids.h Simon Wood
2013-02-20 9:22 ` [PATCH 1/5] HID: LG: Add support for Logitech Momo Force (Red) Wheel Jiri Kosina
4 siblings, 0 replies; 6+ messages in thread
From: Simon Wood @ 2013-02-20 3:25 UTC (permalink / raw)
To: linux-input; +Cc: Jiri Kosina, linux-kernel, simon
This patch removes code which is now unnecessary for setting the fuzz/flat
characterics for the logitech DFP wheel. This is now done in the previous
patch by marking the wheel as a multi-axis device.
Signed-off-by: Simon Wood <simon@mungewell.org>
---
drivers/hid/hid-lg4ff.c | 17 -----------------
1 file changed, 17 deletions(-)
diff --git a/drivers/hid/hid-lg4ff.c b/drivers/hid/hid-lg4ff.c
index d7947c7..65a6ec8 100644
--- a/drivers/hid/hid-lg4ff.c
+++ b/drivers/hid/hid-lg4ff.c
@@ -43,11 +43,6 @@
#define G27_REV_MAJ 0x12
#define G27_REV_MIN 0x38
-#define DFP_X_MIN 0
-#define DFP_X_MAX 16383
-#define DFP_PEDAL_MIN 0
-#define DFP_PEDAL_MAX 255
-
#define to_hid_device(pdev) container_of(pdev, struct hid_device, dev)
static void hid_lg4ff_set_range_dfp(struct hid_device *hid, u16 range);
@@ -598,18 +593,6 @@ int lg4ff_init(struct hid_device *hid)
return error;
dbg_hid("sysfs interface created\n");
- /* Set default axes parameters */
- switch (lg4ff_devices[i].product_id) {
- case USB_DEVICE_ID_LOGITECH_DFP_WHEEL:
- dbg_hid("Setting axes parameters for Driving Force Pro\n");
- input_set_abs_params(dev, ABS_X, DFP_X_MIN, DFP_X_MAX, 0, 0);
- input_set_abs_params(dev, ABS_Y, DFP_PEDAL_MIN, DFP_PEDAL_MAX, 0, 0);
- input_set_abs_params(dev, ABS_RZ, DFP_PEDAL_MIN, DFP_PEDAL_MAX, 0, 0);
- break;
- default:
- break;
- }
-
/* Set the maximum range to start with */
entry->range = entry->max_range;
if (entry->set_range != NULL)
--
1.7.10.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 5/5] HID: Correct Logitech order in hid-ids.h
2013-02-20 3:25 [PATCH 1/5] HID: LG: Add support for Logitech Momo Force (Red) Wheel Simon Wood
` (2 preceding siblings ...)
2013-02-20 3:25 ` [PATCH 4/5] HID: LG4FF: Remove unnecessary deadzone code Simon Wood
@ 2013-02-20 3:25 ` Simon Wood
2013-02-20 9:22 ` [PATCH 1/5] HID: LG: Add support for Logitech Momo Force (Red) Wheel Jiri Kosina
4 siblings, 0 replies; 6+ messages in thread
From: Simon Wood @ 2013-02-20 3:25 UTC (permalink / raw)
To: linux-input; +Cc: Jiri Kosina, linux-kernel, simon
Reorders a couple of device IDs (Logitech controllers) to ensure
that they are in hexidecimal order.
Signed-off-by: Simon Wood <simon@mungewell.org>
---
drivers/hid/hid-ids.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index 34e2547..865492c 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -525,8 +525,8 @@
#define USB_DEVICE_ID_LOGITECH_WINGMAN_F3D 0xc283
#define USB_DEVICE_ID_LOGITECH_FORCE3D_PRO 0xc286
#define USB_DEVICE_ID_LOGITECH_FLIGHT_SYSTEM_G940 0xc287
-#define USB_DEVICE_ID_LOGITECH_WHEEL 0xc294
#define USB_DEVICE_ID_LOGITECH_WINGMAN_FFG 0xc293
+#define USB_DEVICE_ID_LOGITECH_WHEEL 0xc294
#define USB_DEVICE_ID_LOGITECH_MOMO_WHEEL 0xc295
#define USB_DEVICE_ID_LOGITECH_DFP_WHEEL 0xc298
#define USB_DEVICE_ID_LOGITECH_G25_WHEEL 0xc299
--
1.7.10.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/5] HID: LG: Add support for Logitech Momo Force (Red) Wheel
2013-02-20 3:25 [PATCH 1/5] HID: LG: Add support for Logitech Momo Force (Red) Wheel Simon Wood
` (3 preceding siblings ...)
2013-02-20 3:25 ` [PATCH 5/5] HID: Correct Logitech order in hid-ids.h Simon Wood
@ 2013-02-20 9:22 ` Jiri Kosina
4 siblings, 0 replies; 6+ messages in thread
From: Jiri Kosina @ 2013-02-20 9:22 UTC (permalink / raw)
To: Simon Wood; +Cc: linux-input, linux-kernel
On Tue, 19 Feb 2013, Simon Wood wrote:
> This patch provides a modified report descriptor to split accelerator
> and brake, and adds the 'NO_GET' flag to prevent it hanging on
> connection.
Applied, thanks Simon.
--
Jiri Kosina
SUSE Labs
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-02-20 9:22 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-20 3:25 [PATCH 1/5] HID: LG: Add support for Logitech Momo Force (Red) Wheel Simon Wood
2013-02-20 3:25 ` [PATCH 2/5] HID: LG: Fix detection of Logitech Speed Force Wireless (WiiWheel) Simon Wood
2013-02-20 3:25 ` [PATCH 3/5] HID: LG: Prevent the Logitech Gaming Wheels deadzone Simon Wood
2013-02-20 3:25 ` [PATCH 4/5] HID: LG4FF: Remove unnecessary deadzone code Simon Wood
2013-02-20 3:25 ` [PATCH 5/5] HID: Correct Logitech order in hid-ids.h Simon Wood
2013-02-20 9:22 ` [PATCH 1/5] HID: LG: Add support for Logitech Momo Force (Red) Wheel Jiri Kosina
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).