
USB PHY maybe need to set PHY mode in different USB dr mode. So translate USB PHY mode to generic PHY mode and call generic_phy_set_mode().
Signed-off-by: Minda Chen minda.chen@starfivetech.com
drivers/usb/cdns3/drd.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+)
diff --git a/drivers/usb/cdns3/drd.c b/drivers/usb/cdns3/drd.c index 47874fec29..cbb1334234 100644 --- a/drivers/usb/cdns3/drd.c +++ b/drivers/usb/cdns3/drd.c @@ -217,15 +217,19 @@ static int cdns3_init_otg_mode(struct cdns3 *cdns) int cdns3_drd_update_mode(struct cdns3 *cdns) { int ret = 0;
int mode;
switch (cdns->dr_mode) { case USB_DR_MODE_PERIPHERAL:
mode = PHY_MODE_USB_DEVICE;
ret = cdns3_set_mode(cdns, USB_DR_MODE_PERIPHERAL); break; case USB_DR_MODE_HOST:
mode = PHY_MODE_USB_HOST;
ret = cdns3_set_mode(cdns, USB_DR_MODE_HOST); break; case USB_DR_MODE_OTG:
mode = PHY_MODE_USB_OTG;
ret = cdns3_init_otg_mode(cdns); break; default:
@@ -234,6 +238,16 @@ int cdns3_drd_update_mode(struct cdns3 *cdns) return -EINVAL; }
- ret = generic_phy_set_mode(&cdns->usb2_phy, mode, 0);
- if (ret) {
dev_err(cdns->dev, "Set usb 2.0 PHY mode failed %d\n", ret);
return ret;
- }
- ret = generic_phy_set_mode(&cdns->usb3_phy, mode, 0);
- if (ret)
dev_err(cdns->dev, "Set usb 3.0 PHY mode failed %d\n", ret);
- return ret;
}
Hi Roger Is this patch OK now? Could you add review tag to this? Thanks.