All of lore.kernel.org
 help / color / mirror / Atom feed
From: Manjunath Goudar <manjunath.goudar@linaro.org>
To: linux-usb@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org, patches@linaro.org,
	stern@rowland.harvard.edu, arnd@linaro.org,
	gregkh@linuxfoundation.org,
	Manjunath Goudar <manjunath.goudar@linaro.org>,
	Greg KH <greg@kroah.com>, David Brown <davidb@codeaurora.org>,
	Daniel Walker <dwalker@fifo99.com>,
	Bryan Huntsman <bryanh@codeaurora.org>,
	Brian Swetland <swetland@google.com>,
	linux-kernel@vger.kernel.org
Subject: [V2 6/8] USB: EHCI: make ehci-msm a separate driver
Date: Fri, 15 Feb 2013 15:54:11 +0530	[thread overview]
Message-ID: <1360923853-7875-7-git-send-email-manjunath.goudar@linaro.org> (raw)
In-Reply-To: <1360923853-7875-1-git-send-email-manjunath.goudar@linaro.org>

Separate the Qualcomm On-Chip host controller driver from ehci-hcd host code
into its own driver module.

In V2:
Tegra patch related changes removed from this patch.

Signed-off-by: Manjunath Goudar <manjunath.goudar@linaro.org>
Cc: Greg KH <greg@kroah.com>
Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: David Brown <davidb@codeaurora.org>
Cc: Daniel Walker <dwalker@fifo99.com>
Cc: Bryan Huntsman <bryanh@codeaurora.org>
Cc: Brian Swetland <swetland@google.com>
Cc: linux-usb@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
 drivers/usb/host/Kconfig    |    2 +-
 drivers/usb/host/Makefile   |    1 +
 drivers/usb/host/ehci-hcd.c |    6 +--
 drivers/usb/host/ehci-msm.c |   85 +++++++++++++++++++------------------------
 4 files changed, 40 insertions(+), 54 deletions(-)

diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
index 4e15b87..d5ae838 100644
--- a/drivers/usb/host/Kconfig
+++ b/drivers/usb/host/Kconfig
@@ -187,7 +187,7 @@ config USB_EHCI_HCD_AT91
           Atmel chips.
 
 config USB_EHCI_MSM
-	bool "Support for MSM on-chip EHCI USB controller"
+	tristate "Support for MSM on-chip EHCI USB controller"
 	depends on USB_EHCI_HCD && ARCH_MSM
 	select USB_EHCI_ROOT_HUB_TT
 	select USB_MSM_OTG
diff --git a/drivers/usb/host/Makefile b/drivers/usb/host/Makefile
index 1fe0579..75d98b9 100644
--- a/drivers/usb/host/Makefile
+++ b/drivers/usb/host/Makefile
@@ -33,6 +33,7 @@ obj-$(CONFIG_USB_EHCI_HCD_AT91) += ehci-atmel.o
 obj-$(CONFIG_USB_EHCI_S5P)      += ehci-s5p.o
 obj-$(CONFIG_USB_EHCI_MV)       += ehci-mv.o
 obj-$(CONFIG_USB_EHCI_HCD_VT8500)+= ehci-vt8500.o
+obj-$(CONFIG_USB_EHCI_MSM)      += ehci-msm.o
 obj-$(CONFIG_USB_ISP116X_HCD)	+= isp116x-hcd.o
 obj-$(CONFIG_USB_ISP1362_HCD)	+= isp1362-hcd.o
 obj-$(CONFIG_USB_OHCI_HCD)	+= ohci-hcd.o
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index eefa3d7..d802b95 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -1287,11 +1287,6 @@ MODULE_LICENSE ("GPL");
 #define PLATFORM_DRIVER		ehci_octeon_driver
 #endif
 
-#ifdef CONFIG_USB_EHCI_MSM
-#include "ehci-msm.c"
-#define PLATFORM_DRIVER		ehci_msm_driver
-#endif
-
 #ifdef CONFIG_TILE_USB
 #include "ehci-tilegx.c"
 #define	PLATFORM_DRIVER		ehci_hcd_tilegx_driver
