Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney...
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 8 Aug 2014 00:25:10 +0000 (17:25 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 8 Aug 2014 00:25:10 +0000 (17:25 -0700)
Pull LED updates from Bryan Wu:
 "This cycle we got:
   - a fix of attribute-creation race for the whole leds subsystem
   - new drivers (HID:GT683R, leds-ipaq-micro)
   - other fixing and clean up"

* 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds: (23 commits)
  leds: ipaq-micro: fix sparse non static symbol warning
  leds: add driver for the iPAQ micro
  Documentation: dts: tcs6507: Fix wrong statement about #gpio-cells
  leds: convert blink timer to workqueue
  leds:pca963x: Update for PCA9635 and correct statement about MODE2 OUTDRV default
  leds:pca963x: Always initialize MODE2 register
  leds:pca963x: Add support for PCA9635 LED driver chip
  HID: gt683r: move mode attribute to led-class devices
  HID: gt683r: fix race condition
  HID: add support for MSI GT683R led panels
  leds: lp55xx-common: fix attribute-creation race
  leds: lp55xx-common: fix sysfs entry leak
  input: lm8323: fix attribute-creation race
  leds: wm831x-status: fix attribute-creation race
  leds: ss4200: fix attribute-creation race
  leds: ns2: fix attribute-creation race
  leds: netxbig: fix attribute-creation race
  leds: max8997: fix attribute-creation race
  leds: lm3642: fix attribute-creation race
  leds: lm355x: fix attribute-creation race
  ...

1  2 
drivers/hid/Kconfig
drivers/hid/Makefile
drivers/hid/hid-core.c
drivers/hid/hid-ids.h
drivers/hid/usbhid/hid-quirks.c

diff --combined drivers/hid/Kconfig
@@@ -261,6 -261,20 +261,20 @@@ config HOLTEK_F
          Say Y here if you have a Holtek On Line Grip based game controller
          and want to have force feedback support for it.
  
+ config HID_GT683R
+       tristate "MSI GT68xR LED support"
+       depends on LEDS_CLASS && USB_HID
+       ---help---
+       Say Y here if you want to enable support for the three MSI GT68xR LEDs
+       This driver support following modes:
+         - Normal: LEDs are fully on when enabled
+         - Audio:  LEDs brightness depends on sound level
+         - Breathing: LEDs brightness varies at human breathing rate
+       Currently the following devices are know to be supported:
+         - MSI GT683R
  config HID_HUION
        tristate "Huion tablets"
        depends on USB_HID
@@@ -331,20 -345,18 +345,20 @@@ config HID_LCPOWE
        ---help---
        Support for LC-Power RC1000MCE RF remote control.
  
 -config HID_LENOVO_TPKBD
 -      tristate "Lenovo ThinkPad USB Keyboard with TrackPoint"
 +config HID_LENOVO
 +      tristate "Lenovo / Thinkpad devices"
        depends on HID
        select NEW_LEDS
        select LEDS_CLASS
        ---help---
 -      Support for the Lenovo ThinkPad USB Keyboard with TrackPoint.
 +      Support for Lenovo devices that are not fully compliant with HID standard.
  
 -      Say Y here if you have a Lenovo ThinkPad USB Keyboard with TrackPoint
 -      and would like to use device-specific features like changing the
 -      sensitivity of the trackpoint, using the microphone mute button or
 -      controlling the mute and microphone mute LEDs.
 +      Say Y if you want support for the non-compliant features of the Lenovo
 +      Thinkpad standalone keyboards, e.g:
 +      - ThinkPad USB Keyboard with TrackPoint (supports extra LEDs and trackpoint
 +        configuration)
 +      - ThinkPad Compact Bluetooth Keyboard with TrackPoint (supports Fn keys)
 +      - ThinkPad Compact USB Keyboard with TrackPoint (supports Fn keys)
  
  config HID_LOGITECH
        tristate "Logitech devices" if EXPERT
@@@ -787,7 -799,7 +801,7 @@@ config HID_XINM
        depends on HID
        ---help---
        Support for Xin-Mo devices that are not fully compliant with the HID
 -      standard. Currently only supports the Xin-Mo Dual Arcade. Say Y here
 +      standard. Currently only supports the Xin-Mo Dual Arcade. Say Y here
        if you have a Xin-Mo Dual Arcade controller.
  
  config HID_ZEROPLUS
@@@ -812,7 -824,7 +826,7 @@@ config HID_ZYDACRO
  
  config HID_SENSOR_HUB
        tristate "HID Sensors framework support"
 -      depends on HID
 +      depends on HID && HAS_IOMEM
        select MFD_CORE
        default n
        ---help---
diff --combined drivers/hid/Makefile
@@@ -48,6 -48,7 +48,7 @@@ obj-$(CONFIG_HID_EMS_FF)      += hid-emsff.
  obj-$(CONFIG_HID_ELECOM)      += hid-elecom.o
  obj-$(CONFIG_HID_ELO)         += hid-elo.o
  obj-$(CONFIG_HID_EZKEY)               += hid-ezkey.o
+ obj-$(CONFIG_HID_GT683R)      += hid-gt683r.o
  obj-$(CONFIG_HID_GYRATION)    += hid-gyration.o
  obj-$(CONFIG_HID_HOLTEK)      += hid-holtek-kbd.o
  obj-$(CONFIG_HID_HOLTEK)      += hid-holtek-mouse.o
@@@ -59,7 -60,7 +60,7 @@@ obj-$(CONFIG_HID_KENSINGTON)  += hid-ken
  obj-$(CONFIG_HID_KEYTOUCH)    += hid-keytouch.o
  obj-$(CONFIG_HID_KYE)         += hid-kye.o
  obj-$(CONFIG_HID_LCPOWER)       += hid-lcpower.o
 -obj-$(CONFIG_HID_LENOVO_TPKBD)        += hid-lenovo-tpkbd.o
 +obj-$(CONFIG_HID_LENOVO)      += hid-lenovo.o
  obj-$(CONFIG_HID_LOGITECH)    += hid-logitech.o
  obj-$(CONFIG_HID_LOGITECH_DJ) += hid-logitech-dj.o
  obj-$(CONFIG_HID_MAGICMOUSE)    += hid-magicmouse.o
diff --combined drivers/hid/hid-core.c
@@@ -783,9 -783,7 +783,9 @@@ static int hid_scan_report(struct hid_d
        * Vendor specific handlings
        */
        if ((hid->vendor == USB_VENDOR_ID_SYNAPTICS) &&
 -          (hid->group == HID_GROUP_GENERIC))
 +          (hid->group == HID_GROUP_GENERIC) &&
 +          /* only bind to the mouse interface of composite USB devices */
 +          (hid->bus != BUS_USB || hid->type == HID_TYPE_USBMOUSE))
                /* hid-rmi should take care of them, not hid-generic */
                hid->group = HID_GROUP_RMI;
  
@@@ -1784,7 -1782,7 +1784,7 @@@ static const struct hid_device_id hid_h
        { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A070) },
        { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A072) },
        { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A081) },
 -      { HID_USB_DEVICE(USB_VENDOR_ID_HUION, USB_DEVICE_ID_HUION_580) },
 +      { HID_USB_DEVICE(USB_VENDOR_ID_HUION, USB_DEVICE_ID_HUION_TABLET) },
        { HID_USB_DEVICE(USB_VENDOR_ID_JESS2, USB_DEVICE_ID_JESS2_COLOR_RUMBLE_PAD) },
        { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ION, USB_DEVICE_ID_ICADE) },
        { HID_USB_DEVICE(USB_VENDOR_ID_KENSINGTON, USB_DEVICE_ID_KS_SLIMBLADE) },
        { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_M610X) },
        { HID_USB_DEVICE(USB_VENDOR_ID_LABTEC, USB_DEVICE_ID_LABTEC_WIRELESS_KEYBOARD) },
        { HID_USB_DEVICE(USB_VENDOR_ID_LCPOWER, USB_DEVICE_ID_LCPOWER_LC1000 ) },
 -#if IS_ENABLED(CONFIG_HID_LENOVO_TPKBD)
 +#if IS_ENABLED(CONFIG_HID_LENOVO)
        { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_TPKBD) },
 +      { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_CUSBKBD) },
 +      { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_CBTKBD) },
  #endif
        { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_MX3000_RECEIVER) },
        { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_S510_RECEIVER) },
        { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0) },
        { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_OFFICE_KB) },
        { HID_USB_DEVICE(USB_VENDOR_ID_MONTEREY, USB_DEVICE_ID_GENIUS_KB29E) },
