diff mbox series

[2/2] usb: ehci-mx6: Do not fail when 'reg' is not found

Message ID 20210620150052.1628256-2-festevam@denx.de
State Accepted
Commit 4822114f4fb4328114da8ab199672656591a150d
Delegated to: Stefano Babic
Headers show
Series [1/2] usb: ehci-mx6: Move fdtdec_get_alias_seq() inside the CONFIG_MX6 | expand

Commit Message

Fabio Estevam June 20, 2021, 3 p.m. UTC
Unlike imx6, on imx7 the USB PHY is described as:

	usbphynop1: usbphynop1 {
		compatible = "usb-nop-xceiv";
		clocks = <&clks IMX7D_USB_PHY1_CLK>;
		clock-names = "main_clk";
		#phy-cells = <0>;
	};
	
which does not have the 'reg' property.

Do not return an error when the 'reg' property is not found
for the USB PHY.

This fixes USB gadget regression on a imx7s-warp board.

Successfully tested the "ums 0 mmc 0" command on two boards:
imx7s-warp and imx6dl-pico-pi.

Signed-off-by: Fabio Estevam <festevam@denx.de>
---
 drivers/usb/host/ehci-mx6.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Pierre-Jean Texier June 20, 2021, 4:01 p.m. UTC | #1
Hi Fabio,

Le 20/06/2021 à 17:00, Fabio Estevam a écrit :
> Unlike imx6, on imx7 the USB PHY is described as:
> 
> 	usbphynop1: usbphynop1 {
> 		compatible = "usb-nop-xceiv";
> 		clocks = <&clks IMX7D_USB_PHY1_CLK>;
> 		clock-names = "main_clk";
> 		#phy-cells = <0>;
> 	};
> 	
> which does not have the 'reg' property.
> 
> Do not return an error when the 'reg' property is not found
> for the USB PHY.
> 
> This fixes USB gadget regression on a imx7s-warp board.
> 
> Successfully tested the "ums 0 mmc 0" command on two boards:
> imx7s-warp and imx6dl-pico-pi.
> 
> Signed-off-by: Fabio Estevam <festevam@denx.de>

Thanks for the fix.

Successfully tested on two boards:
  - imx7s-warp,
  - imx7d-pico-pi

Tested-by: Pierre-Jean Texier <texier.pj2@gmail.com>

> ---
>   drivers/usb/host/ehci-mx6.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/host/ehci-mx6.c b/drivers/usb/host/ehci-mx6.c
> index 48b5c8b0c53c..c3e4170513ec 100644
> --- a/drivers/usb/host/ehci-mx6.c
> +++ b/drivers/usb/host/ehci-mx6.c
> @@ -583,7 +583,7 @@ static int mx6_parse_dt_addrs(struct udevice *dev)
>   
>   	addr = (void __iomem *)fdtdec_get_addr(blob, phy_off, "reg");
>   	if ((fdt_addr_t)addr == FDT_ADDR_T_NONE)
> -		return -EINVAL;
> +		addr = NULL;
>   
>   	priv->phy_addr = addr;
>   
> 

Regards,
Fabio Estevam June 20, 2021, 4:28 p.m. UTC | #2
Hi Pierre-Jean,

On 20/06/2021 13:01, Pierre-Jean Texier wrote:

> Thanks for the fix.
> 
> Successfully tested on two boards:
>  - imx7s-warp,
>  - imx7d-pico-pi
> 
> Tested-by: Pierre-Jean Texier <texier.pj2@gmail.com>

Thanks for testing.

As you tested on the imx7s-warp board, you probably
noticed a 'slowdown' related to the MMC.

I have sent a revert to restore the original MMC behavior:
https://lore.kernel.org/u-boot/AM0PR04MB5283657FEFD76E04A8BA3F7B90369@AM0PR04MB5283.eurprd04.prod.outlook.com/T/#t

If this patch helps on your test, could you please send
a Tested-by tag for this one too?

Thanks,

Fabio Estevam
Pierre-Jean Texier June 20, 2021, 4:40 p.m. UTC | #3
Fabio,

