usb: dwc3: remove generic PHYs forwarding for XHCI device
diff mbox series

Message ID 20190719093037.16181-1-m.szyprowski@samsung.com
State Not Applicable
Headers show
Series
  • usb: dwc3: remove generic PHYs forwarding for XHCI device
Related show

Commit Message

Marek Szyprowski July 19, 2019, 9:30 a.m. UTC
Commit 08f871a3aca2 ("usb: dwc3: host: convey the PHYs to xhci") added
forwarding of the generic PHYs from DWC3 core to the instantiated XHCI-plat
device. However XHCI(-plat) driver never gained support for generic PHYs,
thus the lookup added by that commit is never used. In meantime the commit
d64ff406e51e ("usb: dwc3: use bus->sysdev for DMA configuration")
incorrectly changed the device used for creating lookup, making the lookup
useless and generic PHYs inaccessible from XHCI device.

However since commit 178a0bce05cb ("usb: core: hcd: integrate the PHY
wrapper into the HCD core") USB HCD already handles generic PHYs acquired
from the HCD's 'sysdev', which in this case is DWC3 core device. This means
that creating any custom lookup entries for XHCI driver is no longer needed
and can be simply removed.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
---
 drivers/usb/dwc3/host.c | 22 ++++------------------
 1 file changed, 4 insertions(+), 18 deletions(-)

Comments

Felipe Balbi Aug. 8, 2019, 12:47 p.m. UTC | #1
Hi,

Marek Szyprowski <m.szyprowski@samsung.com> writes:

> Commit 08f871a3aca2 ("usb: dwc3: host: convey the PHYs to xhci") added
> forwarding of the generic PHYs from DWC3 core to the instantiated XHCI-plat
> device. However XHCI(-plat) driver never gained support for generic PHYs,
> thus the lookup added by that commit is never used. In meantime the commit
> d64ff406e51e ("usb: dwc3: use bus->sysdev for DMA configuration")
> incorrectly changed the device used for creating lookup, making the lookup
> useless and generic PHYs inaccessible from XHCI device.
>
> However since commit 178a0bce05cb ("usb: core: hcd: integrate the PHY
> wrapper into the HCD core") USB HCD already handles generic PHYs acquired
> from the HCD's 'sysdev', which in this case is DWC3 core device. This means
> that creating any custom lookup entries for XHCI driver is no longer needed
> and can be simply removed.
>
> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
> ---
>  drivers/usb/dwc3/host.c | 22 ++++------------------
>  1 file changed, 4 insertions(+), 18 deletions(-)
>
> diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c
> index f55947294f7c..8deea8c91e03 100644
> --- a/drivers/usb/dwc3/host.c
> +++ b/drivers/usb/dwc3/host.c
> @@ -85,7 +85,7 @@ int dwc3_host_init(struct dwc3 *dwc)
>  						DWC3_XHCI_RESOURCES_NUM);
>  	if (ret) {
>  		dev_err(dwc->dev, "couldn't add resources to xHCI device\n");
> -		goto err1;
> +		goto err;
>  	}
>  
>  	memset(props, 0, sizeof(struct property_entry) * ARRAY_SIZE(props));
> @@ -112,37 +112,23 @@ int dwc3_host_init(struct dwc3 *dwc)
>  		ret = platform_device_add_properties(xhci, props);
>  		if (ret) {
>  			dev_err(dwc->dev, "failed to add properties to xHCI\n");
> -			goto err1;
> +			goto err;
>  		}
>  	}
>  
> -	phy_create_lookup(dwc->usb2_generic_phy, "usb2-phy",
> -			  dev_name(dwc->dev));
> -	phy_create_lookup(dwc->usb3_generic_phy, "usb3-phy",
> -			  dev_name(dwc->dev));
> -
>  	ret = platform_device_add(xhci);
>  	if (ret) {
>  		dev_err(dwc->dev, "failed to register xHCI device\n");
> -		goto err2;
> +		goto err;
>  	}
>  
>  	return 0;
> -err2:
> -	phy_remove_lookup(dwc->usb2_generic_phy, "usb2-phy",
> -			  dev_name(dwc->dev));
> -	phy_remove_lookup(dwc->usb3_generic_phy, "usb3-phy",
> -			  dev_name(dwc->dev));
> -err1:
> +err:
>  	platform_device_put(xhci);
>  	return ret;
>  }
>  
>  void dwc3_host_exit(struct dwc3 *dwc)
>  {
> -	phy_remove_lookup(dwc->usb2_generic_phy, "usb2-phy",
> -			  dev_name(dwc->dev));
> -	phy_remove_lookup(dwc->usb3_generic_phy, "usb3-phy",
> -			  dev_name(dwc->dev));
>  	platform_device_unregister(dwc->xhci);
>  }

Roger, could you verify that this doesn't regress any of your platforms?

Thanks
Roger Quadros Aug. 9, 2019, 10:31 a.m. UTC | #2
Hi,

