2019-07-19 09:32:54

by Marek Szyprowski

[permalink] [raw]
Subject: [PATCH] usb: dwc3: remove generic PHYs forwarding for XHCI device

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 <[email protected]>
---
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);
}
--
2.17.1


2019-08-08 14:21:01

by Felipe Balbi

[permalink] [raw]
Subject: Re: [PATCH] usb: dwc3: remove generic PHYs forwarding for XHCI device


Hi,

Marek Szyprowski <[email protected]> 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 <[email protected]>
> ---
> 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

--
balbi


Attachments:
signature.asc (847.00 B)

2019-08-09 10:35:06

by Roger Quadros

[permalink] [raw]
Subject: Re: [PATCH] usb: dwc3: remove generic PHYs forwarding for XHCI device

Hi,

On 08/08/2019 15:47, Felipe Balbi wrote:
>
> Hi,
>
> Marek Szyprowski <[email protected]> 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 <[email protected]>
>> ---
>> 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.

--
cheers,
-roger

Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki