2013-07-09 10:58:59

by Roger Quadros

[permalink] [raw]
Subject: [PATCH] USB: host: Use usb_hcd_platform_shutdown() wherever possible

Most HCD drivers are doing the same thing in their ".shutdown" callback
so it makes sense to use the generic usb_hcd_platform_shutdown()
handler there.

Signed-off-by: Roger Quadros <[email protected]>
---
drivers/usb/host/ehci-grlib.c | 11 +----------
drivers/usb/host/ehci-mxc.c | 10 +---------
drivers/usb/host/ehci-omap.c | 10 +---------
drivers/usb/host/ehci-ppc-of.c | 11 +----------
drivers/usb/host/ehci-s5p.c | 10 +---------
drivers/usb/host/ehci-tegra.c | 10 +---------
drivers/usb/host/ehci-xilinx-of.c | 17 +----------------
drivers/usb/host/ohci-omap3.c | 10 +---------
8 files changed, 8 insertions(+), 81 deletions(-)

diff --git a/drivers/usb/host/ehci-grlib.c b/drivers/usb/host/ehci-grlib.c
index a77bd8d..83ab51a 100644
--- a/drivers/usb/host/ehci-grlib.c
+++ b/drivers/usb/host/ehci-grlib.c
@@ -167,15 +167,6 @@ static int ehci_hcd_grlib_remove(struct platform_device *op)
}


