Lines Matching defs:ldev

78 	int (*init)(struct hidled_device *ldev);
89 struct hidled_device *ldev;
113 static int hidled_send(struct hidled_device *ldev, __u8 *buf)
117 mutex_lock(&ldev->lock);
123 memcpy(ldev->buf, buf, ldev->config->report_size);
125 if (ldev->config->report_type == RAW_REQUEST)
126 ret = hid_hw_raw_request(ldev->hdev, buf[0], ldev->buf,
127 ldev->config->report_size,
130 else if (ldev->config->report_type == OUTPUT_REPORT)
131 ret = hid_hw_output_report(ldev->hdev, ldev->buf,
132 ldev->config->report_size);
136 mutex_unlock(&ldev->lock);
141 return ret == ldev->config->report_size ? 0 : -EMSGSIZE;
145 static int hidled_recv(struct hidled_device *ldev, __u8 *buf)
149 if (ldev->config->report_type != RAW_REQUEST)
152 mutex_lock(&ldev->lock);
154 memcpy(ldev->buf, buf, ldev->config->report_size);
156 ret = hid_hw_raw_request(ldev->hdev, buf[0], ldev->buf,
157 ldev->config->report_size,
163 ret = hid_hw_raw_request(ldev->hdev, buf[0], ldev->buf,
164 ldev->config->report_size,
168 memcpy(buf, ldev->buf, ldev->config->report_size);
170 mutex_unlock(&ldev->lock);
197 return hidled_send(rgb->ldev, buf);
212 return hidled_send(rgb->ldev, buf);
215 static int dream_cheeky_init(struct hidled_device *ldev)
226 return hidled_send(ldev, buf);
240 return hidled_send(led->rgb->ldev, buf);
263 static int thingm_init(struct hidled_device *ldev)
268 ret = hidled_recv(ldev, buf);
274 ldev->config = &hidled_config_thingm_v1;
296 return hidled_send(led->rgb->ldev, dp.data);
306 return hidled_send(led->rgb->ldev, dp.data);
326 static int delcom_init(struct hidled_device *ldev)
331 ret = hidled_recv(ldev, dp.data);
351 return hidled_send(led->rgb->ldev, buf);
413 const struct hidled_config *config = rgb->ldev->config;
427 return devm_led_classdev_register(&rgb->ldev->hdev->dev, &led->cdev);
450 struct hidled_device *ldev;
454 ldev = devm_kzalloc(&hdev->dev, sizeof(*ldev), GFP_KERNEL);
455 if (!ldev)
458 ldev->buf = devm_kmalloc(&hdev->dev, MAX_REPORT_SIZE, GFP_KERNEL);
459 if (!ldev->buf)
466 ldev->hdev = hdev;
467 mutex_init(&ldev->lock);
469 for (i = 0; !ldev->config && i < ARRAY_SIZE(hidled_configs); i++)
471 ldev->config = &hidled_configs[i];
473 if (!ldev->config)
476 if (ldev->config->init) {
477 ret = ldev->config->init(ldev);
482 ldev->rgb = devm_kcalloc(&hdev->dev, ldev->config->num_leds,
484 if (!ldev->rgb)
493 for (i = 0; i < ldev->config->num_leds; i++) {
494 ldev->rgb[i].ldev = ldev;
495 ldev->rgb[i].num = i;
496 ret = hidled_init_rgb(&ldev->rgb[i], minor);
503 hid_info(hdev, "%s initialized\n", ldev->config->name);