+       { HID_USB_DEVICE(USB_VENDOR_ID_MSI, USB_DEVICE_ID_MSI_GT683R_LED_PANEL) },
        { HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN) },
        { HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_1) },
        { HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_2) },
@@@ -2270,7 -2267,6 +2271,7 @@@ static const struct hid_device_id hid_i
        { HID_USB_DEVICE(USB_VENDOR_ID_IMATION, USB_DEVICE_ID_DISC_STAKKA) },
        { HID_USB_DEVICE(USB_VENDOR_ID_JABRA, USB_DEVICE_ID_JABRA_SPEAK_410) },
        { HID_USB_DEVICE(USB_VENDOR_ID_JABRA, USB_DEVICE_ID_JABRA_SPEAK_510) },
 +      { HID_USB_DEVICE(USB_VENDOR_ID_JABRA, USB_DEVICE_ID_JABRA_GN9350E) },
        { HID_USB_DEVICE(USB_VENDOR_ID_KBGEAR, USB_DEVICE_ID_KBGEAR_JAMSTUDIO) },
        { HID_USB_DEVICE(USB_VENDOR_ID_KWORLD, USB_DEVICE_ID_KWORLD_RADIO_FM700) },
        { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_GPEN_560) },
diff --combined drivers/hid/hid-ids.h
  
  #define USB_VENDOR_ID_ETURBOTOUCH     0x22b9
  #define USB_DEVICE_ID_ETURBOTOUCH     0x0006
 +#define USB_DEVICE_ID_ETURBOTOUCH_2968        0x2968
  
  #define USB_VENDOR_ID_EZKEY           0x0518
  #define USB_DEVICE_ID_BTC_8193                0x0002
  #define USB_DEVICE_ID_UGCI_FIGHTING   0x0030
  
  #define USB_VENDOR_ID_HUION           0x256c
 -#define USB_DEVICE_ID_HUION_580               0x006e
 +#define USB_DEVICE_ID_HUION_TABLET    0x006e
  
  #define USB_VENDOR_ID_IDEACOM         0x1cb6
  #define USB_DEVICE_ID_IDEACOM_IDC6650 0x6650
  #define USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A070   0xa070
  #define USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A072   0xa072
  #define USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A081   0xa081
 +#define USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD_A096        0xa096
  
  #define USB_VENDOR_ID_IMATION         0x0718
  #define USB_DEVICE_ID_DISC_STAKKA     0xd000
  #define USB_VENDOR_ID_JABRA           0x0b0e
  #define USB_DEVICE_ID_JABRA_SPEAK_410 0x0412
  #define USB_DEVICE_ID_JABRA_SPEAK_510 0x0420
 +#define USB_DEVICE_ID_JABRA_GN9350E   0x9350
  
  #define USB_VENDOR_ID_JESS            0x0c45
  #define USB_DEVICE_ID_JESS_YUREX      0x1010
  
  #define USB_VENDOR_ID_LENOVO          0x17ef
  #define USB_DEVICE_ID_LENOVO_TPKBD    0x6009
 +#define USB_DEVICE_ID_LENOVO_CUSBKBD  0x6047
 +#define USB_DEVICE_ID_LENOVO_CBTKBD   0x6048
  
  #define USB_VENDOR_ID_LG              0x1fd2
  #define USB_DEVICE_ID_LG_MULTITOUCH   0x0064
  #define USB_DEVICE_ID_GENIUS_KB29E    0x3004
  
  #define USB_VENDOR_ID_MSI             0x1770
