diff options
author | Michal Malý <madcatxster@gmail.com> | 2011-08-04 16:20:40 +0200 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2011-08-04 16:45:55 +0200 |
commit | 30bb75d71b3732c0adb6297815288ce0fb9cc04c (patch) | |
tree | 7666cc033dbf3a4239803b43702f2d4a57447a8e /drivers/hid/hid-lg.c | |
parent | 96440c8a00e22e541135dee2eba9f3e7d8195f65 (diff) | |
download | kernel_goldelico_gta04-30bb75d71b3732c0adb6297815288ce0fb9cc04c.zip kernel_goldelico_gta04-30bb75d71b3732c0adb6297815288ce0fb9cc04c.tar.gz kernel_goldelico_gta04-30bb75d71b3732c0adb6297815288ce0fb9cc04c.tar.bz2 |
HID: lg4ff - Add range setting support and sysfs interface
Wheel range of certain Logitech wheels - namely Driving Force GT, Driving Force
Pro, G25 and G27 can be adjusted. Minimu is 40 degrees, maximum 900. DFGT, G25
and G27 all use a common command, DFP uses another one. Range can be set from
userspace by writing to
"/sys/module/hid_logitech/drivers/hid:logitech/<dev>range". The driver use list
to store range of each connected wheel; it's not possible to use driver_data in
hid_device struct as it's already b hig-lg driver.
Signed-off-by: Michal Malý <madcatxster@gmail.com>
Signed-off-by: Simon Wood <simon@mungewell.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid/hid-lg.c')
-rw-r--r-- | drivers/hid/hid-lg.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/hid/hid-lg.c b/drivers/hid/hid-lg.c index e0ae4a0..e7a7bd1 100644 --- a/drivers/hid/hid-lg.c +++ b/drivers/hid/hid-lg.c @@ -406,6 +406,15 @@ err_free: return ret; } +static void lg_remove(struct hid_device *hdev) +{ + unsigned long quirks = (unsigned long)hid_get_drvdata(hdev); + if(quirks & LG_FF4) + lg4ff_deinit(hdev); + + hid_hw_stop(hdev); +} + static const struct hid_device_id lg_devices[] = { { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_MX3000_RECEIVER), .driver_data = LG_RDESC | LG_WIRELESS }, @@ -481,6 +490,7 @@ static struct hid_driver lg_driver = { .input_mapped = lg_input_mapped, .event = lg_event, .probe = lg_probe, + .remove = lg_remove, }; static int __init lg_init(void) |