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