提交 9d1e048c 编写于 作者: H Heiner Kallweit 提交者: Jiri Kosina

HID: hid-led: add support for Greynut Luxafor

Add support for Greynut Luxafor. This device has two groups of three
independent LED's each.

Successfully tested with such a device.
Signed-off-by: NHeiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: NJiri Kosina <jkosina@suse.cz>
上级 de908650
...@@ -398,6 +398,7 @@ config HID_LED ...@@ -398,6 +398,7 @@ config HID_LED
- Dream Cheeky Webmail Notifier and Friends Alert - Dream Cheeky Webmail Notifier and Friends Alert
- ThingM blink(1) - ThingM blink(1)
- Delcom Visual Signal Indicator Generation 2 - Delcom Visual Signal Indicator Generation 2
- Greynut Luxafor
To compile this driver as a module, choose M here: the To compile this driver as a module, choose M here: the
module will be called hid-led. module will be called hid-led.
......
...@@ -1965,6 +1965,7 @@ static const struct hid_device_id hid_have_special_driver[] = { ...@@ -1965,6 +1965,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_SPACENAVIGATOR) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_SPACENAVIGATOR) },
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_PICOLCD) }, { HID_USB_DEVICE(USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_PICOLCD) },
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_PICOLCD_BOOTLOADER) }, { HID_USB_DEVICE(USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_PICOLCD_BOOTLOADER) },
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_LUXAFOR) },
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_COMFORT_MOUSE_4500) }, { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_COMFORT_MOUSE_4500) },
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_COMFORT_KEYBOARD) }, { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_COMFORT_KEYBOARD) },
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_SIDEWINDER_GV) }, { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_SIDEWINDER_GV) },
......
...@@ -685,6 +685,7 @@ ...@@ -685,6 +685,7 @@
#define USB_DEVICE_ID_PICOLCD_BOOTLOADER 0xf002 #define USB_DEVICE_ID_PICOLCD_BOOTLOADER 0xf002
#define USB_DEVICE_ID_PICK16F1454 0x0042 #define USB_DEVICE_ID_PICK16F1454 0x0042
#define USB_DEVICE_ID_PICK16F1454_V2 0xf2f7 #define USB_DEVICE_ID_PICK16F1454_V2 0xf2f7
#define USB_DEVICE_ID_LUXAFOR 0xf372
#define USB_VENDOR_ID_MICROSOFT 0x045e #define USB_VENDOR_ID_MICROSOFT 0x045e
#define USB_DEVICE_ID_SIDEWINDER_GV 0x003b #define USB_DEVICE_ID_SIDEWINDER_GV 0x003b
......
...@@ -28,6 +28,7 @@ enum hidled_type { ...@@ -28,6 +28,7 @@ enum hidled_type {
DREAM_CHEEKY, DREAM_CHEEKY,
THINGM, THINGM,
DELCOM, DELCOM,
LUXAFOR,
}; };
static unsigned const char riso_kagaku_tbl[] = { static unsigned const char riso_kagaku_tbl[] = {
...@@ -329,6 +330,19 @@ static int delcom_init(struct hidled_device *ldev) ...@@ -329,6 +330,19 @@ static int delcom_init(struct hidled_device *ldev)
return dp.fw.family_code == 2 ? 0 : -ENODEV; return dp.fw.family_code == 2 ? 0 : -ENODEV;
} }
static int luxafor_write(struct led_classdev *cdev, enum led_brightness br)
{
struct hidled_led *led = to_hidled_led(cdev);
__u8 buf[MAX_REPORT_SIZE] = { [1] = 1 };
buf[2] = led->rgb->num + 1;
buf[3] = led->rgb->red.cdev.brightness;
buf[4] = led->rgb->green.cdev.brightness;
buf[5] = led->rgb->blue.cdev.brightness;
return hidled_send(led->rgb->ldev, buf);
}
static const struct hidled_config hidled_configs[] = { static const struct hidled_config hidled_configs[] = {
{ {
.type = RISO_KAGAKU, .type = RISO_KAGAKU,
...@@ -373,6 +387,16 @@ static const struct hidled_config hidled_configs[] = { ...@@ -373,6 +387,16 @@ static const struct hidled_config hidled_configs[] = {
.init = delcom_init, .init = delcom_init,
.write = delcom_write, .write = delcom_write,
}, },
{
.type = LUXAFOR,
.name = "Greynut Luxafor",
.short_name = "luxafor",
.max_brightness = 255,
.num_leds = 6,
.report_size = 9,
.report_type = OUTPUT_REPORT,
.write = luxafor_write,
},
}; };
static int hidled_init_led(struct hidled_led *led, const char *color_name, static int hidled_init_led(struct hidled_led *led, const char *color_name,
...@@ -480,6 +504,8 @@ static const struct hid_device_id hidled_table[] = { ...@@ -480,6 +504,8 @@ static const struct hid_device_id hidled_table[] = {
USB_DEVICE_ID_BLINK1), .driver_data = THINGM }, USB_DEVICE_ID_BLINK1), .driver_data = THINGM },
{ HID_USB_DEVICE(USB_VENDOR_ID_DELCOM, { HID_USB_DEVICE(USB_VENDOR_ID_DELCOM,
USB_DEVICE_ID_DELCOM_VISUAL_IND), .driver_data = DELCOM }, USB_DEVICE_ID_DELCOM_VISUAL_IND), .driver_data = DELCOM },
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROCHIP,
USB_DEVICE_ID_LUXAFOR), .driver_data = LUXAFOR },
{ } { }
}; };
MODULE_DEVICE_TABLE(hid, hidled_table); MODULE_DEVICE_TABLE(hid, hidled_table);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册