Skip to content

Commit

Permalink
HID:hid-lg4ff: Correct Auto-center strength for wheels other than MOM…
Browse files Browse the repository at this point in the history
…O 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 <simon@mungewell.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
  • Loading branch information
Simon Wood authored and Jiri Kosina committed Nov 8, 2013
1 parent 114a55c commit 1859762
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions drivers/hid/hid-lg4ff.c
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,20 @@ static void hid_lg4ff_set_autocenter_default(struct input_dev *dev, u16 magnitud
struct hid_report *report = list_entry(report_list->next, struct hid_report, list);
__s32 *value = report->field[0]->value;
__u32 expand_a, expand_b;
struct lg4ff_device_entry *entry;
struct lg_drv_data *drv_data;

drv_data = hid_get_drvdata(hid);
if (!drv_data) {
hid_err(hid, "Private driver data not found!\n");
return;
}

entry = drv_data->device_props;
if (!entry) {
hid_err(hid, "Device properties not found!\n");
return;
}

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

/* Adjust for non-MOMO wheels */
switch (entry->product_id) {
case USB_DEVICE_ID_LOGITECH_MOMO_WHEEL:
case USB_DEVICE_ID_LOGITECH_MOMO_WHEEL2:
break;
default:
expand_a = expand_a >> 1;
break;
}

value[0] = 0xfe;
value[1] = 0x0d;
value[2] = expand_a / 0xaaaa;
Expand Down

0 comments on commit 1859762

Please sign in to comment.