diff options
| author | 2019-10-27 18:54:13 +0100 | |
|---|---|---|
| committer | 2019-10-27 18:54:13 +0100 | |
| commit | 8f677bc819e7a74cf10e30daf06e8b151d1e6a94 (patch) | |
| tree | 379e4e32a06dfb6d2ca3519ca4ef6b7507fad197 /drivers/usb/cdns3/core.c | |
| parent | docs: driver-model: Add documentation for sync_state (diff) | |
| parent | Linux 5.4-rc5 (diff) | |
| download | wireguard-linux-8f677bc819e7a74cf10e30daf06e8b151d1e6a94.tar.xz wireguard-linux-8f677bc819e7a74cf10e30daf06e8b151d1e6a94.zip | |
Merge 5.4-rc5 into driver-core-next
We want the sysfs fix in here as well to build on top of.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/cdns3/core.c')
| -rw-r--r-- | drivers/usb/cdns3/core.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/drivers/usb/cdns3/core.c b/drivers/usb/cdns3/core.c index 06f1e105be4e..c2123ef8d8a3 100644 --- a/drivers/usb/cdns3/core.c +++ b/drivers/usb/cdns3/core.c @@ -160,10 +160,30 @@ static int cdns3_core_init_role(struct cdns3 *cdns) if (ret) goto err; - if (cdns->dr_mode != USB_DR_MODE_OTG) { + /* Initialize idle role to start with */ + ret = cdns3_role_start(cdns, USB_ROLE_NONE); + if (ret) + goto err; + + switch (cdns->dr_mode) { + case USB_DR_MODE_OTG: ret = cdns3_hw_role_switch(cdns); if (ret) goto err; + break; + case USB_DR_MODE_PERIPHERAL: + ret = cdns3_role_start(cdns, USB_ROLE_DEVICE); + if (ret) + goto err; + break; + case USB_DR_MODE_HOST: + ret = cdns3_role_start(cdns, USB_ROLE_HOST); + if (ret) + goto err; + break; + default: + ret = -EINVAL; + goto err; } return ret; |
