Message ID | 20190719093037.16181-1-m.szyprowski@samsung.com (mailing list archive) |
---|---|
State | Mainlined |
Commit | 3cd703f483d1d8cfcd7fd6f304ab6fc74e29cf15 |
Headers | show |
Series | usb: dwc3: remove generic PHYs forwarding for XHCI device | expand |
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
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.
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); }
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(-)