Lines Matching refs:dev

81 	struct usb_yurex *dev = urb->context;  in yurex_control_callback()  local
85 dev_err(&urb->dev->dev, "%s - control failed: %d\n", in yurex_control_callback()
87 wake_up_interruptible(&dev->waitq); in yurex_control_callback()
95 struct usb_yurex *dev = to_yurex_dev(kref); in yurex_delete() local
97 dev_dbg(&dev->interface->dev, "%s\n", __func__); in yurex_delete()
99 usb_put_dev(dev->udev); in yurex_delete()
100 if (dev->cntl_urb) { in yurex_delete()
101 usb_kill_urb(dev->cntl_urb); in yurex_delete()
102 kfree(dev->cntl_req); in yurex_delete()
103 if (dev->cntl_buffer) in yurex_delete()
104 usb_free_coherent(dev->udev, YUREX_BUF_SIZE, in yurex_delete()
105 dev->cntl_buffer, dev->cntl_urb->transfer_dma); in yurex_delete()
106 usb_free_urb(dev->cntl_urb); in yurex_delete()
108 if (dev->urb) { in yurex_delete()
109 usb_kill_urb(dev->urb); in yurex_delete()
110 if (dev->int_buffer) in yurex_delete()
111 usb_free_coherent(dev->udev, YUREX_BUF_SIZE, in yurex_delete()
112 dev->int_buffer, dev->urb->transfer_dma); in yurex_delete()
113 usb_free_urb(dev->urb); in yurex_delete()
115 kfree(dev); in yurex_delete()
130 struct usb_yurex *dev = urb->context; in yurex_interrupt() local
131 unsigned char *buf = dev->int_buffer; in yurex_interrupt()
140 dev_err(&dev->interface->dev, in yurex_interrupt()
142 __func__, YUREX_BUF_SIZE, dev->urb->actual_length); in yurex_interrupt()
150 dev_err(&dev->interface->dev, in yurex_interrupt()
160 spin_lock_irqsave(&dev->lock, flags); in yurex_interrupt()
161 dev->bbu = 0; in yurex_interrupt()
163 dev->bbu += buf[i]; in yurex_interrupt()
165 dev->bbu <<= 8; in yurex_interrupt()
167 dev_dbg(&dev->interface->dev, "%s count: %lld\n", in yurex_interrupt()
168 __func__, dev->bbu); in yurex_interrupt()
169 spin_unlock_irqrestore(&dev->lock, flags); in yurex_interrupt()
171 kill_fasync(&dev->async_queue, SIGIO, POLL_IN); in yurex_interrupt()
174 dev_dbg(&dev->interface->dev, in yurex_interrupt()
178 dev_dbg(&dev->interface->dev, "%s ack: %c\n", in yurex_interrupt()
180 wake_up_interruptible(&dev->waitq); in yurex_interrupt()
185 retval = usb_submit_urb(dev->urb, GFP_ATOMIC); in yurex_interrupt()
187 dev_err(&dev->interface->dev, "%s - usb_submit_urb failed: %d\n", in yurex_interrupt()
194 struct usb_yurex *dev; in yurex_probe() local
202 dev = kzalloc(sizeof(*dev), GFP_KERNEL); in yurex_probe()
203 if (!dev) { in yurex_probe()
204 dev_err(&interface->dev, "Out of memory\n"); in yurex_probe()
207 kref_init(&dev->kref); in yurex_probe()
208 mutex_init(&dev->io_mutex); in yurex_probe()
209 spin_lock_init(&dev->lock); in yurex_probe()
210 init_waitqueue_head(&dev->waitq); in yurex_probe()
212 dev->udev = usb_get_dev(interface_to_usbdev(interface)); in yurex_probe()
213 dev->interface = interface; in yurex_probe()
221 dev->int_in_endpointAddr = endpoint->bEndpointAddress; in yurex_probe()
225 if (!dev->int_in_endpointAddr) { in yurex_probe()
227 dev_err(&interface->dev, "Could not find endpoints\n"); in yurex_probe()
233 dev->cntl_urb = usb_alloc_urb(0, GFP_KERNEL); in yurex_probe()
234 if (!dev->cntl_urb) { in yurex_probe()
235 dev_err(&interface->dev, "Could not allocate control URB\n"); in yurex_probe()
240 dev->cntl_req = kmalloc(YUREX_BUF_SIZE, GFP_KERNEL); in yurex_probe()
241 if (!dev->cntl_req) { in yurex_probe()
242 dev_err(&interface->dev, "Could not allocate cntl_req\n"); in yurex_probe()
247 dev->cntl_buffer = usb_alloc_coherent(dev->udev, YUREX_BUF_SIZE, in yurex_probe()
249 &dev->cntl_urb->transfer_dma); in yurex_probe()
250 if (!dev->cntl_buffer) { in yurex_probe()
251 dev_err(&interface->dev, "Could not allocate cntl_buffer\n"); in yurex_probe()
256 dev->cntl_req->bRequestType = USB_DIR_OUT | USB_TYPE_CLASS | in yurex_probe()
258 dev->cntl_req->bRequest = HID_REQ_SET_REPORT; in yurex_probe()
259 dev->cntl_req->wValue = cpu_to_le16((HID_OUTPUT_REPORT + 1) << 8); in yurex_probe()
260 dev->cntl_req->wIndex = cpu_to_le16(iface_desc->desc.bInterfaceNumber); in yurex_probe()
261 dev->cntl_req->wLength = cpu_to_le16(YUREX_BUF_SIZE); in yurex_probe()
263 usb_fill_control_urb(dev->cntl_urb, dev->udev, in yurex_probe()
264 usb_sndctrlpipe(dev->udev, 0), in yurex_probe()
265 (void *)dev->cntl_req, dev->cntl_buffer, in yurex_probe()
266 YUREX_BUF_SIZE, yurex_control_callback, dev); in yurex_probe()
267 dev->cntl_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; in yurex_probe()
271 dev->urb = usb_alloc_urb(0, GFP_KERNEL); in yurex_probe()
272 if (!dev->urb) { in yurex_probe()
273 dev_err(&interface->dev, "Could not allocate URB\n"); in yurex_probe()
278 dev->int_buffer = usb_alloc_coherent(dev->udev, YUREX_BUF_SIZE, in yurex_probe()
279 GFP_KERNEL, &dev->urb->transfer_dma); in yurex_probe()
280 if (!dev->int_buffer) { in yurex_probe()
281 dev_err(&interface->dev, "Could not allocate int_buffer\n"); in yurex_probe()
286 usb_fill_int_urb(dev->urb, dev->udev, in yurex_probe()
287 usb_rcvintpipe(dev->udev, dev->int_in_endpointAddr), in yurex_probe()
288 dev->int_buffer, YUREX_BUF_SIZE, yurex_interrupt, in yurex_probe()
289 dev, 1); in yurex_probe()
290 dev->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; in yurex_probe()
291 if (usb_submit_urb(dev->urb, GFP_KERNEL)) { in yurex_probe()
293 dev_err(&interface->dev, "Could not submitting URB\n"); in yurex_probe()
298 usb_set_intfdata(interface, dev); in yurex_probe()
299 dev->bbu = -1; in yurex_probe()
304 dev_err(&interface->dev, in yurex_probe()
310 dev_info(&interface->dev, in yurex_probe()
317 if (dev) in yurex_probe()
319 kref_put(&dev->kref, yurex_delete); in yurex_probe()
325 struct usb_yurex *dev; in yurex_disconnect() local
328 dev = usb_get_intfdata(interface); in yurex_disconnect()
335 mutex_lock(&dev->io_mutex); in yurex_disconnect()
336 dev->interface = NULL; in yurex_disconnect()
337 mutex_unlock(&dev->io_mutex); in yurex_disconnect()
340 kill_fasync(&dev->async_queue, SIGIO, POLL_IN); in yurex_disconnect()
341 wake_up_interruptible(&dev->waitq); in yurex_disconnect()
344 kref_put(&dev->kref, yurex_delete); in yurex_disconnect()
346 dev_info(&interface->dev, "USB YUREX #%d now disconnected\n", minor); in yurex_disconnect()
359 struct usb_yurex *dev; in yurex_fasync() local
361 dev = file->private_data; in yurex_fasync()
362 return fasync_helper(fd, file, on, &dev->async_queue); in yurex_fasync()
367 struct usb_yurex *dev; in yurex_open() local
382 dev = usb_get_intfdata(interface); in yurex_open()
383 if (!dev) { in yurex_open()
389 kref_get(&dev->kref); in yurex_open()
392 mutex_lock(&dev->io_mutex); in yurex_open()
393 file->private_data = dev; in yurex_open()
394 mutex_unlock(&dev->io_mutex); in yurex_open()
402 struct usb_yurex *dev; in yurex_release() local
404 dev = file->private_data; in yurex_release()
405 if (dev == NULL) in yurex_release()
409 kref_put(&dev->kref, yurex_delete); in yurex_release()
416 struct usb_yurex *dev; in yurex_read() local
422 dev = file->private_data; in yurex_read()
424 mutex_lock(&dev->io_mutex); in yurex_read()
425 if (!dev->interface) { /* already disconnected */ in yurex_read()
430 spin_lock_irqsave(&dev->lock, flags); in yurex_read()
431 bytes_read = snprintf(in_buffer, 20, "%lld\n", dev->bbu); in yurex_read()
432 spin_unlock_irqrestore(&dev->lock, flags); in yurex_read()
444 mutex_unlock(&dev->io_mutex); in yurex_read()
451 struct usb_yurex *dev; in yurex_write() local
460 dev = file->private_data; in yurex_write()
466 mutex_lock(&dev->io_mutex); in yurex_write()
467 if (!dev->interface) { /* already disconnected */ in yurex_write()
468 mutex_unlock(&dev->io_mutex); in yurex_write()
474 mutex_unlock(&dev->io_mutex); in yurex_write()
478 memset(dev->cntl_buffer, CMD_PADDING, YUREX_BUF_SIZE); in yurex_write()
483 dev->cntl_buffer[0] = buffer[0]; in yurex_write()
484 dev->cntl_buffer[1] = buffer[1]; in yurex_write()
485 dev->cntl_buffer[2] = CMD_EOF; in yurex_write()
489 dev->cntl_buffer[0] = buffer[0]; in yurex_write()
490 dev->cntl_buffer[1] = 0x00; in yurex_write()
491 dev->cntl_buffer[2] = CMD_EOF; in yurex_write()
499 dev->cntl_buffer[0] = CMD_SET; in yurex_write()
501 dev->cntl_buffer[i] = (c>>32) & 0xff; in yurex_write()
507 mutex_unlock(&dev->io_mutex); in yurex_write()
512 prepare_to_wait(&dev->waitq, &wait, TASK_INTERRUPTIBLE); in yurex_write()
513 dev_dbg(&dev->interface->dev, "%s - submit %c\n", __func__, in yurex_write()
514 dev->cntl_buffer[0]); in yurex_write()
515 retval = usb_submit_urb(dev->cntl_urb, GFP_KERNEL); in yurex_write()
518 finish_wait(&dev->waitq, &wait); in yurex_write()
520 mutex_unlock(&dev->io_mutex); in yurex_write()
523 dev_err(&dev->interface->dev, in yurex_write()
529 dev->bbu = c2; in yurex_write()