Skip to content

Commit 1859762

Browse files
mungewellJiri Kosina
authored andcommitted
HID:hid-lg4ff: Correct Auto-center strength for wheels other than MOMO and MOMO2
The MOMO and MOMO2 wheels have a slightly different autocenter command, and accept values in the range 0..F (rather than 0..7 for the other wheels). This patch uses the product ID to determine how to compute the strength. Signed-off-by: Simon Wood <[email protected]> Signed-off-by: Jiri Kosina <[email protected]>
1 parent 114a55c commit 1859762

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

drivers/hid/hid-lg4ff.c

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,20 @@ static void hid_lg4ff_set_autocenter_default(struct input_dev *dev, u16 magnitud
234234
struct hid_report *report = list_entry(report_list->next, struct hid_report, list);
235235
__s32 *value = report->field[0]->value;
236236
__u32 expand_a, expand_b;
237+
struct lg4ff_device_entry *entry;
238+
struct lg_drv_data *drv_data;
239+
240+
drv_data = hid_get_drvdata(hid);
241+
if (!drv_data) {
242+
hid_err(hid, "Private driver data not found!\n");
243+
return;
244+
}
245+
246+
entry = drv_data->device_props;
247+
if (!entry) {
248+
hid_err(hid, "Device properties not found!\n");
249+
return;
250+
}
237251

238252
/* De-activate Auto-Center */
239253
if (magnitude == 0) {
@@ -257,6 +271,16 @@ static void hid_lg4ff_set_autocenter_default(struct input_dev *dev, u16 magnitud
257271
expand_b = (0x80 * 0xaaaa) + 0xff * (magnitude - 0xaaaa);
258272
}
259273

274+
/* Adjust for non-MOMO wheels */
275+
switch (entry->product_id) {
276+
case USB_DEVICE_ID_LOGITECH_MOMO_WHEEL:
277+
case USB_DEVICE_ID_LOGITECH_MOMO_WHEEL2:
278+
break;
279+
default:
280+
expand_a = expand_a >> 1;
281+
break;
282+
}
283+
260284
value[0] = 0xfe;
261285
value[1] = 0x0d;
262286
value[2] = expand_a / 0xaaaa;

0 commit comments

Comments
 (0)