Lines Matching refs:ldev

81 	int (*init)(struct hidled_device *ldev);
92 struct hidled_device *ldev; member
116 static int hidled_send(struct hidled_device *ldev, __u8 *buf) in hidled_send() argument
120 mutex_lock(&ldev->lock); in hidled_send()
126 memcpy(ldev->buf, buf, ldev->config->report_size); in hidled_send()
128 if (ldev->config->report_type == RAW_REQUEST) in hidled_send()
129 ret = hid_hw_raw_request(ldev->hdev, buf[0], ldev->buf, in hidled_send()
130 ldev->config->report_size, in hidled_send()
133 else if (ldev->config->report_type == OUTPUT_REPORT) in hidled_send()
134 ret = hid_hw_output_report(ldev->hdev, ldev->buf, in hidled_send()
135 ldev->config->report_size); in hidled_send()
139 mutex_unlock(&ldev->lock); in hidled_send()
144 return ret == ldev->config->report_size ? 0 : -EMSGSIZE; in hidled_send()
148 static int hidled_recv(struct hidled_device *ldev, __u8 *buf) in hidled_recv() argument
152 if (ldev->config->report_type != RAW_REQUEST) in hidled_recv()
155 mutex_lock(&ldev->lock); in hidled_recv()
157 memcpy(ldev->buf, buf, ldev->config->report_size); in hidled_recv()
159 ret = hid_hw_raw_request(ldev->hdev, buf[0], ldev->buf, in hidled_recv()
160 ldev->config->report_size, in hidled_recv()
166 ret = hid_hw_raw_request(ldev->hdev, buf[0], ldev->buf, in hidled_recv()
167 ldev->config->report_size, in hidled_recv()
171 memcpy(buf, ldev->buf, ldev->config->report_size); in hidled_recv()
173 mutex_unlock(&ldev->lock); in hidled_recv()
200 return hidled_send(rgb->ldev, buf); in riso_kagaku_write()
215 return hidled_send(rgb->ldev, buf); in dream_cheeky_write()
218 static int dream_cheeky_init(struct hidled_device *ldev) in dream_cheeky_init() argument
229 return hidled_send(ldev, buf); in dream_cheeky_init()
243 return hidled_send(led->rgb->ldev, buf); in _thingm_write()
266 static int thingm_init(struct hidled_device *ldev) in thingm_init() argument
271 ret = hidled_recv(ldev, buf); in thingm_init()
277 ldev->config = &hidled_config_thingm_v1; in thingm_init()
299 return hidled_send(led->rgb->ldev, dp.data); in delcom_enable_led()
309 return hidled_send(led->rgb->ldev, dp.data); in delcom_set_pwm()
329 static int delcom_init(struct hidled_device *ldev) in delcom_init() argument
334 ret = hidled_recv(ldev, dp.data); in delcom_init()
354 return hidled_send(led->rgb->ldev, buf); in luxafor_write()
416 const struct hidled_config *config = rgb->ldev->config; in hidled_init_led()
430 return devm_led_classdev_register(&rgb->ldev->hdev->dev, &led->cdev); in hidled_init_led()
453 struct hidled_device *ldev; in hidled_probe() local
457 ldev = devm_kzalloc(&hdev->dev, sizeof(*ldev), GFP_KERNEL); in hidled_probe()
458 if (!ldev) in hidled_probe()
461 ldev->buf = devm_kmalloc(&hdev->dev, MAX_REPORT_SIZE, GFP_KERNEL); in hidled_probe()
462 if (!ldev->buf) in hidled_probe()
469 ldev->hdev = hdev; in hidled_probe()
470 mutex_init(&ldev->lock); in hidled_probe()
472 for (i = 0; !ldev->config && i < ARRAY_SIZE(hidled_configs); i++) in hidled_probe()
474 ldev->config = &hidled_configs[i]; in hidled_probe()
476 if (!ldev->config) in hidled_probe()
479 if (ldev->config->init) { in hidled_probe()
480 ret = ldev->config->init(ldev); in hidled_probe()
485 ldev->rgb = devm_kcalloc(&hdev->dev, ldev->config->num_leds, in hidled_probe()
487 if (!ldev->rgb) in hidled_probe()
496 for (i = 0; i < ldev->config->num_leds; i++) { in hidled_probe()
497 ldev->rgb[i].ldev = ldev; in hidled_probe()
498 ldev->rgb[i].num = i; in hidled_probe()
499 ret = hidled_init_rgb(&ldev->rgb[i], minor); in hidled_probe()
506 hid_info(hdev, "%s initialized\n", ldev->config->name); in hidled_probe()