Lines Matching refs:sw
70 * @sw: USB role switch
73 * Set USB role @role for @sw.
75 int usb_role_switch_set_role(struct usb_role_switch *sw, enum usb_role role)
79 if (IS_ERR_OR_NULL(sw))
82 if (!sw->registered)
85 mutex_lock(&sw->lock);
87 ret = sw->set(sw, role);
89 sw->role = role;
90 kobject_uevent(&sw->dev.kobj, KOBJ_CHANGE);
93 mutex_unlock(&sw->lock);
101 * @sw: USB role switch
106 enum usb_role usb_role_switch_get_role(struct usb_role_switch *sw)
110 if (IS_ERR_OR_NULL(sw) || !sw->registered)
113 mutex_lock(&sw->lock);
115 if (sw->get)
116 role = sw->get(sw);
118 role = sw->role;
120 mutex_unlock(&sw->lock);
164 struct usb_role_switch *sw;
166 sw = usb_role_switch_is_parent(dev_fwnode(dev));
167 if (!sw)
168 sw = device_connection_find_match(dev, "usb-role-switch", NULL,
171 if (!IS_ERR_OR_NULL(sw))
172 WARN_ON(!try_module_get(sw->module));
174 return sw;
187 struct usb_role_switch *sw;
189 sw = usb_role_switch_is_parent(fwnode);
190 if (!sw)
191 sw = fwnode_connection_find_match(fwnode, "usb-role-switch",
193 if (!IS_ERR_OR_NULL(sw))
194 WARN_ON(!try_module_get(sw->module));
196 return sw;
202 * @sw: USB Role Switch
204 * Decrement reference count for @sw.
206 void usb_role_switch_put(struct usb_role_switch *sw)
208 if (!IS_ERR_OR_NULL(sw)) {
209 module_put(sw->module);
210 put_device(&sw->dev);
226 struct usb_role_switch *sw = NULL;
233 sw = to_role_switch(dev);
234 WARN_ON(!try_module_get(sw->module));
237 return sw;
245 struct usb_role_switch *sw = to_role_switch(dev);
247 if (sw->allow_userspace_control)
271 struct usb_role_switch *sw = to_role_switch(dev);
272 enum usb_role role = usb_role_switch_get_role(sw);
280 struct usb_role_switch *sw = to_role_switch(dev);
293 ret = usb_role_switch_set_role(sw, ret);
329 struct usb_role_switch *sw = to_role_switch(dev);
331 mutex_destroy(&sw->lock);
332 lockdep_unregister_key(&sw->key);
333 kfree(sw);
361 struct usb_role_switch *sw;
367 sw = kzalloc(sizeof(*sw), GFP_KERNEL);
368 if (!sw)
371 lockdep_register_key(&sw->key);
372 mutex_init_with_key(&sw->lock, &sw->key);
374 sw->allow_userspace_control = desc->allow_userspace_control;
375 sw->usb2_port = desc->usb2_port;
376 sw->usb3_port = desc->usb3_port;
377 sw->udc = desc->udc;
378 sw->set = desc->set;
379 sw->get = desc->get;
381 sw->module = parent->driver->owner;
382 sw->dev.parent = parent;
383 sw->dev.fwnode = desc->fwnode;
384 sw->dev.class = &role_class;
385 sw->dev.type = &usb_role_dev_type;
386 dev_set_drvdata(&sw->dev, desc->driver_data);
387 dev_set_name(&sw->dev, "%s-role-switch",
390 sw->registered = true;
392 ret = device_register(&sw->dev);
394 sw->registered = false;
395 put_device(&sw->dev);
399 if (dev_fwnode(&sw->dev)) {
400 ret = component_add(&sw->dev, &connector_ops);
402 dev_warn(&sw->dev, "failed to add component\n");
407 return sw;
413 * @sw: USB Role Switch
417 void usb_role_switch_unregister(struct usb_role_switch *sw)
419 if (IS_ERR_OR_NULL(sw))
421 sw->registered = false;
422 if (dev_fwnode(&sw->dev))
423 component_del(&sw->dev, &connector_ops);
424 device_unregister(&sw->dev);
430 * @sw: USB Role Switch
433 void usb_role_switch_set_drvdata(struct usb_role_switch *sw, void *data)
435 dev_set_drvdata(&sw->dev, data);
441 * @sw: USB Role Switch
443 void *usb_role_switch_get_drvdata(struct usb_role_switch *sw)
445 return dev_get_drvdata(&sw->dev);