Lines Matching refs:udc

53 static int udc_bind_to_driver(struct usb_udc *udc,
736 gadget->udc->driver->disconnect(gadget); in usb_gadget_disconnect()
1032 struct usb_udc *udc = gadget->udc; in usb_gadget_state_work() local
1034 if (udc) in usb_gadget_state_work()
1035 sysfs_notify(&udc->dev.kobj, NULL, "state"); in usb_gadget_state_work()
1048 static void usb_udc_connect_control(struct usb_udc *udc) in usb_udc_connect_control() argument
1050 if (udc->vbus) in usb_udc_connect_control()
1051 usb_gadget_connect(udc->gadget); in usb_udc_connect_control()
1053 usb_gadget_disconnect(udc->gadget); in usb_udc_connect_control()
1067 struct usb_udc *udc = gadget->udc; in usb_udc_vbus_handler() local
1069 if (udc) { in usb_udc_vbus_handler()
1070 udc->vbus = status; in usb_udc_vbus_handler()
1071 usb_udc_connect_control(udc); in usb_udc_vbus_handler()
1106 static inline int usb_gadget_udc_start(struct usb_udc *udc) in usb_gadget_udc_start() argument
1110 if (udc->started) { in usb_gadget_udc_start()
1111 dev_err(&udc->dev, "UDC had already started\n"); in usb_gadget_udc_start()
1115 ret = udc->gadget->ops->udc_start(udc->gadget, udc->driver); in usb_gadget_udc_start()
1117 udc->started = true; in usb_gadget_udc_start()
1133 static inline void usb_gadget_udc_stop(struct usb_udc *udc) in usb_gadget_udc_stop() argument
1135 if (!udc->started) { in usb_gadget_udc_stop()
1136 dev_err(&udc->dev, "UDC had already stopped\n"); in usb_gadget_udc_stop()
1140 udc->gadget->ops->udc_stop(udc->gadget); in usb_gadget_udc_stop()
1141 udc->started = false; in usb_gadget_udc_stop()
1154 static inline void usb_gadget_udc_set_speed(struct usb_udc *udc, in usb_gadget_udc_set_speed() argument
1157 struct usb_gadget *gadget = udc->gadget; in usb_gadget_udc_set_speed()
1181 static inline void usb_gadget_enable_async_callbacks(struct usb_udc *udc) in usb_gadget_enable_async_callbacks() argument
1183 struct usb_gadget *gadget = udc->gadget; in usb_gadget_enable_async_callbacks()
1210 static inline void usb_gadget_disable_async_callbacks(struct usb_udc *udc) in usb_gadget_disable_async_callbacks() argument
1212 struct usb_gadget *gadget = udc->gadget; in usb_gadget_disable_async_callbacks()
1227 struct usb_udc *udc; in usb_udc_release() local
1229 udc = container_of(dev, struct usb_udc, dev); in usb_udc_release()
1231 kfree(udc); in usb_udc_release()
1242 static int check_pending_gadget_drivers(struct usb_udc *udc) in check_pending_gadget_drivers() argument
1249 dev_name(&udc->dev)) == 0) { in check_pending_gadget_drivers()
1250 ret = udc_bind_to_driver(udc, driver); in check_pending_gadget_drivers()
1294 struct usb_udc *udc; in usb_add_gadget() local
1297 udc = kzalloc(sizeof(*udc), GFP_KERNEL); in usb_add_gadget()
1298 if (!udc) in usb_add_gadget()
1301 device_initialize(&udc->dev); in usb_add_gadget()
1302 udc->dev.release = usb_udc_release; in usb_add_gadget()
1303 udc->dev.class = udc_class; in usb_add_gadget()
1304 udc->dev.groups = usb_udc_attr_groups; in usb_add_gadget()
1305 udc->dev.parent = gadget->dev.parent; in usb_add_gadget()
1306 ret = dev_set_name(&udc->dev, "%s", in usb_add_gadget()
1315 udc->gadget = gadget; in usb_add_gadget()
1316 gadget->udc = udc; in usb_add_gadget()
1318 udc->started = false; in usb_add_gadget()
1321 list_add_tail(&udc->list, &udc_list); in usb_add_gadget()
1323 ret = device_add(&udc->dev); in usb_add_gadget()
1328 udc->vbus = true; in usb_add_gadget()
1331 ret = check_pending_gadget_drivers(udc); in usb_add_gadget()
1341 device_del(&udc->dev); in usb_add_gadget()
1344 list_del(&udc->list); in usb_add_gadget()
1350 put_device(&udc->dev); in usb_add_gadget()
1394 struct usb_udc *udc; in usb_get_gadget_udc_name() local
1399 list_for_each_entry(udc, &udc_list, list) { in usb_get_gadget_udc_name()
1400 if (!udc->driver) { in usb_get_gadget_udc_name()
1401 name = kstrdup(udc->gadget->name, GFP_KERNEL); in usb_get_gadget_udc_name()
1424 static void usb_gadget_remove_driver(struct usb_udc *udc) in usb_gadget_remove_driver() argument
1426 dev_dbg(&udc->dev, "unregistering UDC driver [%s]\n", in usb_gadget_remove_driver()
1427 udc->driver->function); in usb_gadget_remove_driver()
1429 kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); in usb_gadget_remove_driver()
1431 usb_gadget_disconnect(udc->gadget); in usb_gadget_remove_driver()
1432 usb_gadget_disable_async_callbacks(udc); in usb_gadget_remove_driver()
1433 if (udc->gadget->irq) in usb_gadget_remove_driver()
1434 synchronize_irq(udc->gadget->irq); in usb_gadget_remove_driver()
1435 udc->driver->unbind(udc->gadget); in usb_gadget_remove_driver()
1436 usb_gadget_udc_stop(udc); in usb_gadget_remove_driver()
1438 udc->driver = NULL; in usb_gadget_remove_driver()
1439 udc->dev.driver = NULL; in usb_gadget_remove_driver()
1440 udc->gadget->dev.driver = NULL; in usb_gadget_remove_driver()
1453 struct usb_udc *udc = gadget->udc; in usb_del_gadget() local
1455 if (!udc) in usb_del_gadget()
1461 list_del(&udc->list); in usb_del_gadget()
1463 if (udc->driver) { in usb_del_gadget()
1464 struct usb_gadget_driver *driver = udc->driver; in usb_del_gadget()
1466 usb_gadget_remove_driver(udc); in usb_del_gadget()
1471 kobject_uevent(&udc->dev.kobj, KOBJ_REMOVE); in usb_del_gadget()
1473 device_unregister(&udc->dev); in usb_del_gadget()
1493 static int udc_bind_to_driver(struct usb_udc *udc, struct usb_gadget_driver *driver) in udc_bind_to_driver() argument
1497 dev_dbg(&udc->dev, "registering UDC driver [%s]\n", in udc_bind_to_driver()
1500 udc->driver = driver; in udc_bind_to_driver()
1501 udc->dev.driver = &driver->driver; in udc_bind_to_driver()
1502 udc->gadget->dev.driver = &driver->driver; in udc_bind_to_driver()
1504 usb_gadget_udc_set_speed(udc, driver->max_speed); in udc_bind_to_driver()
1506 ret = driver->bind(udc->gadget, driver); in udc_bind_to_driver()
1509 ret = usb_gadget_udc_start(udc); in udc_bind_to_driver()
1511 driver->unbind(udc->gadget); in udc_bind_to_driver()
1514 usb_gadget_enable_async_callbacks(udc); in udc_bind_to_driver()
1515 usb_udc_connect_control(udc); in udc_bind_to_driver()
1517 kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); in udc_bind_to_driver()
1521 dev_err(&udc->dev, "failed to start %s: %d\n", in udc_bind_to_driver()
1522 udc->driver->function, ret); in udc_bind_to_driver()
1523 udc->driver = NULL; in udc_bind_to_driver()
1524 udc->dev.driver = NULL; in udc_bind_to_driver()
1525 udc->gadget->dev.driver = NULL; in udc_bind_to_driver()
1531 struct usb_udc *udc = NULL; in usb_gadget_probe_driver() local
1539 list_for_each_entry(udc, &udc_list, list) { in usb_gadget_probe_driver()
1540 ret = strcmp(driver->udc_name, dev_name(&udc->dev)); in usb_gadget_probe_driver()
1546 else if (udc->driver) in usb_gadget_probe_driver()
1551 list_for_each_entry(udc, &udc_list, list) { in usb_gadget_probe_driver()
1553 if (!udc->driver) in usb_gadget_probe_driver()
1570 ret = udc_bind_to_driver(udc, driver); in usb_gadget_probe_driver()
1578 struct usb_udc *udc = NULL; in usb_gadget_unregister_driver() local
1585 list_for_each_entry(udc, &udc_list, list) { in usb_gadget_unregister_driver()
1586 if (udc->driver == driver) { in usb_gadget_unregister_driver()
1587 usb_gadget_remove_driver(udc); in usb_gadget_unregister_driver()
1588 usb_gadget_set_state(udc->gadget, in usb_gadget_unregister_driver()
1592 check_pending_gadget_drivers(udc); in usb_gadget_unregister_driver()
1616 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in srp_store() local
1619 usb_gadget_wakeup(udc->gadget); in srp_store()
1628 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in soft_connect_store() local
1632 if (!udc->driver) { in soft_connect_store()
1639 usb_gadget_udc_start(udc); in soft_connect_store()
1640 usb_gadget_connect(udc->gadget); in soft_connect_store()
1642 usb_gadget_disconnect(udc->gadget); in soft_connect_store()
1643 usb_gadget_udc_stop(udc); in soft_connect_store()
1660 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in state_show() local
1661 struct usb_gadget *gadget = udc->gadget; in state_show()
1670 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in function_show() local
1671 struct usb_gadget_driver *drv = udc->driver; in function_show()
1683 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); \
1685 usb_speed_string(udc->gadget->param)); \
1696 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); \
1697 struct usb_gadget *gadget = udc->gadget; \
1738 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in usb_udc_uevent() local
1741 ret = add_uevent_var(env, "USB_UDC_NAME=%s", udc->gadget->name); in usb_udc_uevent()
1747 if (udc->driver) { in usb_udc_uevent()
1749 udc->driver->function); in usb_udc_uevent()