20 #include <linux/hid.h>
22 #include <linux/input.h>
39 #include <linux/module.h>
52 if (!report || report->
maxfield != 1 || report->
field[0]->report_count != 1)
59 spin_unlock_irqrestore(&data->
lock, flags);
62 static void picolcd_led_set_brightness(
struct led_classdev *led_cdev,
70 dev = led_cdev->
dev->parent;
72 data = hid_get_drvdata(hdev);
75 for (i = 0; i < 8; i++) {
76 if (led_cdev != data->led[i])
78 state = (data->led_state >>
i) & 1;
79 if (value ==
LED_OFF && state) {
80 data->led_state &= ~(1 <<
i);
82 }
else if (value !=
LED_OFF && !state) {
83 data->led_state |= 1 <<
i;
97 dev = led_cdev->
dev->parent;
99 data = hid_get_drvdata(hdev);
100 for (i = 0; i < 8; i++)
101 if (led_cdev == data->led[i]) {
102 value = (data->led_state >>
i) & 1;
118 if (report->
maxfield != 1 || report->
field[0]->report_count != 1 ||
119 report->
field[0]->report_size != 8) {
120 dev_err(dev,
"unsupported LED_STATE report");
124 for (i = 0; i < 8; i++) {
127 dev_err(dev,
"can't allocate memory for LED %d\n", i);
131 name = (
void *)(&led[1]);
132 snprintf(name, name_sz,
"%s::GPO%d", dev_name(dev), i);
144 dev_err(dev,
"can't register LED %d\n", i);
150 for (i = 0; i < 8; i++)
165 for (i = 0; i < 8; i++) {