Lines Matching full:sw
41 * @sw: USB role switch
44 * Set USB role @role for @sw.
46 int usb_role_switch_set_role(struct usb_role_switch *sw, enum usb_role role) in usb_role_switch_set_role() argument
50 if (IS_ERR_OR_NULL(sw)) in usb_role_switch_set_role()
53 if (!sw->registered) in usb_role_switch_set_role()
56 mutex_lock(&sw->lock); in usb_role_switch_set_role()
58 ret = sw->set(sw, role); in usb_role_switch_set_role()
60 sw->role = role; in usb_role_switch_set_role()
61 kobject_uevent(&sw->dev.kobj, KOBJ_CHANGE); in usb_role_switch_set_role()
64 mutex_unlock(&sw->lock); in usb_role_switch_set_role()
72 * @sw: USB role switch
77 enum usb_role usb_role_switch_get_role(struct usb_role_switch *sw) in usb_role_switch_get_role() argument
81 if (IS_ERR_OR_NULL(sw) || !sw->registered) in usb_role_switch_get_role()
84 mutex_lock(&sw->lock); in usb_role_switch_get_role()
86 if (sw->get) in usb_role_switch_get_role()
87 role = sw->get(sw); in usb_role_switch_get_role()
89 role = sw->role; in usb_role_switch_get_role()
91 mutex_unlock(&sw->lock); in usb_role_switch_get_role()
135 struct usb_role_switch *sw; in usb_role_switch_get() local
137 sw = usb_role_switch_is_parent(dev_fwnode(dev)); in usb_role_switch_get()
138 if (!sw) in usb_role_switch_get()
139 sw = device_connection_find_match(dev, "usb-role-switch", NULL, in usb_role_switch_get()
142 if (!IS_ERR_OR_NULL(sw)) in usb_role_switch_get()
143 WARN_ON(!try_module_get(sw->module)); in usb_role_switch_get()
145 return sw; in usb_role_switch_get()
158 struct usb_role_switch *sw; in fwnode_usb_role_switch_get() local
160 sw = usb_role_switch_is_parent(fwnode); in fwnode_usb_role_switch_get()
161 if (!sw) in fwnode_usb_role_switch_get()
162 sw = fwnode_connection_find_match(fwnode, "usb-role-switch", in fwnode_usb_role_switch_get()
164 if (!IS_ERR_OR_NULL(sw)) in fwnode_usb_role_switch_get()
165 WARN_ON(!try_module_get(sw->module)); in fwnode_usb_role_switch_get()
167 return sw; in fwnode_usb_role_switch_get()
173 * @sw: USB Role Switch
175 * Decrement reference count for @sw.
177 void usb_role_switch_put(struct usb_role_switch *sw) in usb_role_switch_put() argument
179 if (!IS_ERR_OR_NULL(sw)) { in usb_role_switch_put()
180 module_put(sw->module); in usb_role_switch_put()
181 put_device(&sw->dev); in usb_role_switch_put()
197 struct usb_role_switch *sw = NULL; in usb_role_switch_find_by_fwnode() local
204 sw = to_role_switch(dev); in usb_role_switch_find_by_fwnode()
205 WARN_ON(!try_module_get(sw->module)); in usb_role_switch_find_by_fwnode()
208 return sw; in usb_role_switch_find_by_fwnode()
216 struct usb_role_switch *sw = to_role_switch(dev); in usb_role_switch_is_visible() local
218 if (sw->allow_userspace_control) in usb_role_switch_is_visible()
242 struct usb_role_switch *sw = to_role_switch(dev); in role_show() local
243 enum usb_role role = usb_role_switch_get_role(sw); in role_show()
251 struct usb_role_switch *sw = to_role_switch(dev); in role_store() local
264 ret = usb_role_switch_set_role(sw, ret); in role_store()
300 struct usb_role_switch *sw = to_role_switch(dev); in usb_role_switch_release() local
302 kfree(sw); in usb_role_switch_release()
330 struct usb_role_switch *sw; in usb_role_switch_register() local
336 sw = kzalloc(sizeof(*sw), GFP_KERNEL); in usb_role_switch_register()
337 if (!sw) in usb_role_switch_register()
340 mutex_init(&sw->lock); in usb_role_switch_register()
342 sw->allow_userspace_control = desc->allow_userspace_control; in usb_role_switch_register()
343 sw->usb2_port = desc->usb2_port; in usb_role_switch_register()
344 sw->usb3_port = desc->usb3_port; in usb_role_switch_register()
345 sw->udc = desc->udc; in usb_role_switch_register()
346 sw->set = desc->set; in usb_role_switch_register()
347 sw->get = desc->get; in usb_role_switch_register()
349 sw->module = parent->driver->owner; in usb_role_switch_register()
350 sw->dev.parent = parent; in usb_role_switch_register()
351 sw->dev.fwnode = desc->fwnode; in usb_role_switch_register()
352 sw->dev.class = &role_class; in usb_role_switch_register()
353 sw->dev.type = &usb_role_dev_type; in usb_role_switch_register()
354 dev_set_drvdata(&sw->dev, desc->driver_data); in usb_role_switch_register()
355 dev_set_name(&sw->dev, "%s-role-switch", in usb_role_switch_register()
358 ret = device_register(&sw->dev); in usb_role_switch_register()
360 put_device(&sw->dev); in usb_role_switch_register()
364 sw->registered = true; in usb_role_switch_register()
368 return sw; in usb_role_switch_register()
374 * @sw: USB Role Switch
378 void usb_role_switch_unregister(struct usb_role_switch *sw) in usb_role_switch_unregister() argument
380 if (!IS_ERR_OR_NULL(sw)) { in usb_role_switch_unregister()
381 sw->registered = false; in usb_role_switch_unregister()
382 device_unregister(&sw->dev); in usb_role_switch_unregister()
389 * @sw: USB Role Switch
392 void usb_role_switch_set_drvdata(struct usb_role_switch *sw, void *data) in usb_role_switch_set_drvdata() argument
394 dev_set_drvdata(&sw->dev, data); in usb_role_switch_set_drvdata()
400 * @sw: USB Role Switch
402 void *usb_role_switch_get_drvdata(struct usb_role_switch *sw) in usb_role_switch_get_drvdata() argument
404 return dev_get_drvdata(&sw->dev); in usb_role_switch_get_drvdata()