Lines Matching refs:dev

138 	struct raw_dev		*dev;  member
166 struct device *dev; member
189 struct raw_dev *dev; in dev_new() local
191 dev = kzalloc(sizeof(*dev), GFP_KERNEL); in dev_new()
192 if (!dev) in dev_new()
195 kref_init(&dev->count); in dev_new()
196 spin_lock_init(&dev->lock); in dev_new()
197 init_completion(&dev->ep0_done); in dev_new()
198 raw_event_queue_init(&dev->queue); in dev_new()
199 dev->driver_id_number = -1; in dev_new()
200 return dev; in dev_new()
205 struct raw_dev *dev = container_of(kref, struct raw_dev, count); in dev_free() local
208 kfree(dev->udc_name); in dev_free()
209 kfree(dev->driver.udc_name); in dev_free()
210 kfree(dev->driver.driver.name); in dev_free()
211 if (dev->driver_id_number >= 0) in dev_free()
212 ida_free(&driver_id_numbers, dev->driver_id_number); in dev_free()
213 if (dev->req) { in dev_free()
214 if (dev->ep0_urb_queued) in dev_free()
215 usb_ep_dequeue(dev->gadget->ep0, dev->req); in dev_free()
216 usb_ep_free_request(dev->gadget->ep0, dev->req); in dev_free()
218 raw_event_queue_destroy(&dev->queue); in dev_free()
219 for (i = 0; i < dev->eps_num; i++) { in dev_free()
220 if (dev->eps[i].state == STATE_EP_DISABLED) in dev_free()
222 usb_ep_disable(dev->eps[i].ep); in dev_free()
223 usb_ep_free_request(dev->eps[i].ep, dev->eps[i].req); in dev_free()
224 kfree(dev->eps[i].ep->desc); in dev_free()
225 dev->eps[i].state = STATE_EP_DISABLED; in dev_free()
227 kfree(dev); in dev_free()
232 static int raw_queue_event(struct raw_dev *dev, in raw_queue_event() argument
238 ret = raw_event_queue_add(&dev->queue, type, length, data); in raw_queue_event()
240 spin_lock_irqsave(&dev->lock, flags); in raw_queue_event()
241 dev->state = STATE_DEV_FAILED; in raw_queue_event()
242 spin_unlock_irqrestore(&dev->lock, flags); in raw_queue_event()
249 struct raw_dev *dev = req->context; in gadget_ep0_complete() local
252 spin_lock_irqsave(&dev->lock, flags); in gadget_ep0_complete()
254 dev->ep0_status = req->status; in gadget_ep0_complete()
256 dev->ep0_status = req->actual; in gadget_ep0_complete()
257 if (dev->ep0_in_pending) in gadget_ep0_complete()
258 dev->ep0_in_pending = false; in gadget_ep0_complete()
260 dev->ep0_out_pending = false; in gadget_ep0_complete()
261 spin_unlock_irqrestore(&dev->lock, flags); in gadget_ep0_complete()
263 complete(&dev->ep0_done); in gadget_ep0_complete()
283 struct raw_dev *dev = container_of(driver, struct raw_dev, driver); in gadget_bind() local
288 if (strcmp(gadget->name, dev->udc_name) != 0) in gadget_bind()
291 set_gadget_data(gadget, dev); in gadget_bind()
294 dev_err(&gadget->dev, "usb_ep_alloc_request failed\n"); in gadget_bind()
299 spin_lock_irqsave(&dev->lock, flags); in gadget_bind()
300 dev->req = req; in gadget_bind()
301 dev->req->context = dev; in gadget_bind()
302 dev->req->complete = gadget_ep0_complete; in gadget_bind()
303 dev->gadget = gadget; in gadget_bind()
304 gadget_for_each_ep(ep, dev->gadget) { in gadget_bind()
305 dev->eps[i].ep = ep; in gadget_bind()
306 dev->eps[i].addr = get_ep_addr(ep->name); in gadget_bind()
307 dev->eps[i].state = STATE_EP_DISABLED; in gadget_bind()
310 dev->eps_num = i; in gadget_bind()
311 spin_unlock_irqrestore(&dev->lock, flags); in gadget_bind()
313 ret = raw_queue_event(dev, USB_RAW_EVENT_CONNECT, 0, NULL); in gadget_bind()
315 dev_err(&gadget->dev, "failed to queue event\n"); in gadget_bind()
321 kref_get(&dev->count); in gadget_bind()
327 struct raw_dev *dev = get_gadget_data(gadget); in gadget_unbind() local
331 kref_put(&dev->count, dev_free); in gadget_unbind()
338 struct raw_dev *dev = get_gadget_data(gadget); in gadget_setup() local
341 spin_lock_irqsave(&dev->lock, flags); in gadget_setup()
342 if (dev->state != STATE_DEV_RUNNING) { in gadget_setup()
343 dev_err(&gadget->dev, "ignoring, device is not running\n"); in gadget_setup()
347 if (dev->ep0_in_pending || dev->ep0_out_pending) { in gadget_setup()
348 dev_dbg(&gadget->dev, "stalling, request already pending\n"); in gadget_setup()
353 dev->ep0_in_pending = true; in gadget_setup()
355 dev->ep0_out_pending = true; in gadget_setup()
356 spin_unlock_irqrestore(&dev->lock, flags); in gadget_setup()
358 ret = raw_queue_event(dev, USB_RAW_EVENT_CONTROL, sizeof(*ctrl), ctrl); in gadget_setup()
360 dev_err(&gadget->dev, "failed to queue event\n"); in gadget_setup()
364 spin_unlock_irqrestore(&dev->lock, flags); in gadget_setup()
381 struct raw_dev *dev; in raw_open() local
387 dev = dev_new(); in raw_open()
388 if (!dev) in raw_open()
390 fd->private_data = dev; in raw_open()
391 dev->state = STATE_DEV_OPENED; in raw_open()
392 dev->dev = raw_misc_device.this_device; in raw_open()
399 struct raw_dev *dev = fd->private_data; in raw_release() local
403 spin_lock_irqsave(&dev->lock, flags); in raw_release()
404 dev->state = STATE_DEV_CLOSED; in raw_release()
405 if (!dev->gadget) { in raw_release()
406 spin_unlock_irqrestore(&dev->lock, flags); in raw_release()
409 if (dev->gadget_registered) in raw_release()
411 dev->gadget_registered = false; in raw_release()
412 spin_unlock_irqrestore(&dev->lock, flags); in raw_release()
415 ret = usb_gadget_unregister_driver(&dev->driver); in raw_release()
417 dev_err(dev->dev, in raw_release()
421 kref_put(&dev->count, dev_free); in raw_release()
426 kref_put(&dev->count, dev_free); in raw_release()
432 static int raw_ioctl_init(struct raw_dev *dev, unsigned long value) in raw_ioctl_init() argument
492 spin_lock_irqsave(&dev->lock, flags); in raw_ioctl_init()
493 if (dev->state != STATE_DEV_OPENED) { in raw_ioctl_init()
494 dev_dbg(dev->dev, "fail, device is not opened\n"); in raw_ioctl_init()
498 dev->udc_name = udc_driver_name; in raw_ioctl_init()
500 dev->driver.function = DRIVER_DESC; in raw_ioctl_init()
501 dev->driver.max_speed = arg.speed; in raw_ioctl_init()
502 dev->driver.setup = gadget_setup; in raw_ioctl_init()
503 dev->driver.disconnect = gadget_disconnect; in raw_ioctl_init()
504 dev->driver.bind = gadget_bind; in raw_ioctl_init()
505 dev->driver.unbind = gadget_unbind; in raw_ioctl_init()
506 dev->driver.suspend = gadget_suspend; in raw_ioctl_init()
507 dev->driver.resume = gadget_resume; in raw_ioctl_init()
508 dev->driver.reset = gadget_reset; in raw_ioctl_init()
509 dev->driver.driver.name = driver_driver_name; in raw_ioctl_init()
510 dev->driver.udc_name = udc_device_name; in raw_ioctl_init()
511 dev->driver.match_existing_only = 1; in raw_ioctl_init()
512 dev->driver_id_number = driver_id_number; in raw_ioctl_init()
514 dev->state = STATE_DEV_INITIALIZED; in raw_ioctl_init()
515 spin_unlock_irqrestore(&dev->lock, flags); in raw_ioctl_init()
519 spin_unlock_irqrestore(&dev->lock, flags); in raw_ioctl_init()
531 static int raw_ioctl_run(struct raw_dev *dev, unsigned long value) in raw_ioctl_run() argument
539 spin_lock_irqsave(&dev->lock, flags); in raw_ioctl_run()
540 if (dev->state != STATE_DEV_INITIALIZED) { in raw_ioctl_run()
541 dev_dbg(dev->dev, "fail, device is not initialized\n"); in raw_ioctl_run()
545 dev->state = STATE_DEV_REGISTERING; in raw_ioctl_run()
546 spin_unlock_irqrestore(&dev->lock, flags); in raw_ioctl_run()
548 ret = usb_gadget_register_driver(&dev->driver); in raw_ioctl_run()
550 spin_lock_irqsave(&dev->lock, flags); in raw_ioctl_run()
552 dev_err(dev->dev, in raw_ioctl_run()
554 dev->state = STATE_DEV_FAILED; in raw_ioctl_run()
557 dev->gadget_registered = true; in raw_ioctl_run()
558 dev->state = STATE_DEV_RUNNING; in raw_ioctl_run()
560 kref_get(&dev->count); in raw_ioctl_run()
563 spin_unlock_irqrestore(&dev->lock, flags); in raw_ioctl_run()
567 static int raw_ioctl_event_fetch(struct raw_dev *dev, unsigned long value) in raw_ioctl_event_fetch() argument
577 spin_lock_irqsave(&dev->lock, flags); in raw_ioctl_event_fetch()
578 if (dev->state != STATE_DEV_RUNNING) { in raw_ioctl_event_fetch()
579 dev_dbg(dev->dev, "fail, device is not running\n"); in raw_ioctl_event_fetch()
580 spin_unlock_irqrestore(&dev->lock, flags); in raw_ioctl_event_fetch()
583 if (!dev->gadget) { in raw_ioctl_event_fetch()
584 dev_dbg(dev->dev, "fail, gadget is not bound\n"); in raw_ioctl_event_fetch()
585 spin_unlock_irqrestore(&dev->lock, flags); in raw_ioctl_event_fetch()
588 spin_unlock_irqrestore(&dev->lock, flags); in raw_ioctl_event_fetch()
590 event = raw_event_queue_fetch(&dev->queue); in raw_ioctl_event_fetch()
592 dev_dbg(&dev->gadget->dev, "event fetching interrupted\n"); in raw_ioctl_event_fetch()
596 dev_err(&dev->gadget->dev, "failed to fetch event\n"); in raw_ioctl_event_fetch()
597 spin_lock_irqsave(&dev->lock, flags); in raw_ioctl_event_fetch()
598 dev->state = STATE_DEV_FAILED; in raw_ioctl_event_fetch()
599 spin_unlock_irqrestore(&dev->lock, flags); in raw_ioctl_event_fetch()
635 static int raw_process_ep0_io(struct raw_dev *dev, struct usb_raw_ep_io *io, in raw_process_ep0_io() argument
641 spin_lock_irqsave(&dev->lock, flags); in raw_process_ep0_io()
642 if (dev->state != STATE_DEV_RUNNING) { in raw_process_ep0_io()
643 dev_dbg(dev->dev, "fail, device is not running\n"); in raw_process_ep0_io()
647 if (!dev->gadget) { in raw_process_ep0_io()
648 dev_dbg(dev->dev, "fail, gadget is not bound\n"); in raw_process_ep0_io()
652 if (dev->ep0_urb_queued) { in raw_process_ep0_io()
653 dev_dbg(&dev->gadget->dev, "fail, urb already queued\n"); in raw_process_ep0_io()
657 if ((in && !dev->ep0_in_pending) || in raw_process_ep0_io()
658 (!in && !dev->ep0_out_pending)) { in raw_process_ep0_io()
659 dev_dbg(&dev->gadget->dev, "fail, wrong direction\n"); in raw_process_ep0_io()
663 if (WARN_ON(in && dev->ep0_out_pending)) { in raw_process_ep0_io()
665 dev->state = STATE_DEV_FAILED; in raw_process_ep0_io()
668 if (WARN_ON(!in && dev->ep0_in_pending)) { in raw_process_ep0_io()
670 dev->state = STATE_DEV_FAILED; in raw_process_ep0_io()
674 dev->req->buf = data; in raw_process_ep0_io()
675 dev->req->length = io->length; in raw_process_ep0_io()
676 dev->req->zero = usb_raw_io_flags_zero(io->flags); in raw_process_ep0_io()
677 dev->ep0_urb_queued = true; in raw_process_ep0_io()
678 spin_unlock_irqrestore(&dev->lock, flags); in raw_process_ep0_io()
680 ret = usb_ep_queue(dev->gadget->ep0, dev->req, GFP_KERNEL); in raw_process_ep0_io()
682 dev_err(&dev->gadget->dev, in raw_process_ep0_io()
684 spin_lock_irqsave(&dev->lock, flags); in raw_process_ep0_io()
685 dev->state = STATE_DEV_FAILED; in raw_process_ep0_io()
689 ret = wait_for_completion_interruptible(&dev->ep0_done); in raw_process_ep0_io()
691 dev_dbg(&dev->gadget->dev, "wait interrupted\n"); in raw_process_ep0_io()
692 usb_ep_dequeue(dev->gadget->ep0, dev->req); in raw_process_ep0_io()
693 wait_for_completion(&dev->ep0_done); in raw_process_ep0_io()
694 spin_lock_irqsave(&dev->lock, flags); in raw_process_ep0_io()
695 if (dev->ep0_status == -ECONNRESET) in raw_process_ep0_io()
696 dev->ep0_status = -EINTR; in raw_process_ep0_io()
700 spin_lock_irqsave(&dev->lock, flags); in raw_process_ep0_io()
703 ret = dev->ep0_status; in raw_process_ep0_io()
705 dev->ep0_urb_queued = false; in raw_process_ep0_io()
707 spin_unlock_irqrestore(&dev->lock, flags); in raw_process_ep0_io()
711 static int raw_ioctl_ep0_write(struct raw_dev *dev, unsigned long value) in raw_ioctl_ep0_write() argument
720 ret = raw_process_ep0_io(dev, &io, data, true); in raw_ioctl_ep0_write()
725 static int raw_ioctl_ep0_read(struct raw_dev *dev, unsigned long value) in raw_ioctl_ep0_read() argument
735 ret = raw_process_ep0_io(dev, &io, data, false); in raw_ioctl_ep0_read()
749 static int raw_ioctl_ep0_stall(struct raw_dev *dev, unsigned long value) in raw_ioctl_ep0_stall() argument
756 spin_lock_irqsave(&dev->lock, flags); in raw_ioctl_ep0_stall()
757 if (dev->state != STATE_DEV_RUNNING) { in raw_ioctl_ep0_stall()
758 dev_dbg(dev->dev, "fail, device is not running\n"); in raw_ioctl_ep0_stall()
762 if (!dev->gadget) { in raw_ioctl_ep0_stall()
763 dev_dbg(dev->dev, "fail, gadget is not bound\n"); in raw_ioctl_ep0_stall()
767 if (dev->ep0_urb_queued) { in raw_ioctl_ep0_stall()
768 dev_dbg(&dev->gadget->dev, "fail, urb already queued\n"); in raw_ioctl_ep0_stall()
772 if (!dev->ep0_in_pending && !dev->ep0_out_pending) { in raw_ioctl_ep0_stall()
773 dev_dbg(&dev->gadget->dev, "fail, no request pending\n"); in raw_ioctl_ep0_stall()
778 ret = usb_ep_set_halt(dev->gadget->ep0); in raw_ioctl_ep0_stall()
780 dev_err(&dev->gadget->dev, in raw_ioctl_ep0_stall()
783 if (dev->ep0_in_pending) in raw_ioctl_ep0_stall()
784 dev->ep0_in_pending = false; in raw_ioctl_ep0_stall()
786 dev->ep0_out_pending = false; in raw_ioctl_ep0_stall()
789 spin_unlock_irqrestore(&dev->lock, flags); in raw_ioctl_ep0_stall()
793 static int raw_ioctl_ep_enable(struct raw_dev *dev, unsigned long value) in raw_ioctl_ep_enable() argument
810 dev_dbg(dev->dev, "fail, bad endpoint maxpacket\n"); in raw_ioctl_ep_enable()
815 spin_lock_irqsave(&dev->lock, flags); in raw_ioctl_ep_enable()
816 if (dev->state != STATE_DEV_RUNNING) { in raw_ioctl_ep_enable()
817 dev_dbg(dev->dev, "fail, device is not running\n"); in raw_ioctl_ep_enable()
821 if (!dev->gadget) { in raw_ioctl_ep_enable()
822 dev_dbg(dev->dev, "fail, gadget is not bound\n"); in raw_ioctl_ep_enable()
827 for (i = 0; i < dev->eps_num; i++) { in raw_ioctl_ep_enable()
828 ep = &dev->eps[i]; in raw_ioctl_ep_enable()
832 if (!usb_gadget_ep_match_desc(dev->gadget, ep->ep, desc, NULL)) in raw_ioctl_ep_enable()
840 dev_err(&dev->gadget->dev, in raw_ioctl_ep_enable()
846 dev_err(&dev->gadget->dev, in raw_ioctl_ep_enable()
859 dev_dbg(&dev->gadget->dev, "fail, bad endpoint descriptor\n"); in raw_ioctl_ep_enable()
862 dev_dbg(&dev->gadget->dev, "fail, no endpoints available\n"); in raw_ioctl_ep_enable()
869 spin_unlock_irqrestore(&dev->lock, flags); in raw_ioctl_ep_enable()
873 static int raw_ioctl_ep_disable(struct raw_dev *dev, unsigned long value) in raw_ioctl_ep_disable() argument
878 spin_lock_irqsave(&dev->lock, flags); in raw_ioctl_ep_disable()
879 if (dev->state != STATE_DEV_RUNNING) { in raw_ioctl_ep_disable()
880 dev_dbg(dev->dev, "fail, device is not running\n"); in raw_ioctl_ep_disable()
884 if (!dev->gadget) { in raw_ioctl_ep_disable()
885 dev_dbg(dev->dev, "fail, gadget is not bound\n"); in raw_ioctl_ep_disable()
889 if (i < 0 || i >= dev->eps_num) { in raw_ioctl_ep_disable()
890 dev_dbg(dev->dev, "fail, invalid endpoint\n"); in raw_ioctl_ep_disable()
894 if (dev->eps[i].state == STATE_EP_DISABLED) { in raw_ioctl_ep_disable()
895 dev_dbg(&dev->gadget->dev, "fail, endpoint is not enabled\n"); in raw_ioctl_ep_disable()
899 if (dev->eps[i].disabling) { in raw_ioctl_ep_disable()
900 dev_dbg(&dev->gadget->dev, in raw_ioctl_ep_disable()
905 if (dev->eps[i].urb_queued) { in raw_ioctl_ep_disable()
906 dev_dbg(&dev->gadget->dev, in raw_ioctl_ep_disable()
911 dev->eps[i].disabling = true; in raw_ioctl_ep_disable()
912 spin_unlock_irqrestore(&dev->lock, flags); in raw_ioctl_ep_disable()
914 usb_ep_disable(dev->eps[i].ep); in raw_ioctl_ep_disable()
916 spin_lock_irqsave(&dev->lock, flags); in raw_ioctl_ep_disable()
917 usb_ep_free_request(dev->eps[i].ep, dev->eps[i].req); in raw_ioctl_ep_disable()
918 kfree(dev->eps[i].ep->desc); in raw_ioctl_ep_disable()
919 dev->eps[i].state = STATE_EP_DISABLED; in raw_ioctl_ep_disable()
920 dev->eps[i].disabling = false; in raw_ioctl_ep_disable()
923 spin_unlock_irqrestore(&dev->lock, flags); in raw_ioctl_ep_disable()
927 static int raw_ioctl_ep_set_clear_halt_wedge(struct raw_dev *dev, in raw_ioctl_ep_set_clear_halt_wedge() argument
933 spin_lock_irqsave(&dev->lock, flags); in raw_ioctl_ep_set_clear_halt_wedge()
934 if (dev->state != STATE_DEV_RUNNING) { in raw_ioctl_ep_set_clear_halt_wedge()
935 dev_dbg(dev->dev, "fail, device is not running\n"); in raw_ioctl_ep_set_clear_halt_wedge()
939 if (!dev->gadget) { in raw_ioctl_ep_set_clear_halt_wedge()
940 dev_dbg(dev->dev, "fail, gadget is not bound\n"); in raw_ioctl_ep_set_clear_halt_wedge()
944 if (i < 0 || i >= dev->eps_num) { in raw_ioctl_ep_set_clear_halt_wedge()
945 dev_dbg(dev->dev, "fail, invalid endpoint\n"); in raw_ioctl_ep_set_clear_halt_wedge()
949 if (dev->eps[i].state == STATE_EP_DISABLED) { in raw_ioctl_ep_set_clear_halt_wedge()
950 dev_dbg(&dev->gadget->dev, "fail, endpoint is not enabled\n"); in raw_ioctl_ep_set_clear_halt_wedge()
954 if (dev->eps[i].disabling) { in raw_ioctl_ep_set_clear_halt_wedge()
955 dev_dbg(&dev->gadget->dev, in raw_ioctl_ep_set_clear_halt_wedge()
960 if (dev->eps[i].urb_queued) { in raw_ioctl_ep_set_clear_halt_wedge()
961 dev_dbg(&dev->gadget->dev, in raw_ioctl_ep_set_clear_halt_wedge()
966 if (usb_endpoint_xfer_isoc(dev->eps[i].ep->desc)) { in raw_ioctl_ep_set_clear_halt_wedge()
967 dev_dbg(&dev->gadget->dev, in raw_ioctl_ep_set_clear_halt_wedge()
974 ret = usb_ep_set_halt(dev->eps[i].ep); in raw_ioctl_ep_set_clear_halt_wedge()
976 dev_err(&dev->gadget->dev, in raw_ioctl_ep_set_clear_halt_wedge()
979 ret = usb_ep_clear_halt(dev->eps[i].ep); in raw_ioctl_ep_set_clear_halt_wedge()
981 dev_err(&dev->gadget->dev, in raw_ioctl_ep_set_clear_halt_wedge()
984 ret = usb_ep_set_wedge(dev->eps[i].ep); in raw_ioctl_ep_set_clear_halt_wedge()
986 dev_err(&dev->gadget->dev, in raw_ioctl_ep_set_clear_halt_wedge()
991 spin_unlock_irqrestore(&dev->lock, flags); in raw_ioctl_ep_set_clear_halt_wedge()
998 struct raw_dev *dev = r_ep->dev; in gadget_ep_complete() local
1001 spin_lock_irqsave(&dev->lock, flags); in gadget_ep_complete()
1006 spin_unlock_irqrestore(&dev->lock, flags); in gadget_ep_complete()
1011 static int raw_process_ep_io(struct raw_dev *dev, struct usb_raw_ep_io *io, in raw_process_ep_io() argument
1019 spin_lock_irqsave(&dev->lock, flags); in raw_process_ep_io()
1020 if (dev->state != STATE_DEV_RUNNING) { in raw_process_ep_io()
1021 dev_dbg(dev->dev, "fail, device is not running\n"); in raw_process_ep_io()
1025 if (!dev->gadget) { in raw_process_ep_io()
1026 dev_dbg(dev->dev, "fail, gadget is not bound\n"); in raw_process_ep_io()
1030 if (io->ep >= dev->eps_num) { in raw_process_ep_io()
1031 dev_dbg(&dev->gadget->dev, "fail, invalid endpoint\n"); in raw_process_ep_io()
1035 ep = &dev->eps[io->ep]; in raw_process_ep_io()
1037 dev_dbg(&dev->gadget->dev, "fail, endpoint is not enabled\n"); in raw_process_ep_io()
1042 dev_dbg(&dev->gadget->dev, in raw_process_ep_io()
1048 dev_dbg(&dev->gadget->dev, "fail, urb already queued\n"); in raw_process_ep_io()
1053 dev_dbg(&dev->gadget->dev, "fail, wrong direction\n"); in raw_process_ep_io()
1058 ep->dev = dev; in raw_process_ep_io()
1065 spin_unlock_irqrestore(&dev->lock, flags); in raw_process_ep_io()
1069 dev_err(&dev->gadget->dev, in raw_process_ep_io()
1071 spin_lock_irqsave(&dev->lock, flags); in raw_process_ep_io()
1072 dev->state = STATE_DEV_FAILED; in raw_process_ep_io()
1078 dev_dbg(&dev->gadget->dev, "wait interrupted\n"); in raw_process_ep_io()
1081 spin_lock_irqsave(&dev->lock, flags); in raw_process_ep_io()
1087 spin_lock_irqsave(&dev->lock, flags); in raw_process_ep_io()
1094 spin_unlock_irqrestore(&dev->lock, flags); in raw_process_ep_io()
1098 static int raw_ioctl_ep_write(struct raw_dev *dev, unsigned long value) in raw_ioctl_ep_write() argument
1107 ret = raw_process_ep_io(dev, &io, data, true); in raw_ioctl_ep_write()
1112 static int raw_ioctl_ep_read(struct raw_dev *dev, unsigned long value) in raw_ioctl_ep_read() argument
1122 ret = raw_process_ep_io(dev, &io, data, false); in raw_ioctl_ep_read()
1136 static int raw_ioctl_configure(struct raw_dev *dev, unsigned long value) in raw_ioctl_configure() argument
1143 spin_lock_irqsave(&dev->lock, flags); in raw_ioctl_configure()
1144 if (dev->state != STATE_DEV_RUNNING) { in raw_ioctl_configure()
1145 dev_dbg(dev->dev, "fail, device is not running\n"); in raw_ioctl_configure()
1149 if (!dev->gadget) { in raw_ioctl_configure()
1150 dev_dbg(dev->dev, "fail, gadget is not bound\n"); in raw_ioctl_configure()
1154 usb_gadget_set_state(dev->gadget, USB_STATE_CONFIGURED); in raw_ioctl_configure()
1157 spin_unlock_irqrestore(&dev->lock, flags); in raw_ioctl_configure()
1161 static int raw_ioctl_vbus_draw(struct raw_dev *dev, unsigned long value) in raw_ioctl_vbus_draw() argument
1166 spin_lock_irqsave(&dev->lock, flags); in raw_ioctl_vbus_draw()
1167 if (dev->state != STATE_DEV_RUNNING) { in raw_ioctl_vbus_draw()
1168 dev_dbg(dev->dev, "fail, device is not running\n"); in raw_ioctl_vbus_draw()
1172 if (!dev->gadget) { in raw_ioctl_vbus_draw()
1173 dev_dbg(dev->dev, "fail, gadget is not bound\n"); in raw_ioctl_vbus_draw()
1177 usb_gadget_vbus_draw(dev->gadget, 2 * value); in raw_ioctl_vbus_draw()
1180 spin_unlock_irqrestore(&dev->lock, flags); in raw_ioctl_vbus_draw()
1201 static int raw_ioctl_eps_info(struct raw_dev *dev, unsigned long value) in raw_ioctl_eps_info() argument
1214 spin_lock_irqsave(&dev->lock, flags); in raw_ioctl_eps_info()
1215 if (dev->state != STATE_DEV_RUNNING) { in raw_ioctl_eps_info()
1216 dev_dbg(dev->dev, "fail, device is not running\n"); in raw_ioctl_eps_info()
1218 spin_unlock_irqrestore(&dev->lock, flags); in raw_ioctl_eps_info()
1221 if (!dev->gadget) { in raw_ioctl_eps_info()
1222 dev_dbg(dev->dev, "fail, gadget is not bound\n"); in raw_ioctl_eps_info()
1224 spin_unlock_irqrestore(&dev->lock, flags); in raw_ioctl_eps_info()
1228 for (i = 0; i < dev->eps_num; i++) { in raw_ioctl_eps_info()
1229 ep = &dev->eps[i]; in raw_ioctl_eps_info()
1236 ret = dev->eps_num; in raw_ioctl_eps_info()
1237 spin_unlock_irqrestore(&dev->lock, flags); in raw_ioctl_eps_info()
1250 struct raw_dev *dev = fd->private_data; in raw_ioctl() local
1253 if (!dev) in raw_ioctl()
1258 ret = raw_ioctl_init(dev, value); in raw_ioctl()
1261 ret = raw_ioctl_run(dev, value); in raw_ioctl()
1264 ret = raw_ioctl_event_fetch(dev, value); in raw_ioctl()
1267 ret = raw_ioctl_ep0_write(dev, value); in raw_ioctl()
1270 ret = raw_ioctl_ep0_read(dev, value); in raw_ioctl()
1273 ret = raw_ioctl_ep_enable(dev, value); in raw_ioctl()
1276 ret = raw_ioctl_ep_disable(dev, value); in raw_ioctl()
1279 ret = raw_ioctl_ep_write(dev, value); in raw_ioctl()
1282 ret = raw_ioctl_ep_read(dev, value); in raw_ioctl()
1285 ret = raw_ioctl_configure(dev, value); in raw_ioctl()
1288 ret = raw_ioctl_vbus_draw(dev, value); in raw_ioctl()
1291 ret = raw_ioctl_eps_info(dev, value); in raw_ioctl()
1294 ret = raw_ioctl_ep0_stall(dev, value); in raw_ioctl()
1298 dev, value, true, true); in raw_ioctl()
1302 dev, value, false, true); in raw_ioctl()
1306 dev, value, true, false); in raw_ioctl()