Lines Matching refs:udc
135 struct usb_udc *udc = gadget->udc; in usb_gadget_state_work() local
137 if (udc) in usb_gadget_state_work()
138 sysfs_notify(&udc->dev.kobj, NULL, "state"); in usb_gadget_state_work()
151 static void usb_udc_connect_control(struct usb_udc *udc) in usb_udc_connect_control() argument
153 if (udc->vbus) in usb_udc_connect_control()
154 usb_gadget_connect(udc->gadget); in usb_udc_connect_control()
156 usb_gadget_disconnect(udc->gadget); in usb_udc_connect_control()
170 struct usb_udc *udc = gadget->udc; in usb_udc_vbus_handler() local
172 if (udc) { in usb_udc_vbus_handler()
173 udc->vbus = status; in usb_udc_vbus_handler()
174 usb_udc_connect_control(udc); in usb_udc_vbus_handler()
209 static inline int usb_gadget_udc_start(struct usb_udc *udc) in usb_gadget_udc_start() argument
211 return udc->gadget->ops->udc_start(udc->gadget, udc->driver); in usb_gadget_udc_start()
226 static inline void usb_gadget_udc_stop(struct usb_udc *udc) in usb_gadget_udc_stop() argument
228 udc->gadget->ops->udc_stop(udc->gadget); in usb_gadget_udc_stop()
240 struct usb_udc *udc; in usb_udc_release() local
242 udc = container_of(dev, struct usb_udc, dev); in usb_udc_release()
244 kfree(udc); in usb_udc_release()
266 struct usb_udc *udc; in usb_add_gadget_udc_release() local
269 udc = kzalloc(sizeof(*udc), GFP_KERNEL); in usb_add_gadget_udc_release()
270 if (!udc) in usb_add_gadget_udc_release()
292 device_initialize(&udc->dev); in usb_add_gadget_udc_release()
293 udc->dev.release = usb_udc_release; in usb_add_gadget_udc_release()
294 udc->dev.class = udc_class; in usb_add_gadget_udc_release()
295 udc->dev.groups = usb_udc_attr_groups; in usb_add_gadget_udc_release()
296 udc->dev.parent = parent; in usb_add_gadget_udc_release()
297 ret = dev_set_name(&udc->dev, "%s", kobject_name(&parent->kobj)); in usb_add_gadget_udc_release()
301 udc->gadget = gadget; in usb_add_gadget_udc_release()
302 gadget->udc = udc; in usb_add_gadget_udc_release()
305 list_add_tail(&udc->list, &udc_list); in usb_add_gadget_udc_release()
307 ret = device_add(&udc->dev); in usb_add_gadget_udc_release()
312 udc->vbus = true; in usb_add_gadget_udc_release()
319 list_del(&udc->list); in usb_add_gadget_udc_release()
323 put_device(&udc->dev); in usb_add_gadget_udc_release()
328 kfree(udc); in usb_add_gadget_udc_release()
349 static void usb_gadget_remove_driver(struct usb_udc *udc) in usb_gadget_remove_driver() argument
351 dev_dbg(&udc->dev, "unregistering UDC driver [%s]\n", in usb_gadget_remove_driver()
352 udc->driver->function); in usb_gadget_remove_driver()
354 kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); in usb_gadget_remove_driver()
356 usb_gadget_disconnect(udc->gadget); in usb_gadget_remove_driver()
357 udc->driver->disconnect(udc->gadget); in usb_gadget_remove_driver()
358 udc->driver->unbind(udc->gadget); in usb_gadget_remove_driver()
359 usb_gadget_udc_stop(udc); in usb_gadget_remove_driver()
361 udc->driver = NULL; in usb_gadget_remove_driver()
362 udc->dev.driver = NULL; in usb_gadget_remove_driver()
363 udc->gadget->dev.driver = NULL; in usb_gadget_remove_driver()
375 struct usb_udc *udc = gadget->udc; in usb_del_gadget_udc() local
377 if (!udc) in usb_del_gadget_udc()
383 list_del(&udc->list); in usb_del_gadget_udc()
386 if (udc->driver) in usb_del_gadget_udc()
387 usb_gadget_remove_driver(udc); in usb_del_gadget_udc()
389 kobject_uevent(&udc->dev.kobj, KOBJ_REMOVE); in usb_del_gadget_udc()
391 device_unregister(&udc->dev); in usb_del_gadget_udc()
398 static int udc_bind_to_driver(struct usb_udc *udc, struct usb_gadget_driver *driver) in udc_bind_to_driver() argument
402 dev_dbg(&udc->dev, "registering UDC driver [%s]\n", in udc_bind_to_driver()
405 udc->driver = driver; in udc_bind_to_driver()
406 udc->dev.driver = &driver->driver; in udc_bind_to_driver()
407 udc->gadget->dev.driver = &driver->driver; in udc_bind_to_driver()
409 ret = driver->bind(udc->gadget, driver); in udc_bind_to_driver()
412 ret = usb_gadget_udc_start(udc); in udc_bind_to_driver()
414 driver->unbind(udc->gadget); in udc_bind_to_driver()
417 usb_udc_connect_control(udc); in udc_bind_to_driver()
419 kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); in udc_bind_to_driver()
423 dev_err(&udc->dev, "failed to start %s: %d\n", in udc_bind_to_driver()
424 udc->driver->function, ret); in udc_bind_to_driver()
425 udc->driver = NULL; in udc_bind_to_driver()
426 udc->dev.driver = NULL; in udc_bind_to_driver()
427 udc->gadget->dev.driver = NULL; in udc_bind_to_driver()
433 struct usb_udc *udc = NULL; in usb_udc_attach_driver() local
437 list_for_each_entry(udc, &udc_list, list) { in usb_udc_attach_driver()
438 ret = strcmp(name, dev_name(&udc->dev)); in usb_udc_attach_driver()
446 if (udc->driver) { in usb_udc_attach_driver()
450 ret = udc_bind_to_driver(udc, driver); in usb_udc_attach_driver()
459 struct usb_udc *udc = NULL; in usb_gadget_probe_driver() local
466 list_for_each_entry(udc, &udc_list, list) { in usb_gadget_probe_driver()
468 if (!udc->driver) in usb_gadget_probe_driver()
476 ret = udc_bind_to_driver(udc, driver); in usb_gadget_probe_driver()
484 struct usb_udc *udc = NULL; in usb_gadget_unregister_driver() local
491 list_for_each_entry(udc, &udc_list, list) in usb_gadget_unregister_driver()
492 if (udc->driver == driver) { in usb_gadget_unregister_driver()
493 usb_gadget_remove_driver(udc); in usb_gadget_unregister_driver()
494 usb_gadget_set_state(udc->gadget, in usb_gadget_unregister_driver()
510 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in usb_udc_srp_store() local
513 usb_gadget_wakeup(udc->gadget); in usb_udc_srp_store()
522 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in usb_udc_softconn_store() local
524 if (!udc->driver) { in usb_udc_softconn_store()
530 usb_gadget_udc_start(udc); in usb_udc_softconn_store()
531 usb_gadget_connect(udc->gadget); in usb_udc_softconn_store()
533 usb_gadget_disconnect(udc->gadget); in usb_udc_softconn_store()
534 udc->driver->disconnect(udc->gadget); in usb_udc_softconn_store()
535 usb_gadget_udc_stop(udc); in usb_udc_softconn_store()
548 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in state_show() local
549 struct usb_gadget *gadget = udc->gadget; in state_show()
559 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); \
561 usb_speed_string(udc->gadget->param)); \
572 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); \
573 struct usb_gadget *gadget = udc->gadget; \
613 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in usb_udc_uevent() local
616 ret = add_uevent_var(env, "USB_UDC_NAME=%s", udc->gadget->name); in usb_udc_uevent()
622 if (udc->driver) { in usb_udc_uevent()
624 udc->driver->function); in usb_udc_uevent()