Lines Matching refs:rgb
48 struct thingm_rgb *rgb; member
71 struct thingm_rgb *rgb; member
123 static int thingm_write_color(struct thingm_rgb *rgb) in thingm_write_color() argument
125 u8 buf[REPORT_SIZE] = { REPORT_ID, 'c', 0, 0, 0, 0, 0, rgb->num, 0 }; in thingm_write_color()
127 buf[2] = rgb->red.ldev.brightness; in thingm_write_color()
128 buf[3] = rgb->green.ldev.brightness; in thingm_write_color()
129 buf[4] = rgb->blue.ldev.brightness; in thingm_write_color()
131 return thingm_send(rgb->tdev, buf); in thingm_write_color()
136 struct thingm_rgb *rgb = container_of(work, struct thingm_rgb, work); in thingm_work() local
138 mutex_lock(&rgb->tdev->lock); in thingm_work()
140 if (thingm_write_color(rgb)) in thingm_work()
141 hid_err(rgb->tdev->hdev, "failed to write color\n"); in thingm_work()
143 mutex_unlock(&rgb->tdev->lock); in thingm_work()
152 schedule_work(&led->rgb->work); in thingm_led_set()
155 static int thingm_init_rgb(struct thingm_rgb *rgb) in thingm_init_rgb() argument
157 const int minor = ((struct hidraw *) rgb->tdev->hdev->hidraw)->minor; in thingm_init_rgb()
161 snprintf(rgb->red.name, sizeof(rgb->red.name), in thingm_init_rgb()
162 "thingm%d:red:led%d", minor, rgb->num); in thingm_init_rgb()
163 rgb->red.ldev.name = rgb->red.name; in thingm_init_rgb()
164 rgb->red.ldev.max_brightness = 255; in thingm_init_rgb()
165 rgb->red.ldev.brightness_set = thingm_led_set; in thingm_init_rgb()
166 rgb->red.rgb = rgb; in thingm_init_rgb()
168 err = led_classdev_register(&rgb->tdev->hdev->dev, &rgb->red.ldev); in thingm_init_rgb()
173 snprintf(rgb->green.name, sizeof(rgb->green.name), in thingm_init_rgb()
174 "thingm%d:green:led%d", minor, rgb->num); in thingm_init_rgb()
175 rgb->green.ldev.name = rgb->green.name; in thingm_init_rgb()
176 rgb->green.ldev.max_brightness = 255; in thingm_init_rgb()
177 rgb->green.ldev.brightness_set = thingm_led_set; in thingm_init_rgb()
178 rgb->green.rgb = rgb; in thingm_init_rgb()
180 err = led_classdev_register(&rgb->tdev->hdev->dev, &rgb->green.ldev); in thingm_init_rgb()
185 snprintf(rgb->blue.name, sizeof(rgb->blue.name), in thingm_init_rgb()
186 "thingm%d:blue:led%d", minor, rgb->num); in thingm_init_rgb()
187 rgb->blue.ldev.name = rgb->blue.name; in thingm_init_rgb()
188 rgb->blue.ldev.max_brightness = 255; in thingm_init_rgb()
189 rgb->blue.ldev.brightness_set = thingm_led_set; in thingm_init_rgb()
190 rgb->blue.rgb = rgb; in thingm_init_rgb()
192 err = led_classdev_register(&rgb->tdev->hdev->dev, &rgb->blue.ldev); in thingm_init_rgb()
196 INIT_WORK(&rgb->work, thingm_work); in thingm_init_rgb()
201 led_classdev_unregister(&rgb->green.ldev); in thingm_init_rgb()
204 led_classdev_unregister(&rgb->red.ldev); in thingm_init_rgb()
209 static void thingm_remove_rgb(struct thingm_rgb *rgb) in thingm_remove_rgb() argument
211 led_classdev_unregister(&rgb->red.ldev); in thingm_remove_rgb()
212 led_classdev_unregister(&rgb->green.ldev); in thingm_remove_rgb()
213 led_classdev_unregister(&rgb->blue.ldev); in thingm_remove_rgb()
214 flush_work(&rgb->work); in thingm_remove_rgb()
257 tdev->rgb = devm_kzalloc(&hdev->dev, in thingm_probe()
260 if (!tdev->rgb) { in thingm_probe()
266 struct thingm_rgb *rgb = tdev->rgb + i; in thingm_probe() local
268 rgb->tdev = tdev; in thingm_probe()
269 rgb->num = tdev->fwinfo->first + i; in thingm_probe()
270 err = thingm_init_rgb(rgb); in thingm_probe()
273 thingm_remove_rgb(tdev->rgb + i); in thingm_probe()
293 thingm_remove_rgb(tdev->rgb + i); in thingm_remove()