Lines Matching refs:udc
227 struct usb_udc *udc = gadget->udc; in usb_gadget_state_work() local
229 if (udc) in usb_gadget_state_work()
230 sysfs_notify(&udc->dev.kobj, NULL, "state"); in usb_gadget_state_work()
243 static void usb_udc_connect_control(struct usb_udc *udc) in usb_udc_connect_control() argument
245 if (udc->vbus) in usb_udc_connect_control()
246 usb_gadget_connect(udc->gadget); in usb_udc_connect_control()
248 usb_gadget_disconnect(udc->gadget); in usb_udc_connect_control()
262 struct usb_udc *udc = gadget->udc; in usb_udc_vbus_handler() local
264 if (udc) { in usb_udc_vbus_handler()
265 udc->vbus = status; in usb_udc_vbus_handler()
266 usb_udc_connect_control(udc); in usb_udc_vbus_handler()
301 static inline int usb_gadget_udc_start(struct usb_udc *udc) in usb_gadget_udc_start() argument
303 return udc->gadget->ops->udc_start(udc->gadget, udc->driver); in usb_gadget_udc_start()
318 static inline void usb_gadget_udc_stop(struct usb_udc *udc) in usb_gadget_udc_stop() argument
320 udc->gadget->ops->udc_stop(udc->gadget); in usb_gadget_udc_stop()
332 struct usb_udc *udc; in usb_udc_release() local
334 udc = container_of(dev, struct usb_udc, dev); in usb_udc_release()
336 kfree(udc); in usb_udc_release()
358 struct usb_udc *udc; in usb_add_gadget_udc_release() local
361 udc = kzalloc(sizeof(*udc), GFP_KERNEL); in usb_add_gadget_udc_release()
362 if (!udc) in usb_add_gadget_udc_release()
384 device_initialize(&udc->dev); in usb_add_gadget_udc_release()
385 udc->dev.release = usb_udc_release; in usb_add_gadget_udc_release()
386 udc->dev.class = udc_class; in usb_add_gadget_udc_release()
387 udc->dev.groups = usb_udc_attr_groups; in usb_add_gadget_udc_release()
388 udc->dev.parent = parent; in usb_add_gadget_udc_release()
389 ret = dev_set_name(&udc->dev, "%s", kobject_name(&parent->kobj)); in usb_add_gadget_udc_release()
393 udc->gadget = gadget; in usb_add_gadget_udc_release()
394 gadget->udc = udc; in usb_add_gadget_udc_release()
397 list_add_tail(&udc->list, &udc_list); in usb_add_gadget_udc_release()
399 ret = device_add(&udc->dev); in usb_add_gadget_udc_release()
404 udc->vbus = true; in usb_add_gadget_udc_release()
411 list_del(&udc->list); in usb_add_gadget_udc_release()
415 put_device(&udc->dev); in usb_add_gadget_udc_release()
420 kfree(udc); in usb_add_gadget_udc_release()
441 static void usb_gadget_remove_driver(struct usb_udc *udc) in usb_gadget_remove_driver() argument
443 dev_dbg(&udc->dev, "unregistering UDC driver [%s]\n", in usb_gadget_remove_driver()
444 udc->driver->function); in usb_gadget_remove_driver()
446 kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); in usb_gadget_remove_driver()
448 usb_gadget_disconnect(udc->gadget); in usb_gadget_remove_driver()
449 udc->driver->disconnect(udc->gadget); in usb_gadget_remove_driver()
450 udc->driver->unbind(udc->gadget); in usb_gadget_remove_driver()
451 usb_gadget_udc_stop(udc); in usb_gadget_remove_driver()
453 udc->driver = NULL; in usb_gadget_remove_driver()
454 udc->dev.driver = NULL; in usb_gadget_remove_driver()
455 udc->gadget->dev.driver = NULL; in usb_gadget_remove_driver()
467 struct usb_udc *udc = gadget->udc; in usb_del_gadget_udc() local
469 if (!udc) in usb_del_gadget_udc()
475 list_del(&udc->list); in usb_del_gadget_udc()
478 if (udc->driver) in usb_del_gadget_udc()
479 usb_gadget_remove_driver(udc); in usb_del_gadget_udc()
481 kobject_uevent(&udc->dev.kobj, KOBJ_REMOVE); in usb_del_gadget_udc()
483 device_unregister(&udc->dev); in usb_del_gadget_udc()
490 static int udc_bind_to_driver(struct usb_udc *udc, struct usb_gadget_driver *driver) in udc_bind_to_driver() argument
494 dev_dbg(&udc->dev, "registering UDC driver [%s]\n", in udc_bind_to_driver()
497 udc->driver = driver; in udc_bind_to_driver()
498 udc->dev.driver = &driver->driver; in udc_bind_to_driver()
499 udc->gadget->dev.driver = &driver->driver; in udc_bind_to_driver()
501 ret = driver->bind(udc->gadget, driver); in udc_bind_to_driver()
504 ret = usb_gadget_udc_start(udc); in udc_bind_to_driver()
506 driver->unbind(udc->gadget); in udc_bind_to_driver()
509 usb_udc_connect_control(udc); in udc_bind_to_driver()
511 kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); in udc_bind_to_driver()
515 dev_err(&udc->dev, "failed to start %s: %d\n", in udc_bind_to_driver()
516 udc->driver->function, ret); in udc_bind_to_driver()
517 udc->driver = NULL; in udc_bind_to_driver()
518 udc->dev.driver = NULL; in udc_bind_to_driver()
519 udc->gadget->dev.driver = NULL; in udc_bind_to_driver()
525 struct usb_udc *udc = NULL; in usb_udc_attach_driver() local
529 list_for_each_entry(udc, &udc_list, list) { in usb_udc_attach_driver()
530 ret = strcmp(name, dev_name(&udc->dev)); in usb_udc_attach_driver()
538 if (udc->driver) { in usb_udc_attach_driver()
542 ret = udc_bind_to_driver(udc, driver); in usb_udc_attach_driver()
551 struct usb_udc *udc = NULL; in usb_gadget_probe_driver() local
558 list_for_each_entry(udc, &udc_list, list) { in usb_gadget_probe_driver()
560 if (!udc->driver) in usb_gadget_probe_driver()
568 ret = udc_bind_to_driver(udc, driver); in usb_gadget_probe_driver()
576 struct usb_udc *udc = NULL; in usb_gadget_unregister_driver() local
583 list_for_each_entry(udc, &udc_list, list) in usb_gadget_unregister_driver()
584 if (udc->driver == driver) { in usb_gadget_unregister_driver()
585 usb_gadget_remove_driver(udc); in usb_gadget_unregister_driver()
586 usb_gadget_set_state(udc->gadget, in usb_gadget_unregister_driver()
602 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in usb_udc_srp_store() local
605 usb_gadget_wakeup(udc->gadget); in usb_udc_srp_store()
614 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in usb_udc_softconn_store() local
616 if (!udc->driver) { in usb_udc_softconn_store()
622 usb_gadget_udc_start(udc); in usb_udc_softconn_store()
623 usb_gadget_connect(udc->gadget); in usb_udc_softconn_store()
625 usb_gadget_disconnect(udc->gadget); in usb_udc_softconn_store()
626 udc->driver->disconnect(udc->gadget); in usb_udc_softconn_store()
627 usb_gadget_udc_stop(udc); in usb_udc_softconn_store()
640 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in state_show() local
641 struct usb_gadget *gadget = udc->gadget; in state_show()
651 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); \
653 usb_speed_string(udc->gadget->param)); \
664 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); \
665 struct usb_gadget *gadget = udc->gadget; \
705 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in usb_udc_uevent() local
708 ret = add_uevent_var(env, "USB_UDC_NAME=%s", udc->gadget->name); in usb_udc_uevent()
714 if (udc->driver) { in usb_udc_uevent()
716 udc->driver->function); in usb_udc_uevent()