@@ -1327,6 +1322,7 @@ MODULE_LICENSE ("GPL");
 	!IS_ENABLED(CONFIG_USB_EHCI_S5P) && \
 	!IS_ENABLED(CONFIG_USB_EHCI_MV) && \
 	!IS_ENABLED(CONFIG_ARCH_VT8500) && \
+	!IS_ENABLED(CONFIG_USB_EHCI_MSM) && \
 	!defined(PS3_SYSTEM_BUS_DRIVER) && \
 	!defined(OF_PLATFORM_DRIVER) && \
 	!defined(XILINX_OF_PLATFORM_DRIVER)
diff --git a/drivers/usb/host/ehci-msm.c b/drivers/usb/host/ehci-msm.c
index 88a49c8..a9a0357 100644
--- a/drivers/usb/host/ehci-msm.c
+++ b/drivers/usb/host/ehci-msm.c
@@ -26,12 +26,22 @@
 #include <linux/clk.h>
 #include <linux/err.h>
 #include <linux/pm_runtime.h>
-
 #include <linux/usb/otg.h>
 #include <linux/usb/msm_hsusb_hw.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/usb.h>
+#include <linux/usb/hcd.h>
+#include <linux/io.h>
+
+#include "ehci.h"
 
 #define MSM_USB_BASE (hcd->regs)
 
+#define DRIVER_DESC "Qualcomm On-Chip EHCI Host Controller"
+
+static const char hcd_name[] = "msm_hsusb_host";
+static struct hc_driver __read_mostly msm_hc_driver;
 static struct usb_phy *phy;
 
 static int ehci_msm_reset(struct usb_hcd *hcd)
@@ -56,52 +66,6 @@ static int ehci_msm_reset(struct usb_hcd *hcd)
 	return 0;
 }
 