On 08/08/2019 15:47, Felipe Balbi wrote:
> 
> Hi,
> 
> Marek Szyprowski <m.szyprowski@samsung.com> writes:
> 
>> Commit 08f871a3aca2 ("usb: dwc3: host: convey the PHYs to xhci") added
>> forwarding of the generic PHYs from DWC3 core to the instantiated XHCI-plat
>> device. However XHCI(-plat) driver never gained support for generic PHYs,
>> thus the lookup added by that commit is never used. In meantime the commit
>> d64ff406e51e ("usb: dwc3: use bus->sysdev for DMA configuration")
>> incorrectly changed the device used for creating lookup, making the lookup
>> useless and generic PHYs inaccessible from XHCI device.
>>
>> However since commit 178a0bce05cb ("usb: core: hcd: integrate the PHY
>> wrapper into the HCD core") USB HCD already handles generic PHYs acquired
>> from the HCD's 'sysdev', which in this case is DWC3 core device. This means
>> that creating any custom lookup entries for XHCI driver is no longer needed
>> and can be simply removed.
>>
>> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
>> ---
>>  drivers/usb/dwc3/host.c | 22 ++++------------------
>>  1 file changed, 4 insertions(+), 18 deletions(-)
>>
>> diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c
>> index f55947294f7c..8deea8c91e03 100644
>> --- a/drivers/usb/dwc3/host.c
>> +++ b/drivers/usb/dwc3/host.c
>> @@ -85,7 +85,7 @@ int dwc3_host_init(struct dwc3 *dwc)
>>  						DWC3_XHCI_RESOURCES_NUM);
>>  	if (ret) {
>>  		dev_err(dwc->dev, "couldn't add resources to xHCI device\n");
>> -		goto err1;
>> +		goto err;
>>  	}
>>  
>>  	memset(props, 0, sizeof(struct property_entry) * ARRAY_SIZE(props));
>> @@ -112,37 +112,23 @@ int dwc3_host_init(struct dwc3 *dwc)
>>  		ret = platform_device_add_properties(xhci, props);
>>  		if (ret) {
>>  			dev_err(dwc->dev, "failed to add properties to xHCI\n");
>> -			goto err1;
>> +			goto err;
>>  		}
>>  	}
>>  
>> -	phy_create_lookup(dwc->usb2_generic_phy, "usb2-phy",
>> -			  dev_name(dwc->dev));
>> -	phy_create_lookup(dwc->usb3_generic_phy, "usb3-phy",
>> -			  dev_name(dwc->dev));
>> -
>>  	ret = platform_device_add(xhci);
>>  	if (ret) {
>>  		dev_err(dwc->dev, "failed to register xHCI device\n");
>> -		goto err2;
>> +		goto err;
>>  	}
>>  
>>  	return 0;
>> -err2:
>> -	phy_remove_lookup(dwc->usb2_generic_phy, "usb2-phy",
>> -			  dev_name(dwc->dev));
>> -	phy_remove_lookup(dwc->usb3_generic_phy, "usb3-phy",
>> -			  dev_name(dwc->dev));
>> -err1:
>> +err:
>>  	platform_device_put(xhci);
>>  	return ret;
>>  }
>>  
>>  void dwc3_host_exit(struct dwc3 *dwc)
>>  {
>> -	phy_remove_lookup(dwc->usb2_generic_phy, "usb2-phy",
>> -			  dev_name(dwc->dev));
>> -	phy_remove_lookup(dwc->usb3_generic_phy, "usb3-phy",
>> -			  dev_name(dwc->dev));
>>  	platform_device_unregister(dwc->xhci);
>>  }
> 
> Roger, could you verify that this doesn't regress any of your platforms?

Patch is fine with our platforms.

Patch
diff mbox series

diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c
index f55947294f7c..8deea8c91e03 100644
--- a/drivers/usb/dwc3/host.c
+++ b/drivers/usb/dwc3/host.c
@@ -85,7 +85,7 @@  int dwc3_host_init(struct dwc3 *dwc)
 						DWC3_XHCI_RESOURCES_NUM);
 	if (ret) {
 		dev_err(dwc->dev, "couldn't add resources to xHCI device\n");
-		goto err1;
+		goto err;
 	}
 
 	memset(props, 0, sizeof(struct property_entry) * ARRAY_SIZE(props));
@@ -112,37 +112,23 @@  int dwc3_host_init(struct dwc3 *dwc)
 		ret = platform_device_add_properties(xhci, props);
 		if (ret) {
 			dev_err(dwc->dev, "failed to add properties to xHCI\n");
-			goto err1;
+			goto err;
 		}
 	}
 
-	phy_create_lookup(dwc->usb2_generic_phy, "usb2-phy",
-			  dev_name(dwc->dev));
-	phy_create_lookup(dwc->usb3_generic_phy, "usb3-phy",
-			  dev_name(dwc->dev));
-
 	ret = platform_device_add(xhci);
 	if (ret) {
 		dev_err(dwc->dev, "failed to register xHCI device\n");
-		goto err2;
+		goto err;
 	}
 
 	return 0;
-err2:
-	phy_remove_lookup(dwc->usb2_generic_phy, "usb2-phy",
-			  dev_name(dwc->dev));
-	phy_remove_lookup(dwc->usb3_generic_phy, "usb3-phy",
-			  dev_name(dwc->dev));
-err1:
+err:
 	platform_device_put(xhci);
 	return ret;
 }
 
 void dwc3_host_exit(struct dwc3 *dwc)
 {
-	phy_remove_lookup(dwc->usb2_generic_phy, "usb2-phy",
-			  dev_name(dwc->dev));
-	phy_remove_lookup(dwc->usb3_generic_phy, "usb3-phy",
-			  dev_name(dwc->dev));
 	platform_device_unregister(dwc->xhci);
 }