[PATCH v3 1/8] usb: cdns3: Set USB PHY mode in cdns3_drd_update_mode()

Minda Chen minda.chen at starfivetech.com
Fri Jul 26 10:39:45 CEST 2024



> 
> 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 at 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.


More information about the U-Boot mailing list