-static struct hc_driver msm_hc_driver = {
-	.description		= hcd_name,
-	.product_desc		= "Qualcomm On-Chip EHCI Host Controller",
-	.hcd_priv_size		= sizeof(struct ehci_hcd),
-
-	/*
-	 * generic hardware linkage
-	 */
-	.irq			= ehci_irq,
-	.flags			= HCD_USB2 | HCD_MEMORY,
-
-	.reset			= ehci_msm_reset,
-	.start			= ehci_run,
-
-	.stop			= ehci_stop,
-	.shutdown		= ehci_shutdown,
-
-	/*
-	 * managing i/o requests and associated device resources
-	 */
-	.urb_enqueue		= ehci_urb_enqueue,
-	.urb_dequeue		= ehci_urb_dequeue,
-	.endpoint_disable	= ehci_endpoint_disable,
-	.endpoint_reset		= ehci_endpoint_reset,
-	.clear_tt_buffer_complete = ehci_clear_tt_buffer_complete,
-
-	/*
-	 * scheduling support
-	 */
-	.get_frame_number	= ehci_get_frame,
-
-	/*
-	 * root hub support
-	 */
-	.hub_status_data	= ehci_hub_status_data,
-	.hub_control		= ehci_hub_control,
-	.relinquish_port	= ehci_relinquish_port,
-	.port_handed_over	= ehci_port_handed_over,
-
-	/*
-	 * PM support
-	 */
-	.bus_suspend		= ehci_bus_suspend,
-	.bus_resume		= ehci_bus_resume,
-};
-
 static int ehci_msm_probe(struct platform_device *pdev)
 {
 	struct usb_hcd *hcd;
@@ -222,7 +186,32 @@ static struct platform_driver ehci_msm_driver = {
 	.probe	= ehci_msm_probe,
 	.remove	= ehci_msm_remove,
 	.driver = {
-		   .name = "msm_hsusb_host",
+		   .name = hcd_name,
 		   .pm = &ehci_msm_dev_pm_ops,
 	},
 };
+
+static const struct ehci_driver_overrides msm_overrides __initdata = {
+	.reset = ehci_msm_reset,
+};
+
+static int __init ehci_msm_init(void)
+{
+	if (usb_disabled())
+		return -ENODEV;
+
+	pr_info("%s: " DRIVER_DESC "\n", hcd_name);
+	ehci_init_driver(&msm_hc_driver, &msm_overrides);
+	return platform_driver_register(&ehci_msm_driver);
+}
+module_init(ehci_msm_init);
+
+static void __exit ehci_msm_cleanup(void)
+{
+	platform_driver_unregister(&ehci_msm_driver);
+}
+module_exit(ehci_msm_cleanup);
+
+MODULE_DESCRIPTION(DRIVER_DESC);
+MODULE_ALIAS("platform:msm-ehci");
+MODULE_LICENSE("GPL");
-- 
1.7.9.5


  parent reply	other threads:[~2013-02-15 10:25 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-15 10:24 [V2 0/8] usb: ehci: more bus glues as separate modules Manjunath Goudar
2013-02-15 10:24 ` [V2 2/8] USB: EHCI: make ehci-atmel a separate driver Manjunath Goudar
2013-02-18  9:44   ` Bo Shen
2013-02-18  9:44     ` Bo Shen
2013-02-18 10:12     ` Arnd Bergmann
2013-02-18 10:12       ` Arnd Bergmann
2013-02-15 10:24 ` [V2 4/8] USB: EHCI: make ehci-mv as separate static driver Manjunath Goudar
2013-02-15 10:24 ` [V2 5/8] USB: EHCI: make ehci-vt8500 a separate driver Manjunath Goudar
2013-02-20 16:37   ` Alan Stern
2013-02-20 16:37     ` Alan Stern
2013-02-15 10:24 ` Manjunath Goudar [this message]
2013-02-20 16:31   ` [V2 6/8] USB: EHCI: make ehci-msm " Alan Stern
2013-02-20 16:31     ` Alan Stern
2013-02-15 10:24 ` [V2 7/8] USB: EHCI: make ehci-w90X900 " Manjunath Goudar
2013-02-20 16:33   ` Alan Stern
2013-02-20 16:33     ` Alan Stern
2013-02-15 10:24 ` [V2 8/8] USB: EHCI: make ehci-orion " Manjunath Goudar
2013-02-15 16:10 ` [V2 0/8] usb: ehci: more bus glues as separate modules Arnd Bergmann
2013-02-15 18:07   ` Greg KH
2013-02-15 21:58     ` Arnd Bergmann
2013-02-15 22:12       ` [PATCH 1/2] USB: EHCI: make ehci-vt8500 a separate driver Arnd Bergmann
2013-02-15 22:12         ` [PATCH 2/2] USB: EHCI: make ehci-orion " Arnd Bergmann
2013-02-15 22:38           ` Jason Cooper
2013-02-16  8:42           ` Andrew Lunn
2013-02-16 14:19           ` Ezequiel Garcia
2013-02-16 23:03             ` [PATCH] USB: update host controller Kconfig entries Arnd Bergmann
2013-02-18 22:34           ` [PATCH 2/2] USB: EHCI: make ehci-orion a separate driver Alan Stern
2013-02-19  7:24             ` Andrew Lunn
2013-02-19  8:32               ` Arnaud Patard (Rtp)
2013-02-20 18:28               ` Greg KH
2013-02-20 18:44                 ` Arnd Bergmann
     [not found]             ` <CAJFYCKGCNDTSq9OYZUYXx8XNSgSHD=p=hw+9_7N=EhM=bUu=bg@mail.gmail.com>
2013-02-19 10:56               ` Arnd Bergmann
2013-02-19 15:26                 ` Alan Stern
2013-02-20 16:02           ` Alan Stern
2013-02-20 16:27             ` Arnd Bergmann
2013-02-20 16:54               ` Jason Cooper
2013-02-15 22:21         ` [PATCH 1/2] USB: EHCI: make ehci-vt8500 " Tony Prisk
2013-02-15 16:47 ` [V2 0/8] usb: ehci: more bus glues as separate modules Ezequiel Garcia

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1360923853-7875-7-git-send-email-manjunath.goudar@linaro.org \
    --to=manjunath.goudar@linaro.org \
    --cc=arnd@linaro.org \
    --cc=bryanh@codeaurora.org \
    --cc=davidb@codeaurora.org \
    --cc=dwalker@fifo99.com \
    --cc=greg@kroah.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=patches@linaro.org \
    --cc=stern@rowland.harvard.edu \
    --cc=swetland@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.