Message ID | 20240504150358.19600-2-minda.chen@starfivetech.com |
---|---|
State | Changes Requested |
Delegated to: | Marek Vasut |
Headers | show |
Series | Add Starfive JH7110 Cadence USB driver | expand |
On 5/4/24 5:03 PM, Minda Chen wrote: > USB PHY maybe need to set PHY mode in different USB > dr mode. So translate to generic PHY mode and call > generic_phy_set_mode(). > > Signed-off-by: Minda Chen <minda.chen@starfivetech.com> > --- > drivers/usb/cdns3/core.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/drivers/usb/cdns3/core.c b/drivers/usb/cdns3/core.c > index 12a741c6ea..c1a61471f9 100644 > --- a/drivers/usb/cdns3/core.c > +++ b/drivers/usb/cdns3/core.c > @@ -321,6 +321,7 @@ static int cdns3_probe(struct cdns3 *cdns) > { > struct udevice *dev = cdns->dev; > int ret; > + int mode = PHY_MODE_INVALID; Please swap ret and mode to keep this list sorted. > cdns->xhci_regs = dev_remap_addr_name(dev, "xhci"); > if (!cdns->xhci_regs) > @@ -372,6 +373,22 @@ static int cdns3_probe(struct cdns3 *cdns) > if (ret) > return ret; > > + if (cdns->dr_mode == USB_DR_MODE_HOST) > + mode = PHY_MODE_USB_HOST; > + else if (cdns->dr_mode == USB_DR_MODE_PERIPHERAL) > + mode = PHY_MODE_USB_DEVICE; > + else if (cdns->dr_mode == USB_DR_MODE_OTG) > + mode = PHY_MODE_USB_OTG; > + > + if (mode != PHY_MODE_INVALID) { Better invert the condition this way to reduce indent: if (mode == PHY_MODE_INVALID) { dev_err(...report the error...); return ret; } ret = generic_phy_set... > + ret = generic_phy_set_mode(&cdns->usb2_phy, mode, 0); > + if (ret) > + return ret; > + ret = generic_phy_set_mode(&cdns->usb3_phy, mode, 0); > + if (ret) > + return ret; > + } > + > dev_dbg(dev, "Cadence USB3 core: probe succeed\n"); > > return 0;
diff --git a/drivers/usb/cdns3/core.c b/drivers/usb/cdns3/core.c index 12a741c6ea..c1a61471f9 100644 --- a/drivers/usb/cdns3/core.c +++ b/drivers/usb/cdns3/core.c @@ -321,6 +321,7 @@ static int cdns3_probe(struct cdns3 *cdns) { struct udevice *dev = cdns->dev; int ret; + int mode = PHY_MODE_INVALID; cdns->xhci_regs = dev_remap_addr_name(dev, "xhci"); if (!cdns->xhci_regs) @@ -372,6 +373,22 @@ static int cdns3_probe(struct cdns3 *cdns) if (ret) return ret; + if (cdns->dr_mode == USB_DR_MODE_HOST) + mode = PHY_MODE_USB_HOST; + else if (cdns->dr_mode == USB_DR_MODE_PERIPHERAL) + mode = PHY_MODE_USB_DEVICE; + else if (cdns->dr_mode == USB_DR_MODE_OTG) + mode = PHY_MODE_USB_OTG; + + if (mode != PHY_MODE_INVALID) { + ret = generic_phy_set_mode(&cdns->usb2_phy, mode, 0); + if (ret) + return ret; + ret = generic_phy_set_mode(&cdns->usb3_phy, mode, 0); + if (ret) + return ret; + } + dev_dbg(dev, "Cadence USB3 core: probe succeed\n"); return 0;
USB PHY maybe need to set PHY mode in different USB dr mode. So translate to generic PHY mode and call generic_phy_set_mode(). Signed-off-by: Minda Chen <minda.chen@starfivetech.com> --- drivers/usb/cdns3/core.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)