- #define USB_DEVICE_ID_MSI_GX680R_LED_PANEL    0xff00
+ #define USB_DEVICE_ID_MSI_GT683R_LED_PANEL 0xff00
  
  #define USB_VENDOR_ID_NATIONAL_SEMICONDUCTOR 0x0400
  #define USB_DEVICE_ID_N_S_HARMONY     0xc359
  
  #define USB_VENDOR_ID_PENMOUNT                0x14e1
  #define USB_DEVICE_ID_PENMOUNT_PCI    0x3500
 +#define USB_DEVICE_ID_PENMOUNT_1610   0x1610
 +#define USB_DEVICE_ID_PENMOUNT_1640   0x1640
  
  #define USB_VENDOR_ID_PETALYNX                0x18b1
  #define USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE  0x0037
@@@ -49,7 -49,6 +49,7 @@@ static const struct hid_blacklist 
  
        { USB_VENDOR_ID_EMS, USB_DEVICE_ID_EMS_TRIO_LINKER_PLUS_II, HID_QUIRK_MULTI_INPUT },
        { USB_VENDOR_ID_ETURBOTOUCH, USB_DEVICE_ID_ETURBOTOUCH, HID_QUIRK_MULTI_INPUT },
 +      { USB_VENDOR_ID_ETURBOTOUCH, USB_DEVICE_ID_ETURBOTOUCH_2968, HID_QUIRK_MULTI_INPUT },
        { USB_VENDOR_ID_GREENASIA, USB_DEVICE_ID_GREENASIA_DUAL_USB_JOYPAD, HID_QUIRK_MULTI_INPUT },
        { USB_VENDOR_ID_PANTHERLORD, USB_DEVICE_ID_PANTHERLORD_TWIN_USB_JOYSTICK, HID_QUIRK_MULTI_INPUT | HID_QUIRK_SKIP_OUTPUT_REPORTS },
        { USB_VENDOR_ID_PLAYDOTCOM, USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII, HID_QUIRK_MULTI_INPUT },
        { USB_VENDOR_ID_FORMOSA, USB_DEVICE_ID_FORMOSA_IR_RECEIVER, HID_QUIRK_NO_INIT_REPORTS },
        { USB_VENDOR_ID_FREESCALE, USB_DEVICE_ID_FREESCALE_MX28, HID_QUIRK_NOGET },
        { USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS, HID_QUIRK_NOGET },