-static void ehci_hcd_grlib_shutdown(struct platform_device *op)
-{
- struct usb_hcd *hcd = platform_get_drvdata(op);
-
- if (hcd->driver->shutdown)
- hcd->driver->shutdown(hcd);
-}
-
-
static const struct of_device_id ehci_hcd_grlib_of_match[] = {
{
.name = "GAISLER_EHCI",
@@ -191,7 +182,7 @@ MODULE_DEVICE_TABLE(of, ehci_hcd_grlib_of_match);
static struct platform_driver ehci_grlib_driver = {
.probe = ehci_hcd_grlib_probe,
.remove = ehci_hcd_grlib_remove,
- .shutdown = ehci_hcd_grlib_shutdown,
+ .shutdown = usb_hcd_platform_shutdown,
.driver = {
.name = "grlib-ehci",
.owner = THIS_MODULE,
diff --git a/drivers/usb/host/ehci-mxc.c b/drivers/usb/host/ehci-mxc.c
index e4c34ac..030b539 100644
--- a/drivers/usb/host/ehci-mxc.c
+++ b/drivers/usb/host/ehci-mxc.c
@@ -197,20 +197,12 @@ static int ehci_mxc_drv_remove(struct platform_device *pdev)
return 0;
}

-static void ehci_mxc_drv_shutdown(struct platform_device *pdev)
-{
- struct usb_hcd *hcd = platform_get_drvdata(pdev);
-
- if (hcd->driver->shutdown)
- hcd->driver->shutdown(hcd);
-}
-
MODULE_ALIAS("platform:mxc-ehci");

static struct platform_driver ehci_mxc_driver = {
.probe = ehci_mxc_drv_probe,
.remove = ehci_mxc_drv_remove,
- .shutdown = ehci_mxc_drv_shutdown,
+ .shutdown = usb_hcd_platform_shutdown,
.driver = {
.name = "mxc-ehci",
},
diff --git a/drivers/usb/host/ehci-omap.c b/drivers/usb/host/ehci-omap.c
index 9bd7dfe..4384d07 100644
--- a/drivers/usb/host/ehci-omap.c
+++ b/drivers/usb/host/ehci-omap.c
@@ -278,14 +278,6 @@ static int ehci_hcd_omap_remove(struct platform_device *pdev)
return 0;
}

-static void ehci_hcd_omap_shutdown(struct platform_device *pdev)
-{
- struct usb_hcd *hcd = dev_get_drvdata(&pdev->dev);
-
- if (hcd->driver->shutdown)
- hcd->driver->shutdown(hcd);
-}
-
static const struct of_device_id omap_ehci_dt_ids[] = {
{ .compatible = "ti,ehci-omap" },
{ }
@@ -296,7 +288,7 @@ MODULE_DEVICE_TABLE(of, omap_ehci_dt_ids);
static struct platform_driver ehci_hcd_omap_driver = {
.probe = ehci_hcd_omap_probe,
.remove = ehci_hcd_omap_remove,
- .shutdown = ehci_hcd_omap_shutdown,
+ .shutdown = usb_hcd_platform_shutdown,
/*.suspend = ehci_hcd_omap_suspend, */
/*.resume = ehci_hcd_omap_resume, */
.driver = {
diff --git a/drivers/usb/host/ehci-ppc-of.c b/drivers/usb/host/ehci-ppc-of.c
index 86da09c..932293f 100644
--- a/drivers/usb/host/ehci-ppc-of.c
+++ b/drivers/usb/host/ehci-ppc-of.c
@@ -215,15 +215,6 @@ static int ehci_hcd_ppc_of_remove(struct platform_device *op)
}


-static void ehci_hcd_ppc_of_shutdown(struct platform_device *op)
-{
- struct usb_hcd *hcd = platform_get_drvdata(op);
-
- if (hcd->driver->shutdown)
- hcd->driver->shutdown(hcd);
-}
-
-
static const struct of_device_id ehci_hcd_ppc_of_match[] = {
{
.compatible = "usb-ehci",
@@ -236,7 +227,7 @@ MODULE_DEVICE_TABLE(of, ehci_hcd_ppc_of_match);
static struct platform_driver ehci_hcd_ppc_of_driver = {
.probe = ehci_hcd_ppc_of_probe,
.remove = ehci_hcd_ppc_of_remove,
- .shutdown = ehci_hcd_ppc_of_shutdown,
+ .shutdown = usb_hcd_platform_shutdown,
.driver = {
.name = "ppc-of-ehci",
.owner = THIS_MODULE,
diff --git a/drivers/usb/host/ehci-s5p.c b/drivers/usb/host/ehci-s5p.c
index 7cc26e6..aba645b 100644
--- a/drivers/usb/host/ehci-s5p.c
+++ b/drivers/usb/host/ehci-s5p.c
@@ -220,14 +220,6 @@ static int s5p_ehci_remove(struct platform_device *pdev)
return 0;
}

-static void s5p_ehci_shutdown(struct platform_device *pdev)
-{
- struct usb_hcd *hcd = platform_get_drvdata(pdev);
-
- if (hcd->driver->shutdown)
- hcd->driver->shutdown(hcd);
-}
-
#ifdef CONFIG_PM
static int s5p_ehci_suspend(struct device *dev)
{
@@ -297,7 +289,7 @@ MODULE_DEVICE_TABLE(of, exynos_ehci_match);
static struct platform_driver s5p_ehci_driver = {
.probe = s5p_ehci_probe,
.remove = s5p_ehci_remove,
- .shutdown = s5p_ehci_shutdown,
+ .shutdown = usb_hcd_platform_shutdown,
.driver = {
.name = "s5p-ehci",
.owner = THIS_MODULE,
diff --git a/drivers/usb/host/ehci-tegra.c b/drivers/usb/host/ehci-tegra.c
index 6ee7ef7..c8ba888 100644
--- a/drivers/usb/host/ehci-tegra.c
+++ b/drivers/usb/host/ehci-tegra.c
@@ -517,14 +517,6 @@ static int tegra_ehci_remove(struct platform_device *pdev)
return 0;
}

-static void tegra_ehci_hcd_shutdown(struct platform_device *pdev)
-{
- struct usb_hcd *hcd = platform_get_drvdata(pdev);
-
- if (hcd->driver->shutdown)
- hcd->driver->shutdown(hcd);
-}
-
static struct of_device_id tegra_ehci_of_match[] = {
{ .compatible = "nvidia,tegra20-ehci", },
{ },
@@ -533,7 +525,7 @@ static struct of_device_id tegra_ehci_of_match[] = {
static struct platform_driver tegra_ehci_driver = {
.probe = tegra_ehci_probe,
.remove = tegra_ehci_remove,
- .shutdown = tegra_ehci_hcd_shutdown,
+ .shutdown = usb_hcd_platform_shutdown,
.driver = {
.name = DRV_NAME,
.of_match_table = tegra_ehci_of_match,
diff --git a/drivers/usb/host/ehci-xilinx-of.c b/drivers/usb/host/ehci-xilinx-of.c
index 35c7f90..eba962e 100644
--- a/drivers/usb/host/ehci-xilinx-of.c
+++ b/drivers/usb/host/ehci-xilinx-of.c
@@ -220,21 +220,6 @@ static int ehci_hcd_xilinx_of_remove(struct platform_device *op)
return 0;
}

-/**
- * ehci_hcd_xilinx_of_shutdown - shutdown the hcd
- * @op: pointer to platform_device structure that is to be removed
- *
- * Properly shutdown the hcd, call driver's shutdown routine.
- */
-static void ehci_hcd_xilinx_of_shutdown(struct platform_device *op)
-{
- struct usb_hcd *hcd = platform_get_drvdata(op);
-
- if (hcd->driver->shutdown)
- hcd->driver->shutdown(hcd);
-}
-
-
static const struct of_device_id ehci_hcd_xilinx_of_match[] = {
{.compatible = "xlnx,xps-usb-host-1.00.a",},
{},
@@ -244,7 +229,7 @@ MODULE_DEVICE_TABLE(of, ehci_hcd_xilinx_of_match);
static struct platform_driver ehci_hcd_xilinx_of_driver = {
.probe = ehci_hcd_xilinx_of_probe,
.remove = ehci_hcd_xilinx_of_remove,
- .shutdown = ehci_hcd_xilinx_of_shutdown,
+ .shutdown = usb_hcd_platform_shutdown,
.driver = {
.name = "xilinx-of-ehci",
.owner = THIS_MODULE,
diff --git a/drivers/usb/host/ohci-omap3.c b/drivers/usb/host/ohci-omap3.c
index 8f71357..a09af26 100644
--- a/drivers/usb/host/ohci-omap3.c
+++ b/drivers/usb/host/ohci-omap3.c
@@ -231,14 +231,6 @@ static int ohci_hcd_omap3_remove(struct platform_device *pdev)
return 0;
}

-static void ohci_hcd_omap3_shutdown(struct platform_device *pdev)
-{
- struct usb_hcd *hcd = dev_get_drvdata(&pdev->dev);
-
- if (hcd->driver->shutdown)
- hcd->driver->shutdown(hcd);
-}
-
static const struct of_device_id omap_ohci_dt_ids[] = {
{ .compatible = "ti,ohci-omap3" },
{ }
@@ -249,7 +241,7 @@ MODULE_DEVICE_TABLE(of, omap_ohci_dt_ids);
static struct platform_driver ohci_hcd_omap3_driver = {
.probe = ohci_hcd_omap3_probe,
.remove = ohci_hcd_omap3_remove,
- .shutdown = ohci_hcd_omap3_shutdown,
+ .shutdown = usb_hcd_platform_shutdown,
.driver = {
.name = "ohci-omap3",
.of_match_table = omap_ohci_dt_ids,
--
1.7.4.1


2013-07-09 12:01:27

by Felipe Balbi

[permalink] [raw]
Subject: Re: [PATCH] USB: host: Use usb_hcd_platform_shutdown() wherever possible

On Tue, Jul 09, 2013 at 01:58:49PM +0300, Roger Quadros wrote:
> Most HCD drivers are doing the same thing in their ".shutdown" callback
> so it makes sense to use the generic usb_hcd_platform_shutdown()
> handler there.
>
> Signed-off-by: Roger Quadros <[email protected]>

Reviewed-by: Felipe Balbi <[email protected]>

--
balbi


Attachments:
(No filename) (324.00 B)
signature.asc (836.00 B)
Digital signature
Download all attachments

2013-07-09 14:16:42

by Alan Stern

[permalink] [raw]
Subject: Re: [PATCH] USB: host: Use usb_hcd_platform_shutdown() wherever possible

On Tue, 9 Jul 2013, Roger Quadros wrote:

> Most HCD drivers are doing the same thing in their ".shutdown" callback
> so it makes sense to use the generic usb_hcd_platform_shutdown()
> handler there.
>
> Signed-off-by: Roger Quadros <[email protected]>
> ---
> drivers/usb/host/ehci-grlib.c | 11 +----------
> drivers/usb/host/ehci-mxc.c | 10 +---------
> drivers/usb/host/ehci-omap.c | 10 +---------
> drivers/usb/host/ehci-ppc-of.c | 11 +----------
> drivers/usb/host/ehci-s5p.c | 10 +---------
> drivers/usb/host/ehci-tegra.c | 10 +---------
> drivers/usb/host/ehci-xilinx-of.c | 17 +----------------
> drivers/usb/host/ohci-omap3.c | 10 +---------
> 8 files changed, 8 insertions(+), 81 deletions(-)

This all looks fine. But unless my kernel tree is out of date, you
missed ohci-ppc-of.c.

Alan Stern

2013-07-10 08:08:11

by Roger Quadros

[permalink] [raw]
Subject: Re: [PATCH] USB: host: Use usb_hcd_platform_shutdown() wherever possible

On 07/09/2013 05:16 PM, Alan Stern wrote:
> On Tue, 9 Jul 2013, Roger Quadros wrote:
>
>> Most HCD drivers are doing the same thing in their ".shutdown" callback
>> so it makes sense to use the generic usb_hcd_platform_shutdown()
>> handler there.
>>
>> Signed-off-by: Roger Quadros <[email protected]>
>> ---
>> drivers/usb/host/ehci-grlib.c | 11 +----------
>> drivers/usb/host/ehci-mxc.c | 10 +---------
>> drivers/usb/host/ehci-omap.c | 10 +---------
>> drivers/usb/host/ehci-ppc-of.c | 11 +----------
>> drivers/usb/host/ehci-s5p.c | 10 +---------
>> drivers/usb/host/ehci-tegra.c | 10 +---------
>> drivers/usb/host/ehci-xilinx-of.c | 17 +----------------
>> drivers/usb/host/ohci-omap3.c | 10 +---------
>> 8 files changed, 8 insertions(+), 81 deletions(-)
>
> This all looks fine. But unless my kernel tree is out of date, you
> missed ohci-ppc-of.c.

You are right. I missed it and will send a revision.

I've also noticed some drivers doing non-standard stuff.
e.g.
- ehci-ps3.c and ohci-pst set .shutdown as well as .remove to to ps3_ehci_remove
- ehci-tilegx.c and ohci-tilegx call .remove in the .shutdown path
- ehci-mv.c checks for (!hcd->rh_registered) in the shudown & remove patch.
Is this necessary?

cheers,
-roger

2013-07-10 14:57:44

by Alan Stern

[permalink] [raw]
Subject: Re: [PATCH] USB: host: Use usb_hcd_platform_shutdown() wherever possible

On Wed, 10 Jul 2013, Roger Quadros wrote:

> On 07/09/2013 05:16 PM, Alan Stern wrote:
> > On Tue, 9 Jul 2013, Roger Quadros wrote:
> >
> >> Most HCD drivers are doing the same thing in their ".shutdown" callback
> >> so it makes sense to use the generic usb_hcd_platform_shutdown()
> >> handler there.
> >>
> >> Signed-off-by: Roger Quadros <[email protected]>
> >> ---
> >> drivers/usb/host/ehci-grlib.c | 11 +----------
> >> drivers/usb/host/ehci-mxc.c | 10 +---------
> >> drivers/usb/host/ehci-omap.c | 10 +---------
> >> drivers/usb/host/ehci-ppc-of.c | 11 +----------
> >> drivers/usb/host/ehci-s5p.c | 10 +---------
> >> drivers/usb/host/ehci-tegra.c | 10 +---------
> >> drivers/usb/host/ehci-xilinx-of.c | 17 +----------------
> >> drivers/usb/host/ohci-omap3.c | 10 +---------
> >> 8 files changed, 8 insertions(+), 81 deletions(-)
> >
> > This all looks fine. But unless my kernel tree is out of date, you
> > missed ohci-ppc-of.c.
>
> You are right. I missed it and will send a revision.
>
> I've also noticed some drivers doing non-standard stuff.
> e.g.
> - ehci-ps3.c and ohci-pst set .shutdown as well as .remove to to ps3_ehci_remove

I don't know why they do that. There not be any good reason. You
could try asking the PS3 platform maintainer.

> - ehci-tilegx.c and ohci-tilegx call .remove in the .shutdown path

Again, I don't know why. The TILE architecture maintainer might know.

> - ehci-mv.c checks for (!hcd->rh_registered) in the shudown & remove patch.
> Is this necessary?

I suspect this is because the driver is trying to cope with switching
between host mode and device (peripheral) mode. This doesn't seem like
a good way to implement OTG, but until it gets changed we'll have to
live with the driver the way it is.

Alan Stern

2013-07-22 12:05:02

by Roger Quadros

[permalink] [raw]
Subject: [PATCH v2] USB: host: Use usb_hcd_platform_shutdown() wherever possible

Most HCD drivers are doing the same thing in their ".shutdown" callback
so it makes sense to use the generic usb_hcd_platform_shutdown()
handler there.

Signed-off-by: Roger Quadros <[email protected]>
---
drivers/usb/host/ehci-grlib.c | 11 +----------
drivers/usb/host/ehci-mxc.c | 10 +---------
drivers/usb/host/ehci-omap.c | 10 +---------
drivers/usb/host/ehci-ppc-of.c | 11 +----------
drivers/usb/host/ehci-s5p.c | 10 +---------
drivers/usb/host/ehci-xilinx-of.c | 17 +----------------
drivers/usb/host/ohci-omap3.c | 10 +---------
drivers/usb/host/ohci-ppc-of.c | 11 +----------
8 files changed, 8 insertions(+), 82 deletions(-)

diff --git a/drivers/usb/host/ehci-grlib.c b/drivers/usb/host/ehci-grlib.c
index a77bd8d..83ab51a 100644
--- a/drivers/usb/host/ehci-grlib.c
+++ b/drivers/usb/host/ehci-grlib.c
@@ -167,15 +167,6 @@ static int ehci_hcd_grlib_remove(struct platform_device *op)
}


-static void ehci_hcd_grlib_shutdown(struct platform_device *op)
-{
- struct usb_hcd *hcd = platform_get_drvdata(op);
-
- if (hcd->driver->shutdown)
- hcd->driver->shutdown(hcd);
-}
-
-
static const struct of_device_id ehci_hcd_grlib_of_match[] = {
{
.name = "GAISLER_EHCI",
@@ -191,7 +182,7 @@ MODULE_DEVICE_TABLE(of, ehci_hcd_grlib_of_match);
static struct platform_driver ehci_grlib_driver = {
.probe = ehci_hcd_grlib_probe,
.remove = ehci_hcd_grlib_remove,
- .shutdown = ehci_hcd_grlib_shutdown,
+ .shutdown = usb_hcd_platform_shutdown,
.driver = {
.name = "grlib-ehci",
.owner = THIS_MODULE,
diff --git a/drivers/usb/host/ehci-mxc.c b/drivers/usb/host/ehci-mxc.c
index e4c34ac..030b539 100644
--- a/drivers/usb/host/ehci-mxc.c
+++ b/drivers/usb/host/ehci-mxc.c
@@ -197,20 +197,12 @@ static int ehci_mxc_drv_remove(struct platform_device *pdev)
return 0;
}

-static void ehci_mxc_drv_shutdown(struct platform_device *pdev)
-{
- struct usb_hcd *hcd = platform_get_drvdata(pdev);
-
- if (hcd->driver->shutdown)
- hcd->driver->shutdown(hcd);
-}
-
MODULE_ALIAS("platform:mxc-ehci");

static struct platform_driver ehci_mxc_driver = {
.probe = ehci_mxc_drv_probe,
.remove = ehci_mxc_drv_remove,
- .shutdown = ehci_mxc_drv_shutdown,
+ .shutdown = usb_hcd_platform_shutdown,
.driver = {
.name = "mxc-ehci",
},
diff --git a/drivers/usb/host/ehci-omap.c b/drivers/usb/host/ehci-omap.c
index 9bd7dfe..4384d07 100644
--- a/drivers/usb/host/ehci-omap.c
+++ b/drivers/usb/host/ehci-omap.c
@@ -278,14 +278,6 @@ static int ehci_hcd_omap_remove(struct platform_device *pdev)
return 0;
}

-static void ehci_hcd_omap_shutdown(struct platform_device *pdev)
-{
- struct usb_hcd *hcd = dev_get_drvdata(&pdev->dev);
-
- if (hcd->driver->shutdown)
- hcd->driver->shutdown(hcd);
-}
-
static const struct of_device_id omap_ehci_dt_ids[] = {
{ .compatible = "ti,ehci-omap" },
{ }
@@ -296,7 +288,7 @@ MODULE_DEVICE_TABLE(of, omap_ehci_dt_ids);
static struct platform_driver ehci_hcd_omap_driver = {
.probe = ehci_hcd_omap_probe,
.remove = ehci_hcd_omap_remove,
- .shutdown = ehci_hcd_omap_shutdown,
+ .shutdown = usb_hcd_platform_shutdown,
/*.suspend = ehci_hcd_omap_suspend, */
/*.resume = ehci_hcd_omap_resume, */
.driver = {
diff --git a/drivers/usb/host/ehci-ppc-of.c b/drivers/usb/host/ehci-ppc-of.c
index 86da09c..932293f 100644
--- a/drivers/usb/host/ehci-ppc-of.c
+++ b/drivers/usb/host/ehci-ppc-of.c
@@ -215,15 +215,6 @@ static int ehci_hcd_ppc_of_remove(struct platform_device *op)
}


-static void ehci_hcd_ppc_of_shutdown(struct platform_device *op)
-{
- struct usb_hcd *hcd = platform_get_drvdata(op);
-
- if (hcd->driver->shutdown)
- hcd->driver->shutdown(hcd);
-}
-
-
static const struct of_device_id ehci_hcd_ppc_of_match[] = {
{
.compatible = "usb-ehci",
@@ -236,7 +227,7 @@ MODULE_DEVICE_TABLE(of, ehci_hcd_ppc_of_match);
static struct platform_driver ehci_hcd_ppc_of_driver = {
.probe = ehci_hcd_ppc_of_probe,
.remove = ehci_hcd_ppc_of_remove,
- .shutdown = ehci_hcd_ppc_of_shutdown,
+ .shutdown = usb_hcd_platform_shutdown,
.driver = {
.name = "ppc-of-ehci",
.owner = THIS_MODULE,
diff --git a/drivers/usb/host/ehci-s5p.c b/drivers/usb/host/ehci-s5p.c
index 7cc26e6..aba645b 100644
--- a/drivers/usb/host/ehci-s5p.c
+++ b/drivers/usb/host/ehci-s5p.c
@@ -220,14 +220,6 @@ static int s5p_ehci_remove(struct platform_device *pdev)
return 0;
}

-static void s5p_ehci_shutdown(struct platform_device *pdev)
-{
- struct usb_hcd *hcd = platform_get_drvdata(pdev);
-
- if (hcd->driver->shutdown)
- hcd->driver->shutdown(hcd);
-}
-
#ifdef CONFIG_PM
static int s5p_ehci_suspend(struct device *dev)
{
@@ -297,7 +289,7 @@ MODULE_DEVICE_TABLE(of, exynos_ehci_match);
static struct platform_driver s5p_ehci_driver = {
.probe = s5p_ehci_probe,
.remove = s5p_ehci_remove,
- .shutdown = s5p_ehci_shutdown,
+ .shutdown = usb_hcd_platform_shutdown,
.driver = {
.name = "s5p-ehci",
.owner = THIS_MODULE,
diff --git a/drivers/usb/host/ehci-xilinx-of.c b/drivers/usb/host/ehci-xilinx-of.c
index 35c7f90..eba962e 100644
--- a/drivers/usb/host/ehci-xilinx-of.c
+++ b/drivers/usb/host/ehci-xilinx-of.c
@@ -220,21 +220,6 @@ static int ehci_hcd_xilinx_of_remove(struct platform_device *op)
return 0;
}

-/**
- * ehci_hcd_xilinx_of_shutdown - shutdown the hcd
- * @op: pointer to platform_device structure that is to be removed
- *
- * Properly shutdown the hcd, call driver's shutdown routine.
- */
-static void ehci_hcd_xilinx_of_shutdown(struct platform_device *op)
-{
- struct usb_hcd *hcd = platform_get_drvdata(op);
-
- if (hcd->driver->shutdown)
- hcd->driver->shutdown(hcd);
-}
-
-
static const struct of_device_id ehci_hcd_xilinx_of_match[] = {
{.compatible = "xlnx,xps-usb-host-1.00.a",},
{},
@@ -244,7 +229,7 @@ MODULE_DEVICE_TABLE(of, ehci_hcd_xilinx_of_match);
static struct platform_driver ehci_hcd_xilinx_of_driver = {
.probe = ehci_hcd_xilinx_of_probe,
.remove = ehci_hcd_xilinx_of_remove,
- .shutdown = ehci_hcd_xilinx_of_shutdown,
+ .shutdown = usb_hcd_platform_shutdown,
.driver = {
.name = "xilinx-of-ehci",
.owner = THIS_MODULE,
diff --git a/drivers/usb/host/ohci-omap3.c b/drivers/usb/host/ohci-omap3.c
index 8f71357..a09af26 100644
--- a/drivers/usb/host/ohci-omap3.c
+++ b/drivers/usb/host/ohci-omap3.c
@@ -231,14 +231,6 @@ static int ohci_hcd_omap3_remove(struct platform_device *pdev)
return 0;
}

-static void ohci_hcd_omap3_shutdown(struct platform_device *pdev)
-{
- struct usb_hcd *hcd = dev_get_drvdata(&pdev->dev);
-
- if (hcd->driver->shutdown)
- hcd->driver->shutdown(hcd);
-}
-
static const struct of_device_id omap_ohci_dt_ids[] = {
{ .compatible = "ti,ohci-omap3" },
{ }
@@ -249,7 +241,7 @@ MODULE_DEVICE_TABLE(of, omap_ohci_dt_ids);
static struct platform_driver ohci_hcd_omap3_driver = {
.probe = ohci_hcd_omap3_probe,
.remove = ohci_hcd_omap3_remove,
- .shutdown = ohci_hcd_omap3_shutdown,
+ .shutdown = usb_hcd_platform_shutdown,
.driver = {
.name = "ohci-omap3",
.of_match_table = omap_ohci_dt_ids,
diff --git a/drivers/usb/host/ohci-ppc-of.c b/drivers/usb/host/ohci-ppc-of.c
index 8294e2f..75f5a1e 100644
--- a/drivers/usb/host/ohci-ppc-of.c
+++ b/drivers/usb/host/ohci-ppc-of.c
@@ -200,15 +200,6 @@ static int ohci_hcd_ppc_of_remove(struct platform_device *op)
return 0;
}

-static void ohci_hcd_ppc_of_shutdown(struct platform_device *op)
-{
- struct usb_hcd *hcd = platform_get_drvdata(op);
-
- if (hcd->driver->shutdown)
- hcd->driver->shutdown(hcd);
-}
-
-
static const struct of_device_id ohci_hcd_ppc_of_match[] = {
#ifdef CONFIG_USB_OHCI_HCD_PPC_OF_BE
{
@@ -243,7 +234,7 @@ MODULE_DEVICE_TABLE(of, ohci_hcd_ppc_of_match);
static struct platform_driver ohci_hcd_ppc_of_driver = {
.probe = ohci_hcd_ppc_of_probe,
.remove = ohci_hcd_ppc_of_remove,
- .shutdown = ohci_hcd_ppc_of_shutdown,
+ .shutdown = usb_hcd_platform_shutdown,
.driver = {
.name = "ppc-of-ohci",
.owner = THIS_MODULE,
--
1.7.4.1

2013-07-22 15:11:18

by Alan Stern

[permalink] [raw]
Subject: Re: [PATCH v2] USB: host: Use usb_hcd_platform_shutdown() wherever possible

On Mon, 22 Jul 2013, Roger Quadros wrote:

> Most HCD drivers are doing the same thing in their ".shutdown" callback
> so it makes sense to use the generic usb_hcd_platform_shutdown()
> handler there.
>
> Signed-off-by: Roger Quadros <[email protected]>
> ---
> drivers/usb/host/ehci-grlib.c | 11 +----------
> drivers/usb/host/ehci-mxc.c | 10 +---------
> drivers/usb/host/ehci-omap.c | 10 +---------
> drivers/usb/host/ehci-ppc-of.c | 11 +----------
> drivers/usb/host/ehci-s5p.c | 10 +---------
> drivers/usb/host/ehci-xilinx-of.c | 17 +----------------
> drivers/usb/host/ohci-omap3.c | 10 +---------
> drivers/usb/host/ohci-ppc-of.c | 11 +----------
> 8 files changed, 8 insertions(+), 82 deletions(-)

Acked-by: Alan Stern <[email protected]>