From: manjunath.goudar@linaro.org (manjunath.goudar at linaro.org)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/8] USB: EHCI: make ehci-s5p a separate driver
Date: Mon, 11 Feb 2013 00:28:12 +0530 [thread overview]
Message-ID: <5117edfb.860e440a.097c.3516@mx.google.com> (raw)
In-Reply-To: <1360522697-22902-1-git-send-email-y>
From: Manjunath Goudar <manjunath.goudar@linaro.org>
Separate the s5p host controller driver from ehci-hcd host code
into its own driver module.
Signed-off-by: Manjunath Goudar <manjunath.goudar@linaro.org>
Cc: Greg KH <greg@kroah.com>
Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: Kukjin Kim <kgene.kim@samsung.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Grant Likely <grant.likely@secretlab.ca>
Cc: Rob Herring <rob.herring@calxeda.com>
Cc: linux-usb at vger.kernel.org
---
drivers/usb/host/Kconfig | 2 +-
drivers/usb/host/Makefile | 1 +
drivers/usb/host/ehci-hcd.c | 6 +---
drivers/usb/host/ehci-s5p.c | 69 ++++++++++++++++++++++++-------------------
4 files changed, 41 insertions(+), 37 deletions(-)
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
index 1ef37d7..8ffbafa 100644
--- a/drivers/usb/host/Kconfig
+++ b/drivers/usb/host/Kconfig
@@ -215,7 +215,7 @@ config USB_EHCI_SH
If you use the PCI EHCI controller, this option is not necessary.
config USB_EHCI_S5P
- boolean "S5P EHCI support"
+ tristate "S5P EHCI support"
depends on USB_EHCI_HCD && PLAT_S5P
help
Enable support for the S5P SOC's on-chip EHCI controller.
diff --git a/drivers/usb/host/Makefile b/drivers/usb/host/Makefile
index b301243..77e0331 100644
--- a/drivers/usb/host/Makefile
+++ b/drivers/usb/host/Makefile
@@ -30,6 +30,7 @@ obj-$(CONFIG_USB_EHCI_MXC) += ehci-mxc.o
obj-$(CONFIG_USB_EHCI_HCD_SPEAR)+= ehci-spear.o
obj-$(CONFIG_USB_OXU210HP_HCD) += oxu210hp-hcd.o
obj-$(CONFIG_USB_EHCI_HCD_AT91) += ehci-atmel.o
+obj-$(CONFIG_USB_EHCI_S5P) += ehci-s5p.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 08e9fdf..22c50fb 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -1307,11 +1307,6 @@ MODULE_LICENSE ("GPL");
#define PLATFORM_DRIVER ehci_hcd_msp_driver
#endif
-#ifdef CONFIG_USB_EHCI_TEGRA
-#include "ehci-tegra.c"
-#define PLATFORM_DRIVER tegra_ehci_driver
-#endif
-
#ifdef CONFIG_USB_EHCI_S5P
#include "ehci-s5p.c"
#define PLATFORM_DRIVER s5p_ehci_driver
@@ -1339,6 +1334,7 @@ MODULE_LICENSE ("GPL");
!defined(PLATFORM_DRIVER) && \
!IS_ENABLED(CONFIG_PLAT_SPEAR) && \
!IS_ENABLED(CONFIG_ARCH_AT91) && \
+ !IS_ENABLED(CONFIG_USB_EHCI_S5P) && \
!defined(PS3_SYSTEM_BUS_DRIVER) && \
!defined(OF_PLATFORM_DRIVER) && \
!defined(XILINX_OF_PLATFORM_DRIVER)
diff --git a/drivers/usb/host/ehci-s5p.c b/drivers/usb/host/ehci-s5p.c
index 20ebf6a..6ddf526 100644
--- a/drivers/usb/host/ehci-s5p.c
+++ b/drivers/usb/host/ehci-s5p.c
@@ -20,6 +20,17 @@
#include <linux/usb/phy.h>
#include <linux/usb/samsung_usb_phy.h>
#include <plat/usb-phy.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/usb.h>
+#include <linux/usb/hcd.h>
+#include <linux/io.h>
+#include <linux/usb/otg.h>
+#include <linux/dma-mapping.h>
+
+#include "ehci.h"
+
+#define DRIVER_DESC "EHCI s5p driver"
#define EHCI_INSNREG00(base) (base + 0x90)
#define EHCI_INSNREG00_ENA_INCR16 (0x1 << 25)
@@ -30,6 +41,10 @@
(EHCI_INSNREG00_ENA_INCR16 | EHCI_INSNREG00_ENA_INCR8 | \
EHCI_INSNREG00_ENA_INCR4 | EHCI_INSNREG00_ENA_INCRX_ALIGN)
+static const char hcd_name[] = "ehci-s5p";
+static struct hc_driver __read_mostly s5p_ehci_hc_driver;
+
+
struct s5p_ehci_hcd {
struct device *dev;
struct usb_hcd *hcd;
@@ -39,36 +54,6 @@ struct s5p_ehci_hcd {
struct s5p_ehci_platdata *pdata;
};
-static const struct hc_driver s5p_ehci_hc_driver = {
- .description = hcd_name,
- .product_desc = "S5P EHCI Host Controller",
- .hcd_priv_size = sizeof(struct ehci_hcd),
-
- .irq = ehci_irq,
- .flags = HCD_MEMORY | HCD_USB2,
-
- .reset = ehci_setup,
- .start = ehci_run,
- .stop = ehci_stop,
- .shutdown = ehci_shutdown,
-
- .get_frame_number = ehci_get_frame,
-
- .urb_enqueue = ehci_urb_enqueue,
- .urb_dequeue = ehci_urb_dequeue,
- .endpoint_disable = ehci_endpoint_disable,
- .endpoint_reset = ehci_endpoint_reset,
-
- .hub_status_data = ehci_hub_status_data,
- .hub_control = ehci_hub_control,
- .bus_suspend = ehci_bus_suspend,
- .bus_resume = ehci_bus_resume,
-
- .relinquish_port = ehci_relinquish_port,
- .port_handed_over = ehci_port_handed_over,
-
- .clear_tt_buffer_complete = ehci_clear_tt_buffer_complete,
-};
static void s5p_ehci_phy_enable(struct s5p_ehci_hcd *s5p_ehci)
{
@@ -322,5 +307,27 @@ static struct platform_driver s5p_ehci_driver = {
.of_match_table = of_match_ptr(exynos_ehci_match),
}
};
+static const struct ehci_driver_overrides s5p_overrides __initdata = {
+ .reset = ehci_setup,
+};
+
+static int __init ehci_s5p_init(void)
+{
+ if (usb_disabled())
+ return -ENODEV;
+
+ pr_info("%s: " DRIVER_DESC "\n", hcd_name);
+ ehci_init_driver(&s5p_ehci_hc_driver, &s5p_overrides);
+ return platform_driver_register(&s5p_ehci_driver);
+}
+module_init(ehci_s5p_init);
+
+static void __exit ehci_s5p_cleanup(void)
+{
+ platform_driver_unregister(&s5p_ehci_driver);
+}
+module_exit(ehci_s5p_cleanup);
-MODULE_ALIAS("platform:s5p-ehci");
+MODULE_DESCRIPTION(DRIVER_DESC);
+MODULE_ALIAS("platform:ehci-s5p");
+MODULE_LICENSE("GPL");
--
1.7.9.5
next prev parent reply other threads:[~2013-02-10 18:58 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1360522697-22902-1-git-send-email-y>
2013-02-10 18:58 ` [PATCH 1/8] USB: EHCI: make ehci-spear a separate driver manjunath.goudar at linaro.org
2013-02-11 4:22 ` Viresh Kumar
2013-02-11 11:19 ` Mark Rutland
2013-02-10 18:58 ` [PATCH 2/8] USB: EHCI: make ehci-atmel " manjunath.goudar at linaro.org
2013-02-10 18:58 ` manjunath.goudar
2013-02-10 18:58 ` manjunath.goudar at linaro.org [this message]
2013-02-11 17:40 ` [PATCH 3/8] USB: EHCI: make ehci-s5p " Stephen Warren
2013-02-10 18:58 ` [PATCH 4/8] USB: EHCI: make ehci-mv " manjunath.goudar at linaro.org
2013-02-10 18:58 ` manjunath.goudar
2013-02-10 18:58 ` [PATCH 5/8] USB: EHCI: make ehci-vt8500 " manjunath.goudar at linaro.org
2013-02-10 18:58 ` manjunath.goudar
2013-02-10 18:58 ` [PATCH 6/8] USB: EHCI: make ehci-msm " manjunath.goudar at linaro.org
2013-02-10 18:58 ` manjunath.goudar
2013-02-11 17:37 ` Stephen Warren
2013-02-11 17:37 ` Stephen Warren
2013-02-10 18:58 ` [PATCH 7/8] USB: EHCI: make ehci-w90X900 " manjunath.goudar at linaro.org
2013-02-10 18:58 ` manjunath.goudar
2013-02-10 18:58 ` [PATCH 8/8] USB: EHCI: make ehci-orion " manjunath.goudar at linaro.org
2013-02-10 18:58 ` manjunath.goudar
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=5117edfb.860e440a.097c.3516@mx.google.com \
--to=manjunath.goudar@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
/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.