Lines Matching defs:udc

73 static void nuke(struct vudc *udc, struct vep *ep)
83 spin_unlock(&udc->lock);
85 spin_lock(&udc->lock);
90 static void stop_activity(struct vudc *udc)
95 udc->address = 0;
98 nuke(udc, &udc->ep[i]);
100 list_for_each_entry_safe(urb_p, tmp, &udc->urb_queue, urb_entry) {
106 struct vep *vudc_find_endpoint(struct vudc *udc, u8 address)
111 return &udc->ep[0];
114 struct vep *ep = &udc->ep[i];
129 struct vudc *udc = usb_gadget_to_vudc(_gadget);
132 return ((now.tv_sec - udc->start_time.tv_sec) * 1000 +
133 (now.tv_nsec - udc->start_time.tv_nsec) / NSEC_PER_MSEC)
139 struct vudc *udc = usb_gadget_to_vudc(_gadget);
142 udc->devstatus |= (1 << USB_DEVICE_SELF_POWERED);
144 udc->devstatus &= ~(1 << USB_DEVICE_SELF_POWERED);
150 struct vudc *udc = usb_gadget_to_vudc(_gadget);
155 spin_lock_irqsave(&udc->lock, flags);
157 if (value == udc->pullup)
160 udc->pullup = value;
162 udc->gadget.speed = min_t(u8, USB_SPEED_HIGH,
163 udc->driver->max_speed);
164 udc->ep[0].ep.maxpacket = 64;
169 ret = get_gadget_descs(udc);
171 dev_err(&udc->gadget.dev, "Unable go get desc: %d", ret);
175 spin_unlock_irqrestore(&udc->lock, flags);
176 usbip_start_eh(&udc->ud);
179 udc->desc_cached = 0;
181 spin_unlock_irqrestore(&udc->lock, flags);
182 usbip_event_add(&udc->ud, VUDC_EVENT_REMOVED);
183 usbip_stop_eh(&udc->ud); /* Wait for eh completion */
189 spin_unlock_irqrestore(&udc->lock, flags);
196 struct vudc *udc = usb_gadget_to_vudc(g);
199 spin_lock_irqsave(&udc->lock, flags);
200 udc->driver = driver;
201 udc->pullup = udc->connected = udc->desc_cached = 0;
202 spin_unlock_irqrestore(&udc->lock, flags);
209 struct vudc *udc = usb_gadget_to_vudc(g);
212 spin_lock_irqsave(&udc->lock, flags);
213 udc->driver = NULL;
214 spin_unlock_irqrestore(&udc->lock, flags);
233 struct vudc *udc;
238 udc = ep_to_vudc(ep);
244 if (!udc->driver)
247 spin_lock_irqsave(&udc->lock, flags);
255 spin_unlock_irqrestore(&udc->lock, flags);
263 struct vudc *udc;
267 udc = ep_to_vudc(ep);
271 spin_lock_irqsave(&udc->lock, flags);
273 nuke(udc, ep);
274 spin_unlock_irqrestore(&udc->lock, flags);
313 struct vudc *udc;
321 udc = ep_to_vudc(ep);
323 spin_lock_irqsave(&udc->lock, flags);
328 spin_unlock_irqrestore(&udc->lock, flags);
337 struct vudc *udc;
347 udc = req->udc;
349 if (!udc->driver)
352 spin_lock_irqsave(&udc->lock, flags);
361 spin_unlock_irqrestore(&udc->lock, flags);
373 struct vudc *udc;
381 udc = ep_to_vudc(ep);
382 if (!udc->driver)
385 spin_lock_irqsave(&udc->lock, flags);
397 spin_unlock_irqrestore(&udc->lock, flags);
431 struct vudc *udc = container_of(ud, struct vudc, ud);
435 dev_dbg(&udc->pdev->dev, "device shutdown");
453 spin_lock_irqsave(&udc->lock, flags);
454 stop_activity(udc);
455 if (udc->connected && udc->driver->disconnect)
457 udc->connected = 0;
458 spin_unlock_irqrestore(&udc->lock, flags);
460 udc->driver->disconnect(&udc->gadget);
465 struct vudc *udc = container_of(ud, struct vudc, ud);
468 dev_dbg(&udc->pdev->dev, "device reset");
469 spin_lock_irqsave(&udc->lock, flags);
470 stop_activity(udc);
471 spin_unlock_irqrestore(&udc->lock, flags);
472 if (udc->driver)
473 usb_gadget_udc_reset(&udc->gadget, udc->driver);
515 static int init_vudc_hw(struct vudc *udc)
518 struct usbip_device *ud = &udc->ud;
521 udc->ep = kcalloc(VIRTUAL_ENDPOINTS, sizeof(*udc->ep), GFP_KERNEL);
522 if (!udc->ep)
525 INIT_LIST_HEAD(&udc->gadget.ep_list);
532 ep = &udc->ep[i];
542 ep->gadget = &udc->gadget;
551 udc->gadget.ep0 = &ep->ep;
563 list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list);
567 spin_lock_init(&udc->lock);
568 spin_lock_init(&udc->lock_tx);
569 INIT_LIST_HEAD(&udc->urb_queue);
570 INIT_LIST_HEAD(&udc->tx_queue);
571 init_waitqueue_head(&udc->tx_waitq);
582 v_init_timer(udc);
589 static void cleanup_vudc_hw(struct vudc *udc)
591 kfree(udc->ep);
598 struct vudc *udc;
601 udc = kzalloc(sizeof(*udc), GFP_KERNEL);
602 if (!udc)
605 udc->gadget.name = GADGET_NAME;
606 udc->gadget.ops = &vgadget_ops;
607 udc->gadget.max_speed = USB_SPEED_HIGH;
608 udc->gadget.dev.parent = &pdev->dev;
609 udc->pdev = pdev;
611 ret = init_vudc_hw(udc);
615 ret = usb_add_gadget_udc(&pdev->dev, &udc->gadget);
619 platform_set_drvdata(pdev, udc);
624 cleanup_vudc_hw(udc);
626 kfree(udc);
633 struct vudc *udc = platform_get_drvdata(pdev);
635 usb_del_gadget_udc(&udc->gadget);
636 cleanup_vudc_hw(udc);
637 kfree(udc);