Lines Matching refs:udc
703 __must_hold(&gadget->udc->connect_lock) in usb_gadget_connect_locked()
712 if (gadget->deactivated || !gadget->udc->allow_connect || !gadget->udc->started) { in usb_gadget_connect_locked()
747 mutex_lock(&gadget->udc->connect_lock); in usb_gadget_connect()
749 mutex_unlock(&gadget->udc->connect_lock); in usb_gadget_connect()
756 __must_hold(&gadget->udc->connect_lock) in usb_gadget_disconnect_locked()
768 if (gadget->deactivated || !gadget->udc->started) { in usb_gadget_disconnect_locked()
782 if (gadget->udc->driver) in usb_gadget_disconnect_locked()
783 gadget->udc->driver->disconnect(gadget); in usb_gadget_disconnect_locked()
809 mutex_lock(&gadget->udc->connect_lock); in usb_gadget_disconnect()
811 mutex_unlock(&gadget->udc->connect_lock); in usb_gadget_disconnect()
835 mutex_lock(&gadget->udc->connect_lock); in usb_gadget_deactivate()
853 mutex_unlock(&gadget->udc->connect_lock); in usb_gadget_deactivate()
875 mutex_lock(&gadget->udc->connect_lock); in usb_gadget_activate()
889 mutex_unlock(&gadget->udc->connect_lock); in usb_gadget_activate()
1112 struct usb_udc *udc = gadget->udc; in usb_gadget_state_work() local
1114 if (udc) in usb_gadget_state_work()
1115 sysfs_notify(&udc->dev.kobj, NULL, "state"); in usb_gadget_state_work()
1129 static void usb_udc_connect_control_locked(struct usb_udc *udc) __must_hold(&udc->connect_lock) in usb_udc_connect_control_locked() argument
1131 if (udc->vbus) in usb_udc_connect_control_locked()
1132 usb_gadget_connect_locked(udc->gadget); in usb_udc_connect_control_locked()
1134 usb_gadget_disconnect_locked(udc->gadget); in usb_udc_connect_control_locked()
1139 struct usb_udc *udc = container_of(work, struct usb_udc, vbus_work); in vbus_event_work() local
1141 mutex_lock(&udc->connect_lock); in vbus_event_work()
1142 usb_udc_connect_control_locked(udc); in vbus_event_work()
1143 mutex_unlock(&udc->connect_lock); in vbus_event_work()
1165 struct usb_udc *udc = gadget->udc; in usb_udc_vbus_handler() local
1167 if (udc) { in usb_udc_vbus_handler()
1168 udc->vbus = status; in usb_udc_vbus_handler()
1169 schedule_work(&udc->vbus_work); in usb_udc_vbus_handler()
1206 static inline int usb_gadget_udc_start_locked(struct usb_udc *udc) in usb_gadget_udc_start_locked() argument
1207 __must_hold(&udc->connect_lock) in usb_gadget_udc_start_locked()
1211 if (udc->started) { in usb_gadget_udc_start_locked()
1212 dev_err(&udc->dev, "UDC had already started\n"); in usb_gadget_udc_start_locked()
1216 ret = udc->gadget->ops->udc_start(udc->gadget, udc->driver); in usb_gadget_udc_start_locked()
1218 udc->started = true; in usb_gadget_udc_start_locked()
1236 static inline void usb_gadget_udc_stop_locked(struct usb_udc *udc) in usb_gadget_udc_stop_locked() argument
1237 __must_hold(&udc->connect_lock) in usb_gadget_udc_stop_locked()
1239 if (!udc->started) { in usb_gadget_udc_stop_locked()
1240 dev_err(&udc->dev, "UDC had already stopped\n"); in usb_gadget_udc_stop_locked()
1244 udc->gadget->ops->udc_stop(udc->gadget); in usb_gadget_udc_stop_locked()
1245 udc->started = false; in usb_gadget_udc_stop_locked()
1258 static inline void usb_gadget_udc_set_speed(struct usb_udc *udc, in usb_gadget_udc_set_speed() argument
1261 struct usb_gadget *gadget = udc->gadget; in usb_gadget_udc_set_speed()
1285 static inline void usb_gadget_enable_async_callbacks(struct usb_udc *udc) in usb_gadget_enable_async_callbacks() argument
1287 struct usb_gadget *gadget = udc->gadget; in usb_gadget_enable_async_callbacks()
1314 static inline void usb_gadget_disable_async_callbacks(struct usb_udc *udc) in usb_gadget_disable_async_callbacks() argument
1316 struct usb_gadget *gadget = udc->gadget; in usb_gadget_disable_async_callbacks()
1331 struct usb_udc *udc; in usb_udc_release() local
1333 udc = container_of(dev, struct usb_udc, dev); in usb_udc_release()
1335 kfree(udc); in usb_udc_release()
1377 struct usb_udc *udc; in usb_add_gadget() local
1380 udc = kzalloc(sizeof(*udc), GFP_KERNEL); in usb_add_gadget()
1381 if (!udc) in usb_add_gadget()
1384 device_initialize(&udc->dev); in usb_add_gadget()
1385 udc->dev.release = usb_udc_release; in usb_add_gadget()
1386 udc->dev.class = &udc_class; in usb_add_gadget()
1387 udc->dev.groups = usb_udc_attr_groups; in usb_add_gadget()
1388 udc->dev.parent = gadget->dev.parent; in usb_add_gadget()
1389 ret = dev_set_name(&udc->dev, "%s", in usb_add_gadget()
1394 udc->gadget = gadget; in usb_add_gadget()
1395 gadget->udc = udc; in usb_add_gadget()
1396 mutex_init(&udc->connect_lock); in usb_add_gadget()
1398 udc->started = false; in usb_add_gadget()
1401 list_add_tail(&udc->list, &udc_list); in usb_add_gadget()
1403 INIT_WORK(&udc->vbus_work, vbus_event_work); in usb_add_gadget()
1405 ret = device_add(&udc->dev); in usb_add_gadget()
1410 udc->vbus = true; in usb_add_gadget()
1429 device_del(&udc->dev); in usb_add_gadget()
1433 list_del(&udc->list); in usb_add_gadget()
1437 put_device(&udc->dev); in usb_add_gadget()
1481 struct usb_udc *udc; in usb_get_gadget_udc_name() local
1486 list_for_each_entry(udc, &udc_list, list) { in usb_get_gadget_udc_name()
1487 if (!udc->driver) { in usb_get_gadget_udc_name()
1488 name = kstrdup(udc->gadget->name, GFP_KERNEL); in usb_get_gadget_udc_name()
1520 struct usb_udc *udc = gadget->udc; in usb_del_gadget() local
1522 if (!udc) in usb_del_gadget()
1528 list_del(&udc->list); in usb_del_gadget()
1531 kobject_uevent(&udc->dev.kobj, KOBJ_REMOVE); in usb_del_gadget()
1535 cancel_work_sync(&udc->vbus_work); in usb_del_gadget()
1536 device_unregister(&udc->dev); in usb_del_gadget()
1558 struct usb_udc *udc = gadget->udc; in gadget_match_driver() local
1564 strcmp(driver->udc_name, dev_name(&udc->dev)) != 0) in gadget_match_driver()
1578 struct usb_udc *udc = gadget->udc; in gadget_bind_driver() local
1589 udc->driver = driver; in gadget_bind_driver()
1592 dev_dbg(&udc->dev, "binding gadget driver [%s]\n", driver->function); in gadget_bind_driver()
1594 usb_gadget_udc_set_speed(udc, driver->max_speed); in gadget_bind_driver()
1596 ret = driver->bind(udc->gadget, driver); in gadget_bind_driver()
1600 mutex_lock(&udc->connect_lock); in gadget_bind_driver()
1601 ret = usb_gadget_udc_start_locked(udc); in gadget_bind_driver()
1603 mutex_unlock(&udc->connect_lock); in gadget_bind_driver()
1606 usb_gadget_enable_async_callbacks(udc); in gadget_bind_driver()
1607 udc->allow_connect = true; in gadget_bind_driver()
1608 usb_udc_connect_control_locked(udc); in gadget_bind_driver()
1609 mutex_unlock(&udc->connect_lock); in gadget_bind_driver()
1611 kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); in gadget_bind_driver()
1615 driver->unbind(udc->gadget); in gadget_bind_driver()
1619 dev_err(&udc->dev, "failed to start %s: %d\n", in gadget_bind_driver()
1623 udc->driver = NULL; in gadget_bind_driver()
1633 struct usb_udc *udc = gadget->udc; in gadget_unbind_driver() local
1634 struct usb_gadget_driver *driver = udc->driver; in gadget_unbind_driver()
1636 dev_dbg(&udc->dev, "unbinding gadget driver [%s]\n", driver->function); in gadget_unbind_driver()
1638 kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); in gadget_unbind_driver()
1640 udc->allow_connect = false; in gadget_unbind_driver()
1641 cancel_work_sync(&udc->vbus_work); in gadget_unbind_driver()
1642 mutex_lock(&udc->connect_lock); in gadget_unbind_driver()
1644 usb_gadget_disable_async_callbacks(udc); in gadget_unbind_driver()
1647 mutex_unlock(&udc->connect_lock); in gadget_unbind_driver()
1649 udc->driver->unbind(gadget); in gadget_unbind_driver()
1651 mutex_lock(&udc->connect_lock); in gadget_unbind_driver()
1652 usb_gadget_udc_stop_locked(udc); in gadget_unbind_driver()
1653 mutex_unlock(&udc->connect_lock); in gadget_unbind_driver()
1657 udc->driver = NULL; in gadget_unbind_driver()
1716 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in srp_store() local
1719 usb_gadget_wakeup(udc->gadget); in srp_store()
1728 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in soft_connect_store() local
1731 device_lock(&udc->gadget->dev); in soft_connect_store()
1732 if (!udc->driver) { in soft_connect_store()
1739 mutex_lock(&udc->connect_lock); in soft_connect_store()
1740 usb_gadget_udc_start_locked(udc); in soft_connect_store()
1741 usb_gadget_connect_locked(udc->gadget); in soft_connect_store()
1742 mutex_unlock(&udc->connect_lock); in soft_connect_store()
1744 mutex_lock(&udc->connect_lock); in soft_connect_store()
1745 usb_gadget_disconnect_locked(udc->gadget); in soft_connect_store()
1746 usb_gadget_udc_stop_locked(udc); in soft_connect_store()
1747 mutex_unlock(&udc->connect_lock); in soft_connect_store()
1756 device_unlock(&udc->gadget->dev); in soft_connect_store()
1764 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in state_show() local
1765 struct usb_gadget *gadget = udc->gadget; in state_show()
1774 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in function_show() local
1779 drv = udc->driver; in function_show()
1791 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); \
1793 usb_speed_string(udc->gadget->param)); \
1804 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); \
1805 struct usb_gadget *gadget = udc->gadget; \
1846 const struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in usb_udc_uevent() local
1849 ret = add_uevent_var(env, "USB_UDC_NAME=%s", udc->gadget->name); in usb_udc_uevent()
1856 if (udc->driver) in usb_udc_uevent()
1858 udc->driver->function); in usb_udc_uevent()