Lines Matching refs:udc
49 static int udc_bind_to_driver(struct usb_udc *udc,
990 struct usb_udc *udc = gadget->udc; in usb_gadget_state_work() local
992 if (udc) in usb_gadget_state_work()
993 sysfs_notify(&udc->dev.kobj, NULL, "state"); in usb_gadget_state_work()
1006 static void usb_udc_connect_control(struct usb_udc *udc) in usb_udc_connect_control() argument
1008 if (udc->vbus) in usb_udc_connect_control()
1009 usb_gadget_connect(udc->gadget); in usb_udc_connect_control()
1011 usb_gadget_disconnect(udc->gadget); in usb_udc_connect_control()
1025 struct usb_udc *udc = gadget->udc; in usb_udc_vbus_handler() local
1027 if (udc) { in usb_udc_vbus_handler()
1028 udc->vbus = status; in usb_udc_vbus_handler()
1029 usb_udc_connect_control(udc); in usb_udc_vbus_handler()
1064 static inline int usb_gadget_udc_start(struct usb_udc *udc) in usb_gadget_udc_start() argument
1066 return udc->gadget->ops->udc_start(udc->gadget, udc->driver); in usb_gadget_udc_start()
1081 static inline void usb_gadget_udc_stop(struct usb_udc *udc) in usb_gadget_udc_stop() argument
1083 udc->gadget->ops->udc_stop(udc->gadget); in usb_gadget_udc_stop()
1096 static inline void usb_gadget_udc_set_speed(struct usb_udc *udc, in usb_gadget_udc_set_speed() argument
1099 if (udc->gadget->ops->udc_set_speed) { in usb_gadget_udc_set_speed()
1102 s = min(speed, udc->gadget->max_speed); in usb_gadget_udc_set_speed()
1103 udc->gadget->ops->udc_set_speed(udc->gadget, s); in usb_gadget_udc_set_speed()
1116 struct usb_udc *udc; in usb_udc_release() local
1118 udc = container_of(dev, struct usb_udc, dev); in usb_udc_release()
1120 kfree(udc); in usb_udc_release()
1131 static int check_pending_gadget_drivers(struct usb_udc *udc) in check_pending_gadget_drivers() argument
1138 dev_name(&udc->dev)) == 0) { in check_pending_gadget_drivers()
1139 ret = udc_bind_to_driver(udc, driver); in check_pending_gadget_drivers()
1161 struct usb_udc *udc; in usb_add_gadget_udc_release() local
1175 udc = kzalloc(sizeof(*udc), GFP_KERNEL); in usb_add_gadget_udc_release()
1176 if (!udc) in usb_add_gadget_udc_release()
1179 device_initialize(&udc->dev); in usb_add_gadget_udc_release()
1180 udc->dev.release = usb_udc_release; in usb_add_gadget_udc_release()
1181 udc->dev.class = udc_class; in usb_add_gadget_udc_release()
1182 udc->dev.groups = usb_udc_attr_groups; in usb_add_gadget_udc_release()
1183 udc->dev.parent = parent; in usb_add_gadget_udc_release()
1184 ret = dev_set_name(&udc->dev, "%s", kobject_name(&parent->kobj)); in usb_add_gadget_udc_release()
1192 udc->gadget = gadget; in usb_add_gadget_udc_release()
1193 gadget->udc = udc; in usb_add_gadget_udc_release()
1196 list_add_tail(&udc->list, &udc_list); in usb_add_gadget_udc_release()
1198 ret = device_add(&udc->dev); in usb_add_gadget_udc_release()
1203 udc->vbus = true; in usb_add_gadget_udc_release()
1206 ret = check_pending_gadget_drivers(udc); in usb_add_gadget_udc_release()
1215 device_del(&udc->dev); in usb_add_gadget_udc_release()
1218 list_del(&udc->list); in usb_add_gadget_udc_release()
1224 put_device(&udc->dev); in usb_add_gadget_udc_release()
1246 struct usb_udc *udc; in usb_get_gadget_udc_name() local
1251 list_for_each_entry(udc, &udc_list, list) { in usb_get_gadget_udc_name()
1252 if (!udc->driver) { in usb_get_gadget_udc_name()
1253 name = kstrdup(udc->gadget->name, GFP_KERNEL); in usb_get_gadget_udc_name()
1276 static void usb_gadget_remove_driver(struct usb_udc *udc) in usb_gadget_remove_driver() argument
1278 dev_dbg(&udc->dev, "unregistering UDC driver [%s]\n", in usb_gadget_remove_driver()
1279 udc->driver->function); in usb_gadget_remove_driver()
1281 kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); in usb_gadget_remove_driver()
1283 usb_gadget_disconnect(udc->gadget); in usb_gadget_remove_driver()
1284 udc->driver->disconnect(udc->gadget); in usb_gadget_remove_driver()
1285 udc->driver->unbind(udc->gadget); in usb_gadget_remove_driver()
1286 usb_gadget_udc_stop(udc); in usb_gadget_remove_driver()
1288 udc->driver = NULL; in usb_gadget_remove_driver()
1289 udc->dev.driver = NULL; in usb_gadget_remove_driver()
1290 udc->gadget->dev.driver = NULL; in usb_gadget_remove_driver()
1302 struct usb_udc *udc = gadget->udc; in usb_del_gadget_udc() local
1304 if (!udc) in usb_del_gadget_udc()
1310 list_del(&udc->list); in usb_del_gadget_udc()
1312 if (udc->driver) { in usb_del_gadget_udc()
1313 struct usb_gadget_driver *driver = udc->driver; in usb_del_gadget_udc()
1315 usb_gadget_remove_driver(udc); in usb_del_gadget_udc()
1320 kobject_uevent(&udc->dev.kobj, KOBJ_REMOVE); in usb_del_gadget_udc()
1322 device_unregister(&udc->dev); in usb_del_gadget_udc()
1330 static int udc_bind_to_driver(struct usb_udc *udc, struct usb_gadget_driver *driver) in udc_bind_to_driver() argument
1334 dev_dbg(&udc->dev, "registering UDC driver [%s]\n", in udc_bind_to_driver()
1337 udc->driver = driver; in udc_bind_to_driver()
1338 udc->dev.driver = &driver->driver; in udc_bind_to_driver()
1339 udc->gadget->dev.driver = &driver->driver; in udc_bind_to_driver()
1341 usb_gadget_udc_set_speed(udc, driver->max_speed); in udc_bind_to_driver()
1343 ret = driver->bind(udc->gadget, driver); in udc_bind_to_driver()
1346 ret = usb_gadget_udc_start(udc); in udc_bind_to_driver()
1348 driver->unbind(udc->gadget); in udc_bind_to_driver()
1351 usb_udc_connect_control(udc); in udc_bind_to_driver()
1353 kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); in udc_bind_to_driver()
1357 dev_err(&udc->dev, "failed to start %s: %d\n", in udc_bind_to_driver()
1358 udc->driver->function, ret); in udc_bind_to_driver()
1359 udc->driver = NULL; in udc_bind_to_driver()
1360 udc->dev.driver = NULL; in udc_bind_to_driver()
1361 udc->gadget->dev.driver = NULL; in udc_bind_to_driver()
1367 struct usb_udc *udc = NULL; in usb_gadget_probe_driver() local
1375 list_for_each_entry(udc, &udc_list, list) { in usb_gadget_probe_driver()
1376 ret = strcmp(driver->udc_name, dev_name(&udc->dev)); in usb_gadget_probe_driver()
1382 else if (udc->driver) in usb_gadget_probe_driver()
1387 list_for_each_entry(udc, &udc_list, list) { in usb_gadget_probe_driver()
1389 if (!udc->driver) in usb_gadget_probe_driver()
1404 ret = udc_bind_to_driver(udc, driver); in usb_gadget_probe_driver()
1412 struct usb_udc *udc = NULL; in usb_gadget_unregister_driver() local
1419 list_for_each_entry(udc, &udc_list, list) { in usb_gadget_unregister_driver()
1420 if (udc->driver == driver) { in usb_gadget_unregister_driver()
1421 usb_gadget_remove_driver(udc); in usb_gadget_unregister_driver()
1422 usb_gadget_set_state(udc->gadget, in usb_gadget_unregister_driver()
1426 check_pending_gadget_drivers(udc); in usb_gadget_unregister_driver()
1450 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in srp_store() local
1453 usb_gadget_wakeup(udc->gadget); in srp_store()
1462 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in soft_connect_store() local
1464 if (!udc->driver) { in soft_connect_store()
1470 usb_gadget_udc_start(udc); in soft_connect_store()
1471 usb_gadget_connect(udc->gadget); in soft_connect_store()
1473 usb_gadget_disconnect(udc->gadget); in soft_connect_store()
1474 udc->driver->disconnect(udc->gadget); in soft_connect_store()
1475 usb_gadget_udc_stop(udc); in soft_connect_store()
1488 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in state_show() local
1489 struct usb_gadget *gadget = udc->gadget; in state_show()
1498 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in function_show() local
1499 struct usb_gadget_driver *drv = udc->driver; in function_show()
1511 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); \
1513 usb_speed_string(udc->gadget->param)); \
1524 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); \
1525 struct usb_gadget *gadget = udc->gadget; \
1566 struct usb_udc *udc = container_of(dev, struct usb_udc, dev); in usb_udc_uevent() local
1569 ret = add_uevent_var(env, "USB_UDC_NAME=%s", udc->gadget->name); in usb_udc_uevent()
1575 if (udc->driver) { in usb_udc_uevent()
1577 udc->driver->function); in usb_udc_uevent()