diff options
Diffstat (limited to 'drivers/hid/usbhid')
-rw-r--r-- | drivers/hid/usbhid/hid-core.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c index 2afc8617f591..6383145b5840 100644 --- a/drivers/hid/usbhid/hid-core.c +++ b/drivers/hid/usbhid/hid-core.c | |||
@@ -874,6 +874,15 @@ static int usbhid_start(struct hid_device *hid) | |||
874 | 874 | ||
875 | set_bit(HID_STARTED, &usbhid->iofl); | 875 | set_bit(HID_STARTED, &usbhid->iofl); |
876 | 876 | ||
877 | /* Some keyboards don't work until their LEDs have been set. | ||
878 | * Since BIOSes do set the LEDs, it must be safe for any device | ||
879 | * that supports the keyboard boot protocol. | ||
880 | */ | ||
881 | if (interface->desc.bInterfaceSubClass == USB_INTERFACE_SUBCLASS_BOOT && | ||
882 | interface->desc.bInterfaceProtocol == | ||
883 | USB_INTERFACE_PROTOCOL_KEYBOARD) | ||
884 | usbhid_set_leds(hid); | ||
885 | |||
877 | return 0; | 886 | return 0; |
878 | 887 | ||
879 | fail: | 888 | fail: |