Lines Matching refs:dev

93 static int u2fzero_send(struct u2fzero_device *dev, struct u2f_hid_report *req)  in u2fzero_send()  argument
97 mutex_lock(&dev->lock); in u2fzero_send()
99 memcpy(dev->buf_out, req, sizeof(struct u2f_hid_report)); in u2fzero_send()
101 ret = hid_hw_output_report(dev->hdev, dev->buf_out, in u2fzero_send()
104 mutex_unlock(&dev->lock); in u2fzero_send()
125 static int u2fzero_recv(struct u2fzero_device *dev, in u2fzero_recv() argument
130 struct hid_device *hdev = dev->hdev; in u2fzero_recv()
133 mutex_lock(&dev->lock); in u2fzero_recv()
135 memcpy(dev->buf_out, req, sizeof(struct u2f_hid_report)); in u2fzero_recv()
137 dev->urb->context = &ctx; in u2fzero_recv()
140 ret = usb_submit_urb(dev->urb, GFP_NOIO); in u2fzero_recv()
146 ret = hid_hw_output_report(dev->hdev, dev->buf_out, in u2fzero_recv()
157 usb_kill_urb(dev->urb); in u2fzero_recv()
160 ret = dev->urb->actual_length; in u2fzero_recv()
161 memcpy(resp, dev->buf_in, ret); in u2fzero_recv()
165 mutex_unlock(&dev->lock); in u2fzero_recv()
172 struct u2fzero_device *dev = container_of(ldev, in u2fzero_blink() local
178 .cmd = hw_configs[dev->hw_revision].wink_cmd, in u2fzero_blink()
184 return u2fzero_send(dev, &req); in u2fzero_blink()
200 struct u2fzero_device *dev = container_of(rng, in u2fzero_rng_read() local
206 .cmd = hw_configs[dev->hw_revision].rng_cmd, in u2fzero_rng_read()
218 if (!dev->present) { in u2fzero_rng_read()
219 hid_dbg(dev->hdev, "device not present"); in u2fzero_rng_read()
223 ret = u2fzero_recv(dev, &req, &resp); in u2fzero_rng_read()
238 static int u2fzero_init_led(struct u2fzero_device *dev, in u2fzero_init_led() argument
241 dev->led_name = devm_kasprintf(&dev->hdev->dev, GFP_KERNEL, in u2fzero_init_led()
243 if (dev->led_name == NULL) in u2fzero_init_led()
246 dev->ldev.name = dev->led_name; in u2fzero_init_led()
247 dev->ldev.max_brightness = LED_ON; in u2fzero_init_led()
248 dev->ldev.flags = LED_HW_PLUGGABLE; in u2fzero_init_led()
249 dev->ldev.brightness_set_blocking = u2fzero_brightness_set; in u2fzero_init_led()
251 return devm_led_classdev_register(&dev->hdev->dev, &dev->ldev); in u2fzero_init_led()
254 static int u2fzero_init_hwrng(struct u2fzero_device *dev, in u2fzero_init_hwrng() argument
257 dev->rng_name = devm_kasprintf(&dev->hdev->dev, GFP_KERNEL, in u2fzero_init_hwrng()
259 if (dev->rng_name == NULL) in u2fzero_init_hwrng()
262 dev->hwrng.name = dev->rng_name; in u2fzero_init_hwrng()
263 dev->hwrng.read = u2fzero_rng_read; in u2fzero_init_hwrng()
265 return devm_hwrng_register(&dev->hdev->dev, &dev->hwrng); in u2fzero_init_hwrng()
268 static int u2fzero_fill_in_urb(struct u2fzero_device *dev) in u2fzero_fill_in_urb() argument
270 struct hid_device *hdev = dev->hdev; in u2fzero_fill_in_urb()
276 if (dev->hdev->bus != BUS_USB) in u2fzero_fill_in_urb()
288 dev->urb = usb_alloc_urb(0, GFP_KERNEL); in u2fzero_fill_in_urb()
289 if (!dev->urb) in u2fzero_fill_in_urb()
294 usb_fill_int_urb(dev->urb, in u2fzero_fill_in_urb()
297 dev->buf_in, in u2fzero_fill_in_urb()
309 struct u2fzero_device *dev; in u2fzero_probe() local
316 dev = devm_kzalloc(&hdev->dev, sizeof(*dev), GFP_KERNEL); in u2fzero_probe()
317 if (dev == NULL) in u2fzero_probe()
320 dev->hw_revision = id->driver_data; in u2fzero_probe()
322 dev->buf_out = devm_kmalloc(&hdev->dev, in u2fzero_probe()
324 if (dev->buf_out == NULL) in u2fzero_probe()
327 dev->buf_in = devm_kmalloc(&hdev->dev, in u2fzero_probe()
329 if (dev->buf_in == NULL) in u2fzero_probe()
336 dev->hdev = hdev; in u2fzero_probe()
337 hid_set_drvdata(hdev, dev); in u2fzero_probe()
338 mutex_init(&dev->lock); in u2fzero_probe()
344 u2fzero_fill_in_urb(dev); in u2fzero_probe()
346 dev->present = true; in u2fzero_probe()
350 ret = u2fzero_init_led(dev, minor); in u2fzero_probe()
356 hid_info(hdev, "%s LED initialised\n", hw_configs[dev->hw_revision].name); in u2fzero_probe()
358 ret = u2fzero_init_hwrng(dev, minor); in u2fzero_probe()
364 hid_info(hdev, "%s RNG initialised\n", hw_configs[dev->hw_revision].name); in u2fzero_probe()
371 struct u2fzero_device *dev = hid_get_drvdata(hdev); in u2fzero_remove() local
373 mutex_lock(&dev->lock); in u2fzero_remove()
374 dev->present = false; in u2fzero_remove()
375 mutex_unlock(&dev->lock); in u2fzero_remove()
378 usb_poison_urb(dev->urb); in u2fzero_remove()
379 usb_free_urb(dev->urb); in u2fzero_remove()