aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Slaby <jirislaby@gmail.com>2008-06-27 14:41:02 -0400
committerJiri Kosina <jkosina@suse.cz>2008-10-14 17:50:56 -0400
commit6edfa8dc33803a49ad936ead9840e453bee6ca3b (patch)
treea98640468512a114e356e5634467559fb17c9c69
parent93c10132a7ac160df3175b53f7ee857625412165 (diff)
HID: move reset leds quirk
Move the handling of the leds resetting from the core to the dell and logitech drivers. Signed-off-by: Jiri Slaby <jirislaby@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
-rw-r--r--drivers/hid/hid-dell.c4
-rw-r--r--drivers/hid/hid-logitech.c5
-rw-r--r--drivers/hid/usbhid/hid-core.c6
-rw-r--r--include/linux/hid.h2
4 files changed, 8 insertions, 9 deletions
diff --git a/drivers/hid/hid-dell.c b/drivers/hid/hid-dell.c
index 788faa6b6cac..98ee40e8751f 100644
--- a/drivers/hid/hid-dell.c
+++ b/drivers/hid/hid-dell.c
@@ -26,8 +26,6 @@ static int dell_probe(struct hid_device *hdev, const struct hid_device_id *id)
26{ 26{
27 int ret; 27 int ret;
28 28
29 hdev->quirks |= HID_QUIRK_RESET_LEDS;
30
31 ret = hid_parse(hdev); 29 ret = hid_parse(hdev);
32 if (ret) { 30 if (ret) {
33 dev_err(&hdev->dev, "parse failed\n"); 31 dev_err(&hdev->dev, "parse failed\n");
@@ -40,6 +38,8 @@ static int dell_probe(struct hid_device *hdev, const struct hid_device_id *id)
40 goto err_free; 38 goto err_free;
41 } 39 }
42 40
41 usbhid_set_leds(hdev);
42
43 return 0; 43 return 0;
44err_free: 44err_free:
45 return ret; 45 return ret;
diff --git a/drivers/hid/hid-logitech.c b/drivers/hid/hid-logitech.c
index 732258241c05..df27f9aadf26 100644
--- a/drivers/hid/hid-logitech.c
+++ b/drivers/hid/hid-logitech.c
@@ -226,8 +226,6 @@ static int lg_probe(struct hid_device *hdev, const struct hid_device_id *id)
226 226
227 hid_set_drvdata(hdev, (void *)quirks); 227 hid_set_drvdata(hdev, (void *)quirks);
228 228
229 if (quirks & LG_RESET_LEDS)
230 hdev->quirks |= HID_QUIRK_RESET_LEDS;
231 if (quirks & LG_NOGET) 229 if (quirks & LG_NOGET)
232 hdev->quirks |= HID_QUIRK_NOGET; 230 hdev->quirks |= HID_QUIRK_NOGET;
233 231
@@ -243,6 +241,9 @@ static int lg_probe(struct hid_device *hdev, const struct hid_device_id *id)
243 goto err_free; 241 goto err_free;
244 } 242 }
245 243
244 if (quirks & LG_RESET_LEDS)
245 usbhid_set_leds(hdev);
246
246 return 0; 247 return 0;
247err_free: 248err_free:
248 return ret; 249 return ret;
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
index 0513b60728d3..402ace751271 100644
--- a/drivers/hid/usbhid/hid-core.c
+++ b/drivers/hid/usbhid/hid-core.c
@@ -591,7 +591,7 @@ static int hid_find_field_early(struct hid_device *hid, unsigned int page,
591 return -1; 591 return -1;
592} 592}
593 593
594static void usbhid_set_leds(struct hid_device *hid) 594void usbhid_set_leds(struct hid_device *hid)
595{ 595{
596 struct hid_field *field; 596 struct hid_field *field;
597 int offset; 597 int offset;
@@ -601,6 +601,7 @@ static void usbhid_set_leds(struct hid_device *hid)
601 usbhid_submit_report(hid, field->report, USB_DIR_OUT); 601 usbhid_submit_report(hid, field->report, USB_DIR_OUT);
602 } 602 }
603} 603}
604EXPORT_SYMBOL_GPL(usbhid_set_leds);
604 605
605/* 606/*
606 * Traverse the supplied list of reports and find the longest 607 * Traverse the supplied list of reports and find the longest
@@ -860,9 +861,6 @@ static int usbhid_start(struct hid_device *hid)
860 usbhid_init_reports(hid); 861 usbhid_init_reports(hid);
861 hid_dump_device(hid); 862 hid_dump_device(hid);
862 863
863 if (hid->quirks & HID_QUIRK_RESET_LEDS)
864 usbhid_set_leds(hid);
865
866 return 0; 864 return 0;
867 865
868fail: 866fail:
diff --git a/include/linux/hid.h b/include/linux/hid.h
index 043209f7bfcf..b0f03fa2ed19 100644
--- a/include/linux/hid.h
+++ b/include/linux/hid.h
@@ -274,7 +274,6 @@ struct hid_item {
274#define HID_QUIRK_BADPAD 0x00000020 274#define HID_QUIRK_BADPAD 0x00000020
275#define HID_QUIRK_MULTI_INPUT 0x00000040 275#define HID_QUIRK_MULTI_INPUT 0x00000040
276#define HID_QUIRK_SKIP_OUTPUT_REPORTS 0x00010000 276#define HID_QUIRK_SKIP_OUTPUT_REPORTS 0x00010000
277#define HID_QUIRK_RESET_LEDS 0x00100000
278#define HID_QUIRK_FULLSPEED_INTERVAL 0x10000000 277#define HID_QUIRK_FULLSPEED_INTERVAL 0x10000000
279 278
280/* 279/*
@@ -756,6 +755,7 @@ extern void hid_generic_exit(void);
756u32 usbhid_lookup_quirk(const u16 idVendor, const u16 idProduct); 755u32 usbhid_lookup_quirk(const u16 idVendor, const u16 idProduct);
757int usbhid_quirks_init(char **quirks_param); 756int usbhid_quirks_init(char **quirks_param);
758void usbhid_quirks_exit(void); 757void usbhid_quirks_exit(void);
758void usbhid_set_leds(struct hid_device *hid);
759 759
760#ifdef CONFIG_HID_FF 760#ifdef CONFIG_HID_FF
761int hid_ff_init(struct hid_device *hid); 761int hid_ff_init(struct hid_device *hid);