[PATCH][4/4] usb: use single ohci_start()

Magnus Damm <[email protected]> Mon, 14 Jan 2008 11:09:06 +0900
Newsgroups gmane.linux.usb.devel
Message-ID <[email protected]>
usb: use single ohci_start()

This patch adds adds an ohci_start() function that easily can be shared
between many ohci drivers. This patch only changes drivers to ohci_start()
when the driver specific implementation exactly match ohci_start(). It also
seems popular to sometimes do ohci_init() in .reset instead of .start, and if
those drivers can be rewritten then it may be possible to use ohci_start()
in even more drivers.

Signed-off-by: Magnus Damm <[email protected]>
---

 drivers/usb/host/ohci-au1xxx.c  |   24 +-----------------------
 drivers/usb/host/ohci-ep93xx.c  |   19 +------------------
 drivers/usb/host/ohci-hcd.c     |   18 ++++++++++++++++++
 drivers/usb/host/ohci-lh7a404.c |   22 +---------------------
 drivers/usb/host/ohci-pnx4008.c |   18 +-----------------
 drivers/usb/host/ohci-pnx8550.c |   24 +-----------------------
 drivers/usb/host/ohci-ppc-of.c  |   21 +--------------------
 drivers/usb/host/ohci-ppc-soc.c |   20 +-------------------
 drivers/usb/host/ohci-s3c2410.c |   21 +--------------------
 drivers/usb/host/ohci-sa1111.c  |   21 +--------------------
 drivers/usb/host/ohci-sm501.c   |   19 +------------------
 11 files changed, 28 insertions(+), 199 deletions(-)