-       { USB_VENDOR_ID_MSI, USB_DEVICE_ID_MSI_GX680R_LED_PANEL, HID_QUIRK_NO_INIT_REPORTS },
+       { USB_VENDOR_ID_MSI, USB_DEVICE_ID_MSI_GT683R_LED_PANEL, HID_QUIRK_NO_INIT_REPORTS },
        { USB_VENDOR_ID_NEXIO, USB_DEVICE_ID_NEXIO_MULTITOUCH_PTI0750, HID_QUIRK_NO_INIT_REPORTS },
        { USB_VENDOR_ID_NOVATEK, USB_DEVICE_ID_NOVATEK_MOUSE, HID_QUIRK_NO_INIT_REPORTS },
 +      { USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_1610, HID_QUIRK_NOGET },
 +      { USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_1640, HID_QUIRK_NOGET },
        { USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN, HID_QUIRK_NO_INIT_REPORTS },
        { USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN1, HID_QUIRK_NO_INIT_REPORTS },
        { USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN2, HID_QUIRK_NO_INIT_REPORTS },
        { USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_HD, HID_QUIRK_NO_INIT_REPORTS },
        { USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_QUAD_HD, HID_QUIRK_NO_INIT_REPORTS },
        { USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_TP_V103, HID_QUIRK_NO_INIT_REPORTS },
 +      { USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD_A096, HID_QUIRK_NO_INIT_INPUT_REPORTS },
  
        { 0, 0 }
  };