Le 20/06/2021 à 18:28, Fabio Estevam a écrit :
> Hi Pierre-Jean,
> 
> On 20/06/2021 13:01, Pierre-Jean Texier wrote:
> 
>> Thanks for the fix.
>>
>> Successfully tested on two boards:
>>  - imx7s-warp,
>>  - imx7d-pico-pi
>>
>> Tested-by: Pierre-Jean Texier <texier.pj2@gmail.com>
> 
> Thanks for testing.
> 
> As you tested on the imx7s-warp board, you probably
> noticed a 'slowdown' related to the MMC.

Yes indeed, I noticed this issue.

> 
> I have sent a revert to restore the original MMC behavior:
> https://lore.kernel.org/u-boot/AM0PR04MB5283657FEFD76E04A8BA3F7B90369@AM0PR04MB5283.eurprd04.prod.outlook.com/T/#t 
> 
> 
> If this patch helps on your test, could you please send
> a Tested-by tag for this one too?

Sure, will do ;)

Thanks,
Marek Vasut June 20, 2021, 8:11 p.m. UTC | #4
On 6/20/21 5:00 PM, Fabio Estevam wrote:
> Unlike imx6, on imx7 the USB PHY is described as:
> 
> 	usbphynop1: usbphynop1 {
> 		compatible = "usb-nop-xceiv";
> 		clocks = <&clks IMX7D_USB_PHY1_CLK>;
> 		clock-names = "main_clk";
> 		#phy-cells = <0>;
> 	};
> 	
> which does not have the 'reg' property.
> 
> Do not return an error when the 'reg' property is not found
> for the USB PHY.
> 
> This fixes USB gadget regression on a imx7s-warp board.
> 
> Successfully tested the "ums 0 mmc 0" command on two boards:
> imx7s-warp and imx6dl-pico-pi.
> 
> Signed-off-by: Fabio Estevam <festevam@denx.de>
> ---
>   drivers/usb/host/ehci-mx6.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/host/ehci-mx6.c b/drivers/usb/host/ehci-mx6.c
> index 48b5c8b0c53c..c3e4170513ec 100644
> --- a/drivers/usb/host/ehci-mx6.c
> +++ b/drivers/usb/host/ehci-mx6.c
> @@ -583,7 +583,7 @@ static int mx6_parse_dt_addrs(struct udevice *dev)
>   
>   	addr = (void __iomem *)fdtdec_get_addr(blob, phy_off, "reg");
>   	if ((fdt_addr_t)addr == FDT_ADDR_T_NONE)
> -		return -EINVAL;
> +		addr = NULL;
>   
>   	priv->phy_addr = addr;

I applied both, but this looks very much like mx8mm which also uses 
nop-phy . So I think what would be even nicer is if you could try and 
enable CONFIG_PHY , patch the DT to specify phys = <&usbphynop1>; 
instead of fsl,usbphy = <&usbphynop1>; and see whether that works. You 
can have a look at how the usb was enabled on the verdin board.

Maybe then we can get rid of some of those ifdefs and switch to generic 
EHCI PHY etc.
Fabio Estevam June 20, 2021, 8:50 p.m. UTC | #5
Hi Marek,

On Sun, Jun 20, 2021 at 5:11 PM Marek Vasut <marex@denx.de> wrote:

> I applied both, but this looks very much like mx8mm which also uses
> nop-phy . So I think what would be even nicer is if you could try and
> enable CONFIG_PHY , patch the DT to specify phys = <&usbphynop1>;
> instead of fsl,usbphy = <&usbphynop1>; and see whether that works. You
> can have a look at how the usb was enabled on the verdin board.
>
> Maybe then we can get rid of some of those ifdefs and switch to generic
> EHCI PHY etc.

I will follow these suggestions after 2021.07 is out, thanks.
diff mbox series

Patch

diff --git a/drivers/usb/host/ehci-mx6.c b/drivers/usb/host/ehci-mx6.c
index 48b5c8b0c53c..c3e4170513ec 100644
--- a/drivers/usb/host/ehci-mx6.c
+++ b/drivers/usb/host/ehci-mx6.c
@@ -583,7 +583,7 @@  static int mx6_parse_dt_addrs(struct udevice *dev)
 
 	addr = (void __iomem *)fdtdec_get_addr(blob, phy_off, "reg");
 	if ((fdt_addr_t)addr == FDT_ADDR_T_NONE)
-		return -EINVAL;
+		addr = NULL;
 
 	priv->phy_addr = addr;