Lines Matching refs:udc

49 static int udc_bind_to_driver(struct usb_udc *udc,
730 gadget->udc->driver->disconnect(gadget); in usb_gadget_disconnect()
1006 struct usb_udc *udc = gadget->udc; in usb_gadget_state_work() local
1008 if (udc) in usb_gadget_state_work()
1009 sysfs_notify(&udc->dev.kobj, NULL, "state"); in usb_gadget_state_work()
1022 static void usb_udc_connect_control(struct usb_udc *udc) in usb_udc_connect_control() argument
1024 if (udc->vbus) in usb_udc_connect_control()
1025 usb_gadget_connect(udc->gadget); in usb_udc_connect_control()
1027 usb_gadget_disconnect(udc->gadget); in usb_udc_connect_control()
1041 struct usb_udc *udc = gadget->udc; in usb_udc_vbus_handler() local
1043 if (udc) { in usb_udc_vbus_handler()
1044 udc->vbus = status; in usb_udc_vbus_handler()
1045 usb_udc_connect_control(udc); in usb_udc_vbus_handler()
1080 static inline int usb_gadget_udc_start(struct usb_udc *udc) in usb_gadget_udc_start() argument
1082 return udc->gadget->ops->udc_start(udc->gadget, udc->driver); in usb_gadget_udc_start()
1097 static inline void usb_gadget_udc_stop(struct usb_udc *udc) in usb_gadget_udc_stop() argument
1099 udc->gadget->ops->udc_stop(udc->gadget); in usb_gadget_udc_stop()
1112 static inline void usb_gadget_udc_set_speed(struct usb_udc *udc, in usb_gadget_udc_set_speed() argument
1115 if (udc->gadget->ops->udc_set_speed) { in usb_gadget_udc_set_speed()
1118 s = min(speed, udc->gadget->max_speed); in usb_gadget_udc_set_speed()
1119 udc->gadget->ops->udc_set_speed(udc->gadget, s); in usb_gadget_udc_set_speed()
1132 struct usb_udc *udc; in usb_udc_release() local
1134 udc = container_of(dev, struct usb_udc, dev); in usb_udc_release()
1136 kfree(udc); in usb_udc_release()
1147 static int check_pending_gadget_drivers(struct usb_udc *udc) in check_pending_gadget_drivers() argument
1154 dev_name(&udc->dev)) == 0) { in check_pending_gadget_drivers()
1155 ret = udc_bind_to_driver(udc, driver); in check_pending_gadget_drivers()
1177 struct usb_udc *udc; in usb_add_gadget_udc_release() local
1191 udc = kzalloc(sizeof(*udc), GFP_KERNEL); in usb_add_gadget_udc_release()
1192 if (!udc) in usb_add_gadget_udc_release()
1195 device_initialize(&udc->dev); in usb_add_gadget_udc_release()
1196 udc->dev.release = usb_udc_release; in usb_add_gadget_udc_release()
1197 udc->dev.class = udc_class; in usb_add_gadget_udc_release()
1198 udc->dev.groups = usb_udc_attr_groups; in usb_add_gadget_udc_release()
1199 udc->dev.parent = parent; in usb_add_gadget_udc_release()
1200 ret = dev_set_name(&udc->dev, "%s", kobject_name(&parent->kobj)); in usb_add_gadget_udc_release()
1208 udc->gadget = gadget; in usb_add_gadget_udc_release()
1209 gadget->udc = udc; in usb_add_gadget_udc_release()
1212 list_add_tail(&udc->list, &udc_list); in usb_add_gadget_udc_release()
1214 ret = device_add(&udc->dev); in usb_add_gadget_udc_release()
1219 udc->vbus = true; in usb_add_gadget_udc_release()
1222 ret = check_pending_gadget_drivers(udc); in usb_add_gadget_udc_release()
1231 device_del(&udc->dev); in usb_add_gadget_udc_release()
1234 list_del(&udc->list); in usb_add_gadget_udc_release()
1240 put_device(&udc->dev); in usb_add_gadget_udc_release()
1262 struct usb_udc *udc; in usb_get_gadget_udc_name() local
1267 list_for_each_entry(udc, &udc_list, list) { in usb_get_gadget_udc_name()
1268 if (!udc->driver) { in usb_get_gadget_udc_name()
1269 name = kstrdup(udc->gadget->name, GFP_KERNEL); in usb_get_gadget_udc_name()
1292 static void usb_gadget_remove_driver(struct usb_udc *udc) in usb_gadget_remove_driver() argument
1294 dev_dbg(&udc->dev, "unregistering UDC driver [%s]\n", in usb_gadget_remove_driver()
1295 udc->driver->function); in usb_gadget_remove_driver()
1297 kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); in usb_gadget_remove_driver()
1299 usb_gadget_disconnect(udc->gadget); in usb_gadget_remove_driver()
1300 udc->driver->unbind(udc->gadget); in usb_gadget_remove_driver()
1301 usb_gadget_udc_stop(udc); in usb_gadget_remove_driver()
1303 udc->driver = NULL; in usb_gadget_remove_driver()
1304 udc->dev.driver = NULL; in usb_gadget_remove_driver()
1305 udc->gadget->dev.driver = NULL; in usb_gadget_remove_driver()
1317 struct usb_udc *udc = gadget->udc; in usb_del_gadget_udc() local
1319 if (!udc) in usb_del_gadget_udc()
1325 list_del(&udc->list); in usb_del_gadget_udc()
1327 if (udc->driver) { in usb_del_gadget_udc()
1328 struct usb_gadget_driver *driver = udc->driver; in usb_del_gadget_udc()
1330 usb_gadget_remove_driver(udc); in usb_del_gadget_udc()
1335 kobject_uevent(&udc->dev.kobj, KOBJ_REMOVE); in usb_del_gadget_udc()
1337 device_unregister(&udc->dev); in usb_del_gadget_udc()
1345 static int udc_bind_to_driver(struct usb_udc *udc, struct usb_gadget_driver *driver) in udc_bind_to_driver() argument
1349 dev_dbg(&udc->dev, "registering UDC driver [%s]\n", in udc_bind_to_driver()
1352 udc->driver = driver; in udc_bind_to_driver()
1353 udc->dev.driver = &driver->driver; in udc_bind_to_driver()
1354 udc->gadget->dev.driver = &driver->driver; in udc_bind_to_driver()
1356 usb_gadget_udc_set_speed(udc, driver->max_speed); in udc_bind_to_driver()
1358 ret = driver->bind(udc->gadget, driver); in udc_bind_to_driver()
1361 ret = usb_gadget_udc_start(udc); in udc_bind_to_driver()
1363 driver->unbind(udc->gadget); in udc_bind_to_driver()
1366 usb_udc_connect_control(udc); in udc_bind_to_driver()
1368 kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); in udc_bind_to_driver()
1372 dev_err(&udc->dev, "failed to start %s: %d\n", in udc_bind_to_driver()
1373 udc->driver->function, ret); in udc_bind_to_driver()
1374 udc->driver = NULL; in udc_bind_to_driver()
1375 udc->dev.driver = NULL; in udc_bind_to_driver()
1376 udc->gadget->dev.driver = NULL; in udc_bind_to_driver()
1382 struct usb_udc *udc = NULL; in usb_gadget_probe_driver() local
1390 list_for_each_entry(udc, &udc_list, list) { in usb_gadget_probe_driver()
1391 ret = strcmp(driver->udc_name, dev_name(&udc->dev)); in usb_gadget_probe_driver()
1397 else if (udc->driver) in usb_gadget_probe_driver()
1402 list_for_each_entry(udc, &udc_list, list) { in usb_gadget_probe_driver()
1404 if (!udc->driver) in usb_gadget_probe_driver()
1419 ret = udc_bind_to_driver(udc, driver); in usb_gadget_probe_driver()
1427 struct usb_udc *udc = NULL; in usb_gadget_unregister_driver() local
1434 list_for_each_entry(udc, &udc_list, list) { in usb_gadget_unregister_driver()
1435 if (udc->driver == driver) { in usb_gadget_unregister_driver()
1436 usb_gadget_remove_driver(udc); in usb_gadget_unregister_driver()
1437 usb_gadget_set_state(udc->gadget, in usb_gadget_unregister_driver()
1441 check_pending_gadget_drivers(udc); in usb_gadget_unregister_driver()
1465 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in srp_store() local
1468 usb_gadget_wakeup(udc->gadget); in srp_store()
1477 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in soft_connect_store() local
1479 if (!udc->driver) { in soft_connect_store()
1485 usb_gadget_udc_start(udc); in soft_connect_store()
1486 usb_gadget_connect(udc->gadget); in soft_connect_store()
1488 usb_gadget_disconnect(udc->gadget); in soft_connect_store()
1489 usb_gadget_udc_stop(udc); in soft_connect_store()
1502 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in state_show() local
1503 struct usb_gadget *gadget = udc->gadget; in state_show()
1512 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in function_show() local
1513 struct usb_gadget_driver *drv = udc->driver; in function_show()
1525 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); \
1527 usb_speed_string(udc->gadget->param)); \
1538 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); \
1539 struct usb_gadget *gadget = udc->gadget; \
1580 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in usb_udc_uevent() local
1583 ret = add_uevent_var(env, "USB_UDC_NAME=%s", udc->gadget->name); in usb_udc_uevent()
1589 if (udc->driver) { in usb_udc_uevent()
1591 udc->driver->function); in usb_udc_uevent()