Lines Matching refs:role

29 static int cdns_role_start(struct cdns *cdns, enum usb_role role)
33 if (WARN_ON(role > USB_ROLE_DEVICE))
37 cdns->role = role;
40 if (!cdns->roles[role])
43 if (cdns->roles[role]->state == CDNS_ROLE_STATE_ACTIVE)
47 ret = cdns->roles[role]->start(cdns);
49 cdns->roles[role]->state = CDNS_ROLE_STATE_ACTIVE;
57 enum usb_role role = cdns->role;
59 if (WARN_ON(role > USB_ROLE_DEVICE))
62 if (cdns->roles[role]->state == CDNS_ROLE_STATE_INACTIVE)
66 cdns->roles[role]->stop(cdns);
67 cdns->roles[role]->state = CDNS_ROLE_STATE_INACTIVE;
78 * cdns_core_init_role - initialize role of operation
91 cdns->role = USB_ROLE_NONE;
174 /* Initialize idle role to start with */
207 * cdns_hw_role_state_machine - role switch state machine based on hw events.
210 * Returns next role to be entered based on hw events.
214 enum usb_role role = USB_ROLE_NONE;
219 role = USB_ROLE_HOST;
221 role = USB_ROLE_DEVICE;
223 return role;
232 * Previous state: cdns->role
233 * Next state: role
235 role = cdns->role;
237 switch (role) {
244 role = USB_ROLE_HOST;
246 role = USB_ROLE_DEVICE;
250 role = USB_ROLE_NONE;
254 role = USB_ROLE_NONE;
258 dev_dbg(cdns->dev, "role %d -> %d\n", cdns->role, role);
260 return role;
303 /* Depends on role switch class */
309 current_role = cdns->role;
318 dev_dbg(cdns->dev, "Switching role %d -> %d", current_role, real_role);
322 /* Back to current role */
336 * cdns_role_get - get current role of controller.
338 * @sw: pointer to USB role switch structure
340 * Returns role
346 return cdns->role;
350 * cdns_role_set - set current role of controller.
352 * @sw: pointer to USB role switch structure
353 * @role: the previous role
355 * - Role switch for dual-role devices
358 static int cdns_role_set(struct usb_role_switch *sw, enum usb_role role)
365 if (cdns->role == role)
369 switch (role) {
379 switch (role) {
389 ret = cdns_role_start(cdns, role);
391 dev_err(cdns->dev, "set role %d has failed\n", role);
412 if ((cdns->role == USB_ROLE_HOST) && cdns->host_dev)
440 if (device_property_read_bool(dev, "usb-role-switch")) {
515 if (cdns->roles[cdns->role]->suspend) {
517 cdns->roles[cdns->role]->suspend(cdns, false);
533 cdns->role = cdns_role_get(cdns->role_sw);
536 if (real_role != cdns->role) {
545 if (cdns->role == USB_ROLE_HOST)
547 else if (cdns->role == USB_ROLE_DEVICE)
555 if (cdns->roles[cdns->role]->resume)
556 cdns->roles[cdns->role]->resume(cdns, cdns_power_is_lost(cdns));