--- 0001/drivers/usb/host/ohci-au1xxx.c
+++ work/drivers/usb/host/ohci-au1xxx.c	2008-01-13 19:41:47.000000000 +0900
@@ -231,28 +231,6 @@ static void usb_ohci_au1xxx_remove(struc
 
 /*-------------------------------------------------------------------------*/
 
-static int __devinit
-ohci_au1xxx_start (struct usb_hcd *hcd)
-{
-	struct ohci_hcd	*ohci = hcd_to_ohci (hcd);
-	int		ret;
-
-	ohci_dbg (ohci, "ohci_au1xxx_start, ohci:%p", ohci);
-
-	if ((ret = ohci_init (ohci)) < 0)
-		return ret;
-
-	if ((ret = ohci_run (ohci)) < 0) {
-		err ("can't start %s", hcd->self.bus_name);
-		ohci_stop (hcd);
-		return ret;
-	}
-
-	return 0;
-}
-
-/*-------------------------------------------------------------------------*/
-
 static const struct hc_driver ohci_au1xxx_hc_driver = {
 	.description =		hcd_name,
 	.product_desc =		"Au1xxx OHCI",
@@ -267,7 +245,7 @@ static const struct hc_driver ohci_au1xx
 	/*
 	 * basic lifecycle operations
 	 */
-	.start =		ohci_au1xxx_start,
+	.start =		ohci_start,
 	.stop =			ohci_stop,
 	.shutdown =		ohci_shutdown,
 
--- 0001/drivers/usb/host/ohci-ep93xx.c
+++ work/drivers/usb/host/ohci-ep93xx.c	2008-01-13 19:41:22.000000000 +0900
@@ -103,30 +103,13 @@ static void usb_hcd_ep93xx_remove(struct
 	usb_put_hcd(hcd);
 }
 
-static int __devinit ohci_ep93xx_start(struct usb_hcd *hcd)
-{
-	struct ohci_hcd *ohci = hcd_to_ohci(hcd);
-	int ret;
-
-	if ((ret = ohci_init(ohci)) < 0)
-		return ret;
-
-	if ((ret = ohci_run(ohci)) < 0) {
-		err("can't start %s", hcd->self.bus_name);
-		ohci_stop(hcd);
-		return ret;
-	}
-
-	return 0;
-}
-
 static struct hc_driver ohci_ep93xx_hc_driver = {
 	.description		= hcd_name,
 	.product_desc		= "EP93xx OHCI",
 	.hcd_priv_size		= sizeof(struct ohci_hcd),
 	.irq			= ohci_irq,
 	.flags			= HCD_USB11 | HCD_MEMORY,
-	.start			= ohci_ep93xx_start,
+	.start			= ohci_start,
 	.stop			= ohci_stop,
 	.shutdown		= ohci_shutdown,
 	.urb_enqueue		= ohci_urb_enqueue,
--- 0011/drivers/usb/host/ohci-hcd.c
+++ work/drivers/usb/host/ohci-hcd.c	2008-01-13 19:31:56.000000000 +0900
@@ -79,6 +79,7 @@ static const char	hcd_name [] = "ohci_hc
 
 static void ohci_dump (struct ohci_hcd *ohci, int verbose);
 static int ohci_init (struct ohci_hcd *ohci);
+static int ohci_start (struct usb_hcd *hcd);
 static void ohci_stop (struct usb_hcd *hcd);
 
 #if defined(CONFIG_PM) || defined(CONFIG_PCI)
@@ -870,6 +871,23 @@ static irqreturn_t ohci_irq (struct usb_
 
 /*-------------------------------------------------------------------------*/
 
+static int ohci_start (struct usb_hcd *hcd)
+{
+	struct device *dev = hcd->self.controller;
+	struct ohci_hcd	*ohci = hcd_to_ohci (hcd);
+	int		ret;
+
+	if ((ret = ohci_init(ohci)) < 0)
+		return ret;
+
+	if ((ret = ohci_run (ohci)) < 0) {
+		dev_err (dev, "can't start %s", hcd->self.bus_name);
+		ohci_stop (hcd);
+		return ret;
+	}
+	return 0;
+}
+
 static void ohci_stop (struct usb_hcd *hcd)
 {
 	struct ohci_hcd		*ohci = hcd_to_ohci (hcd);
--- 0001/drivers/usb/host/ohci-lh7a404.c
+++ work/drivers/usb/host/ohci-lh7a404.c	2008-01-13 19:40:59.000000000 +0900
@@ -138,26 +138,6 @@ void usb_hcd_lh7a404_remove (struct usb_
 
 /*-------------------------------------------------------------------------*/
 
-static int __devinit
-ohci_lh7a404_start (struct usb_hcd *hcd)
-{
-	struct ohci_hcd	*ohci = hcd_to_ohci (hcd);
-	int		ret;
-
-	ohci_dbg (ohci, "ohci_lh7a404_start, ohci:%p", ohci);
-	if ((ret = ohci_init(ohci)) < 0)
-		return ret;
-
-	if ((ret = ohci_run (ohci)) < 0) {
-		err ("can't start %s", hcd->self.bus_name);
-		ohci_stop (hcd);
-		return ret;
-	}
-	return 0;
-}
-
-/*-------------------------------------------------------------------------*/
-
 static const struct hc_driver ohci_lh7a404_hc_driver = {
 	.description =		hcd_name,
 	.product_desc =		"LH7A404 OHCI",
@@ -172,7 +152,7 @@ static const struct hc_driver ohci_lh7a4
 	/*
 	 * basic lifecycle operations
 	 */
-	.start =		ohci_lh7a404_start,
+	.start =		ohci_start,
 	.stop =			ohci_stop,
 	.shutdown =		ohci_shutdown,
 
--- 0001/drivers/usb/host/ohci-pnx4008.c
+++ work/drivers/usb/host/ohci-pnx4008.c	2008-01-13 19:40:25.000000000 +0900
@@ -230,22 +230,6 @@ static void pnx4008_stop_hc(void)
 	__raw_writel(tmp, USB_OTG_STAT_CONTROL);
 }
 
-static int __devinit ohci_pnx4008_start(struct usb_hcd *hcd)
-{
-	struct ohci_hcd *ohci = hcd_to_ohci(hcd);
-	int ret;
-
-	if ((ret = ohci_init(ohci)) < 0)
-		return ret;
-
-	if ((ret = ohci_run(ohci)) < 0) {
-		dev_err(hcd->self.controller, "can't start\n");
-		ohci_stop(hcd);
-		return ret;
-	}
-	return 0;
-}
-
 static const struct hc_driver ohci_pnx4008_hc_driver = {
 	.description = hcd_name,
 	.product_desc =		"pnx4008 OHCI",
@@ -260,7 +244,7 @@ static const struct hc_driver ohci_pnx40
 	/*
 	 * basic lifecycle operations
 	 */
-	.start = ohci_pnx4008_start,
+	.start = ohci_start,
 	.stop = ohci_stop,
 	.shutdown = ohci_shutdown,
 
--- 0001/drivers/usb/host/ohci-pnx8550.c
+++ work/drivers/usb/host/ohci-pnx8550.c	2008-01-13 19:40:03.000000000 +0900
@@ -145,28 +145,6 @@ void usb_hcd_pnx8550_remove (struct usb_
 
 /*-------------------------------------------------------------------------*/
 
-static int __devinit
-ohci_pnx8550_start (struct usb_hcd *hcd)
-{
-	struct ohci_hcd	*ohci = hcd_to_ohci (hcd);
-	int		ret;
-
-	ohci_dbg (ohci, "ohci_pnx8550_start, ohci:%p", ohci);
-
-	if ((ret = ohci_init(ohci)) < 0)
-		return ret;
-
-	if ((ret = ohci_run (ohci)) < 0) {
-		err ("can't start %s", hcd->self.bus_name);
-		ohci_stop (hcd);
-		return ret;
-	}
-
-	return 0;
-}
-
-/*-------------------------------------------------------------------------*/
-
 static const struct hc_driver ohci_pnx8550_hc_driver = {
 	.description =		hcd_name,
 	.product_desc =		"PNX8550 OHCI",
@@ -181,7 +159,7 @@ static const struct hc_driver ohci_pnx85
 	/*
 	 * basic lifecycle operations
 	 */
-	.start =		ohci_pnx8550_start,
+	.start =		ohci_start,
 	.stop =			ohci_stop,
 
 	/*
--- 0001/drivers/usb/host/ohci-ppc-of.c
+++ work/drivers/usb/host/ohci-ppc-of.c	2008-01-13 19:39:14.000000000 +0900
@@ -18,25 +18,6 @@
 #include <asm/of_platform.h>
 #include <asm/prom.h>
 
-
-static int __devinit
-ohci_ppc_of_start(struct usb_hcd *hcd)
-{
-	struct ohci_hcd	*ohci = hcd_to_ohci(hcd);
-	int		ret;
-
-	if ((ret = ohci_init(ohci)) < 0)
-		return ret;
-
-	if ((ret = ohci_run(ohci)) < 0) {
-		err("can't start %s", ohci_to_hcd(ohci)->self.bus_name);
-		ohci_stop(hcd);
-		return ret;
-	}
-
-	return 0;
-}
-
 static const struct hc_driver ohci_ppc_of_hc_driver = {
 	.description =		hcd_name,
 	.product_desc =		"OF OHCI",
@@ -51,7 +32,7 @@ static const struct hc_driver ohci_ppc_o
 	/*
 	 * basic lifecycle operations
 	 */
-	.start =		ohci_ppc_of_start,
+	.start =		ohci_start,
 	.stop =			ohci_stop,
 	.shutdown = 		ohci_shutdown,
 
--- 0001/drivers/usb/host/ohci-ppc-soc.c
+++ work/drivers/usb/host/ohci-ppc-soc.c	2008-01-13 19:38:53.000000000 +0900
@@ -120,24 +120,6 @@ static void usb_hcd_ppc_soc_remove(struc
 	usb_put_hcd(hcd);
 }
 
-static int __devinit
-ohci_ppc_soc_start(struct usb_hcd *hcd)
-{
-	struct ohci_hcd	*ohci = hcd_to_ohci(hcd);
-	int		ret;
-
-	if ((ret = ohci_init(ohci)) < 0)
-		return ret;
-
-	if ((ret = ohci_run(ohci)) < 0) {
-		err("can't start %s", ohci_to_hcd(ohci)->self.bus_name);
-		ohci_stop(hcd);
-		return ret;
-	}
-
-	return 0;
-}
-
 static const struct hc_driver ohci_ppc_soc_hc_driver = {
 	.description =		hcd_name,
 	.hcd_priv_size =	sizeof(struct ohci_hcd),
@@ -151,7 +133,7 @@ static const struct hc_driver ohci_ppc_s
 	/*
 	 * basic lifecycle operations
 	 */
-	.start =		ohci_ppc_soc_start,
+	.start =		ohci_start,
 	.stop =			ohci_stop,
 	.shutdown =		ohci_shutdown,
 
--- 0001/drivers/usb/host/ohci-s3c2410.c
+++ work/drivers/usb/host/ohci-s3c2410.c	2008-01-13 19:37:52.000000000 +0900
@@ -412,25 +412,6 @@ static int usb_hcd_s3c2410_probe (const 
 
 /*-------------------------------------------------------------------------*/
 
-static int
-ohci_s3c2410_start (struct usb_hcd *hcd)
-{
-	struct ohci_hcd	*ohci = hcd_to_ohci (hcd);
-	int ret;
-
-	if ((ret = ohci_init(ohci)) < 0)
-		return ret;
-
-	if ((ret = ohci_run (ohci)) < 0) {
-		err ("can't start %s", hcd->self.bus_name);
-		ohci_stop (hcd);
-		return ret;
-	}
-
-	return 0;
-}
-
-
 static const struct hc_driver ohci_s3c2410_hc_driver = {
 	.description =		hcd_name,
 	.product_desc =		"S3C24XX OHCI",
@@ -445,7 +426,7 @@ static const struct hc_driver ohci_s3c24
 	/*
 	 * basic lifecycle operations
 	 */
-	.start =		ohci_s3c2410_start,
+	.start =		ohci_start,
 	.stop =			ohci_stop,
 	.shutdown =		ohci_shutdown,
 
--- 0001/drivers/usb/host/ohci-sa1111.c
+++ work/drivers/usb/host/ohci-sa1111.c	2008-01-13 19:37:24.000000000 +0900
@@ -178,25 +178,6 @@ void usb_hcd_sa1111_remove (struct usb_h
 
 /*-------------------------------------------------------------------------*/
 
-static int __devinit
-ohci_sa1111_start (struct usb_hcd *hcd)
-{
-	struct ohci_hcd	*ohci = hcd_to_ohci (hcd);
-	int		ret;
-
-	if ((ret = ohci_init(ohci)) < 0)
-		return ret;
-
-	if ((ret = ohci_run (ohci)) < 0) {
-		err ("can't start %s", hcd->self.bus_name);
-		ohci_stop (hcd);
-		return ret;
-	}
-	return 0;
-}
-
-/*-------------------------------------------------------------------------*/
-
 static const struct hc_driver ohci_sa1111_hc_driver = {
 	.description =		hcd_name,
 	.product_desc =		"SA-1111 OHCI",
@@ -211,7 +192,7 @@ static const struct hc_driver ohci_sa111
 	/*
 	 * basic lifecycle operations
 	 */
-	.start =		ohci_sa1111_start,
+	.start =		ohci_start,
 	.stop =			ohci_stop,
 
 	/*
--- 0011/drivers/usb/host/ohci-sm501.c
+++ work/drivers/usb/host/ohci-sm501.c	2008-01-13 19:32:03.000000000 +0900
@@ -21,23 +21,6 @@
 #include <linux/sm501.h>
 #include <linux/sm501-regs.h>
 
-static int ohci_sm501_start (struct usb_hcd *hcd)
-{
-	struct device *dev = hcd->self.controller;
-	struct ohci_hcd	*ohci = hcd_to_ohci (hcd);
-	int		ret;
-
-	if ((ret = ohci_init(ohci)) < 0)
-		return ret;
-
-	if ((ret = ohci_run (ohci)) < 0) {
-		dev_err (dev, "can't start %s", hcd->self.bus_name);
-		ohci_stop (hcd);
-		return ret;
-	}
-	return 0;
-}
-
 static int usb_hcd_sm501_probe (const struct hc_driver *driver,
 				struct platform_device *pdev)
 {
@@ -180,7 +163,7 @@ static const struct hc_driver ohci_sm501
 	/*
 	 * basic lifecycle operations
 	 */
-	.start =		ohci_sm501_start,
+	.start =		ohci_start,
 	.stop =			ohci_stop,
 	.shutdown =		ohci_shutdown,
 

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel