Lines Matching refs:udc
131 static inline int usb_gadget_udc_start(struct usb_udc *udc) in usb_gadget_udc_start() argument
133 return udc->gadget->ops->udc_start(udc->gadget, udc->driver); in usb_gadget_udc_start()
148 static inline void usb_gadget_udc_stop(struct usb_udc *udc) in usb_gadget_udc_stop() argument
150 udc->gadget->ops->udc_stop(udc->gadget); in usb_gadget_udc_stop()
162 struct usb_udc *udc; in usb_udc_release() local
164 udc = container_of(dev, struct usb_udc, dev); in usb_udc_release()
165 kfree(udc); in usb_udc_release()
180 struct usb_udc *udc; in usb_add_gadget_udc_release() local
183 udc = kzalloc(sizeof(*udc), GFP_KERNEL); in usb_add_gadget_udc_release()
184 if (!udc) in usb_add_gadget_udc_release()
190 udc->dev.release = usb_udc_release; in usb_add_gadget_udc_release()
191 udc->dev.class = udc_class; in usb_add_gadget_udc_release()
192 udc->dev.parent = parent; in usb_add_gadget_udc_release()
194 udc->gadget = gadget; in usb_add_gadget_udc_release()
197 list_add_tail(&udc->list, &udc_list); in usb_add_gadget_udc_release()
224 static void usb_gadget_remove_driver(struct usb_udc *udc) in usb_gadget_remove_driver() argument
226 dev_dbg(&udc->dev, "unregistering UDC driver [%s]\n", in usb_gadget_remove_driver()
227 udc->driver->function); in usb_gadget_remove_driver()
229 usb_gadget_disconnect(udc->gadget); in usb_gadget_remove_driver()
230 udc->driver->disconnect(udc->gadget); in usb_gadget_remove_driver()
231 udc->driver->unbind(udc->gadget); in usb_gadget_remove_driver()
232 usb_gadget_udc_stop(udc); in usb_gadget_remove_driver()
234 udc->driver = NULL; in usb_gadget_remove_driver()
246 struct usb_udc *udc = NULL; in usb_del_gadget_udc() local
249 list_for_each_entry(udc, &udc_list, list) in usb_del_gadget_udc()
250 if (udc->gadget == gadget) in usb_del_gadget_udc()
261 list_del(&udc->list); in usb_del_gadget_udc()
264 if (udc->driver) in usb_del_gadget_udc()
265 usb_gadget_remove_driver(udc); in usb_del_gadget_udc()
281 static inline void usb_gadget_udc_set_speed(struct usb_udc *udc, in usb_gadget_udc_set_speed() argument
284 if (udc->gadget->ops->udc_set_speed) { in usb_gadget_udc_set_speed()
287 s = min(speed, udc->gadget->max_speed); in usb_gadget_udc_set_speed()
288 udc->gadget->ops->udc_set_speed(udc->gadget, s); in usb_gadget_udc_set_speed()
292 static int udc_bind_to_driver(struct usb_udc *udc, struct usb_gadget_driver *driver) in udc_bind_to_driver() argument
296 dev_dbg(&udc->dev, "registering UDC driver [%s]\n", in udc_bind_to_driver()
299 udc->driver = driver; in udc_bind_to_driver()
301 usb_gadget_udc_set_speed(udc, driver->speed); in udc_bind_to_driver()
303 ret = driver->bind(udc->gadget); in udc_bind_to_driver()
306 ret = usb_gadget_udc_start(udc); in udc_bind_to_driver()
308 driver->unbind(udc->gadget); in udc_bind_to_driver()
311 usb_gadget_connect(udc->gadget); in udc_bind_to_driver()
316 dev_err(&udc->dev, "failed to start %s: %d\n", in udc_bind_to_driver()
317 udc->driver->function, ret); in udc_bind_to_driver()
318 udc->driver = NULL; in udc_bind_to_driver()
324 struct usb_udc *udc = NULL; in usb_gadget_probe_driver() local
331 list_for_each_entry(udc, &udc_list, list) { in usb_gadget_probe_driver()
333 if (!udc->driver) in usb_gadget_probe_driver()
341 ret = udc_bind_to_driver(udc, driver); in usb_gadget_probe_driver()
355 struct usb_udc *udc = NULL; in usb_gadget_unregister_driver() local
362 list_for_each_entry(udc, &udc_list, list) in usb_gadget_unregister_driver()
363 if (udc->driver == driver) { in usb_gadget_unregister_driver()
364 usb_gadget_remove_driver(udc); in usb_gadget_unregister_driver()
365 usb_gadget_set_state(udc->gadget, in usb_gadget_unregister_driver()