aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid/hid-lg4ff.c
diff options
context:
space:
mode:
authorMichal Malý <madcatxster@gmail.com>2012-09-24 06:13:29 -0400
committerJiri Kosina <jkosina@suse.cz>2012-09-25 09:41:59 -0400
commita2063172ccafb5e7748a3b6719df8ac68ec89060 (patch)
tree92b69da3f8450f41a4fc1a3af4a42399d65e7509 /drivers/hid/hid-lg4ff.c
parent2b24a960016b8d3221a6dd2764ab97247c48dd97 (diff)
HID: hid-lg4ff: Set absolute axes parametes on DFP
The lg4ff driver doesn't fill the "input_absinfo" struct so it is left with default values. Applications with rely on information in this struct therefore do not work correctly with the wheel. Other Logitech wheels probably need this fix too, but again I do not have enough information to write it. Signed-off-by: Michal Malý <madcatxster@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid/hid-lg4ff.c')
-rw-r--r--drivers/hid/hid-lg4ff.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/hid/hid-lg4ff.c b/drivers/hid/hid-lg4ff.c
index fe15b3bdffcf..4ea7ccaa15ea 100644
--- a/drivers/hid/hid-lg4ff.c
+++ b/drivers/hid/hid-lg4ff.c
@@ -43,6 +43,11 @@
43#define G27_REV_MAJ 0x12 43#define G27_REV_MAJ 0x12
44#define G27_REV_MIN 0x38 44#define G27_REV_MIN 0x38
45 45
46#define DFP_X_MIN 0
47#define DFP_X_MAX 16383
48#define DFP_PEDAL_MIN 0
49#define DFP_PEDAL_MAX 255
50
46#define to_hid_device(pdev) container_of(pdev, struct hid_device, dev) 51#define to_hid_device(pdev) container_of(pdev, struct hid_device, dev)
47 52
48static void hid_lg4ff_set_range_dfp(struct hid_device *hid, u16 range); 53static void hid_lg4ff_set_range_dfp(struct hid_device *hid, u16 range);
@@ -593,6 +598,18 @@ int lg4ff_init(struct hid_device *hid)
593 return error; 598 return error;
594 dbg_hid("sysfs interface created\n"); 599 dbg_hid("sysfs interface created\n");
595 600
601 /* Set default axes parameters */
602 switch (lg4ff_devices[i].product_id) {
603 case USB_DEVICE_ID_LOGITECH_DFP_WHEEL:
604 dbg_hid("Setting axes parameters for Driving Force Pro\n");
605 input_set_abs_params(dev, ABS_X, DFP_X_MIN, DFP_X_MAX, 0, 0);
606 input_set_abs_params(dev, ABS_Y, DFP_PEDAL_MIN, DFP_PEDAL_MAX, 0, 0);
607 input_set_abs_params(dev, ABS_RZ, DFP_PEDAL_MIN, DFP_PEDAL_MAX, 0, 0);
608 break;
609 default:
610 break;
611 }
612
596 /* Set the maximum range to start with */ 613 /* Set the maximum range to start with */
597 entry->range = entry->max_range; 614 entry->range = entry->max_range;
598 if (entry->set_range != NULL) 615 if (entry->set_range != NULL)