From a38b5e990f4f3a3d6f1cb28815d957118a35bf88 Mon Sep 17 00:00:00 2001 From: Jiri Slaby Date: Fri, 27 Jun 2008 20:41:02 +0200 Subject: [PATCH] --- yaml --- r: 114447 b: refs/heads/master c: 6edfa8dc33803a49ad936ead9840e453bee6ca3b h: refs/heads/master i: 114445: e5d1b749bfff12a91d43155057eed490ff59b777 114443: 4b1f0f776ea7ac85911b06f8369338ebbb053dd3 114439: febcd8878e9e0ff040afdd01120f0ce36ca3985a 114431: 7ac63b8fd742472564d441591752034fb6f45a92 v: v3 --- [refs] | 2 +- trunk/drivers/hid/hid-dell.c | 4 ++-- trunk/drivers/hid/hid-logitech.c | 5 +++-- trunk/drivers/hid/usbhid/hid-core.c | 6 ++---- trunk/include/linux/hid.h | 2 +- 5 files changed, 9 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index e26387b94655..420d30755e99 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 93c10132a7ac160df3175b53f7ee857625412165 +refs/heads/master: 6edfa8dc33803a49ad936ead9840e453bee6ca3b diff --git a/trunk/drivers/hid/hid-dell.c b/trunk/drivers/hid/hid-dell.c index 788faa6b6cac..98ee40e8751f 100644 --- a/trunk/drivers/hid/hid-dell.c +++ b/trunk/drivers/hid/hid-dell.c @@ -26,8 +26,6 @@ static int dell_probe(struct hid_device *hdev, const struct hid_device_id *id) { int ret; - hdev->quirks |= HID_QUIRK_RESET_LEDS; - ret = hid_parse(hdev); if (ret) { 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) goto err_free; } + usbhid_set_leds(hdev); + return 0; err_free: return ret; diff --git a/trunk/drivers/hid/hid-logitech.c b/trunk/drivers/hid/hid-logitech.c index 732258241c05..df27f9aadf26 100644 --- a/trunk/drivers/hid/hid-logitech.c +++ b/trunk/drivers/hid/hid-logitech.c @@ -226,8 +226,6 @@ static int lg_probe(struct hid_device *hdev, const struct hid_device_id *id) hid_set_drvdata(hdev, (void *)quirks); - if (quirks & LG_RESET_LEDS) - hdev->quirks |= HID_QUIRK_RESET_LEDS; if (quirks & LG_NOGET) hdev->quirks |= HID_QUIRK_NOGET; @@ -243,6 +241,9 @@ static int lg_probe(struct hid_device *hdev, const struct hid_device_id *id) goto err_free; } + if (quirks & LG_RESET_LEDS) + usbhid_set_leds(hdev); + return 0; err_free: return ret; diff --git a/trunk/drivers/hid/usbhid/hid-core.c b/trunk/drivers/hid/usbhid/hid-core.c index 0513b60728d3..402ace751271 100644 --- a/trunk/drivers/hid/usbhid/hid-core.c +++ b/trunk/drivers/hid/usbhid/hid-core.c @@ -591,7 +591,7 @@ static int hid_find_field_early(struct hid_device *hid, unsigned int page, return -1; } -static void usbhid_set_leds(struct hid_device *hid) +void usbhid_set_leds(struct hid_device *hid) { struct hid_field *field; int offset; @@ -601,6 +601,7 @@ static void usbhid_set_leds(struct hid_device *hid) usbhid_submit_report(hid, field->report, USB_DIR_OUT); } } +EXPORT_SYMBOL_GPL(usbhid_set_leds); /* * Traverse the supplied list of reports and find the longest @@ -860,9 +861,6 @@ static int usbhid_start(struct hid_device *hid) usbhid_init_reports(hid); hid_dump_device(hid); - if (hid->quirks & HID_QUIRK_RESET_LEDS) - usbhid_set_leds(hid); - return 0; fail: diff --git a/trunk/include/linux/hid.h b/trunk/include/linux/hid.h index 043209f7bfcf..b0f03fa2ed19 100644 --- a/trunk/include/linux/hid.h +++ b/trunk/include/linux/hid.h @@ -274,7 +274,6 @@ struct hid_item { #define HID_QUIRK_BADPAD 0x00000020 #define HID_QUIRK_MULTI_INPUT 0x00000040 #define HID_QUIRK_SKIP_OUTPUT_REPORTS 0x00010000 -#define HID_QUIRK_RESET_LEDS 0x00100000 #define HID_QUIRK_FULLSPEED_INTERVAL 0x10000000 /* @@ -756,6 +755,7 @@ extern void hid_generic_exit(void); u32 usbhid_lookup_quirk(const u16 idVendor, const u16 idProduct); int usbhid_quirks_init(char **quirks_param); void usbhid_quirks_exit(void); +void usbhid_set_leds(struct hid_device *hid); #ifdef CONFIG_HID_FF int hid_ff_init(struct hid_device *hid);