From: nicolas.ferre@atmel.com (Nicolas Ferre)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V5 5/9] USB: OHCI: make ohci-at91 a separate driver
Date: Mon, 23 Sep 2013 14:22:59 +0200 [thread overview]
Message-ID: <524032A3.3080908@atmel.com> (raw)
In-Reply-To: <1379761727-10656-6-git-send-email-manjunath.goudar@linaro.org>
On 21/09/2013 13:08, Manjunath Goudar :
> Separate the TI OHCI Atmel host controller driver from ohci-hcd
Why "TI" here? ?
> host code so that it can be built as a separate driver module.
> This work is part of enabling multi-platform kernels on ARM.
>
> Signed-off-by: Manjunath Goudar <manjunath.goudar@linaro.org>
> Signed-off-by: Deepak Saxena <dsaxena@linaro.org>
> Acked-by: Alan Stern <stern@rowland.harvard.edu>
Otherwise, seems correct.
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
> Cc: Arnd Bergmann <arnd@arndb.de>
> Cc: Greg KH <greg@kroah.com>
> Cc: linux-usb at vger.kernel.org
>
> V3->V4:
> - Removed extra space after "tristate".
> - Removed extra space between function name and '(' characters.
> - MODULE_ALIAS line moved to last statement of ohci-at91 file.
>
> V2->V3:
> -The ohci_restart() function is not required in current scenario,
> only discarding connection state of integrated transceivers is sufficient,
> for this directly handling ohci->hc_control.
>
> V1->V2:
> -Set non-standard fields in ohci_at91_hc_driver manually, rather than
> relying on an expanded struct ohci_driver_overrides.
> -Save orig_ohci_hub_control and orig_ohci_hub_status_data rather than
> relying on ohci_hub_control and hub_status_data being exported.
> -ohci_setup() has been removed because it is called in .reset member
> of the ohci_hc_driver structure.
> ---
> drivers/usb/host/Kconfig | 8 +++
> drivers/usb/host/Makefile | 1 +
> drivers/usb/host/ohci-at91.c | 156 +++++++++++++++++++-----------------------
> drivers/usb/host/ohci-hcd.c | 18 -----
> 4 files changed, 79 insertions(+), 104 deletions(-)
>
> diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
> index 00d22f5..6900b72 100644
> --- a/drivers/usb/host/Kconfig
> +++ b/drivers/usb/host/Kconfig
> @@ -382,6 +382,14 @@ config USB_OHCI_HCD_SPEAR
> Enables support for the on-chip OHCI controller on
> ST SPEAr chips.
>
> +config USB_OHCI_HCD_AT91
> + tristate "Support for Atmel on-chip OHCI USB controller"
> + depends on USB_OHCI_HCD && ARCH_AT91
> + default y
> + ---help---
> + Enables support for the on-chip OHCI controller on
> + Atmel chips.
> +
> config USB_OHCI_HCD_OMAP3
> tristate "OHCI support for OMAP3 and later chips"
> depends on (ARCH_OMAP3 || ARCH_OMAP4)
> diff --git a/drivers/usb/host/Makefile b/drivers/usb/host/Makefile
> index 9efcb7c..0d7a81a 100644
> --- a/drivers/usb/host/Makefile
> +++ b/drivers/usb/host/Makefile
> @@ -50,6 +50,7 @@ obj-$(CONFIG_USB_OHCI_EXYNOS) += ohci-exynos.o
> obj-$(CONFIG_USB_OHCI_HCD_OMAP1) += ohci-omap.o
> obj-$(CONFIG_USB_OHCI_HCD_OMAP3) += ohci-omap3.o
> obj-$(CONFIG_USB_OHCI_HCD_SPEAR) += ohci-spear.o
> +obj-$(CONFIG_USB_OHCI_HCD_AT91) += ohci-at91.o
>
> obj-$(CONFIG_USB_UHCI_HCD) += uhci-hcd.o
> obj-$(CONFIG_USB_FHCI_HCD) += fhci.o
> diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
> index caa3764..476b5a5 100644
> --- a/drivers/usb/host/ohci-at91.c
> +++ b/drivers/usb/host/ohci-at91.c
> @@ -13,19 +13,24 @@
> */
>
> #include <linux/clk.h>
> -#include <linux/platform_device.h>
> +#include <linux/dma-mapping.h>
> #include <linux/of_platform.h>
> #include <linux/of_gpio.h>
> +#include <linux/platform_device.h>
> #include <linux/platform_data/atmel.h>
> +#include <linux/io.h>
> +#include <linux/kernel.h>
> +#include <linux/module.h>
> +#include <linux/usb.h>
> +#include <linux/usb/hcd.h>
>
> #include <mach/hardware.h>
> #include <asm/gpio.h>
>
> #include <mach/cpu.h>
>
> -#ifndef CONFIG_ARCH_AT91
> -#error "CONFIG_ARCH_AT91 must be defined."
> -#endif
> +
> +#include "ohci.h"
>
> #define valid_port(index) ((index) >= 0 && (index) < AT91_MAX_USBH_PORTS)
> #define at91_for_each_port(index) \
> @@ -33,7 +38,17 @@
>
> /* interface, function and usb clocks; sometimes also an AHB clock */
> static struct clk *iclk, *fclk, *uclk, *hclk;
> +/* interface and function clocks; sometimes also an AHB clock */
> +
> +#define DRIVER_DESC "OHCI Atmel driver"
> +
> +static const char hcd_name[] = "ohci-atmel";
> +
> +static struct hc_driver __read_mostly ohci_at91_hc_driver;
> static int clocked;
> +static int (*orig_ohci_hub_control)(struct usb_hcd *hcd, u16 typeReq,
> + u16 wValue, u16 wIndex, char *buf, u16 wLength);
> +static int (*orig_ohci_hub_status_data)(struct usb_hcd *hcd, char *buf);
>
> extern int usb_disabled(void);
>
> @@ -117,6 +132,8 @@ static void usb_hcd_at91_remove (struct usb_hcd *, struct platform_device *);
> static int usb_hcd_at91_probe(const struct hc_driver *driver,
> struct platform_device *pdev)
> {
> + struct at91_usbh_data *board;
> + struct ohci_hcd *ohci;
> int retval;
> struct usb_hcd *hcd = NULL;
>
> @@ -177,8 +194,10 @@ static int usb_hcd_at91_probe(const struct hc_driver *driver,
> }
> }
>
> + board = hcd->self.controller->platform_data;
> + ohci = hcd_to_ohci(hcd);
> + ohci->num_ports = board->ports;
> at91_start_hc(pdev);
> - ohci_hcd_init(hcd_to_ohci(hcd));
>
> retval = usb_add_hcd(hcd, pdev->resource[1].start, IRQF_SHARED);
> if (retval == 0)
> @@ -238,36 +257,6 @@ static void usb_hcd_at91_remove(struct usb_hcd *hcd,
> }
>
> /*-------------------------------------------------------------------------*/
> -
> -static int
> -ohci_at91_reset (struct usb_hcd *hcd)
> -{
> - struct at91_usbh_data *board = dev_get_platdata(hcd->self.controller);
> - struct ohci_hcd *ohci = hcd_to_ohci (hcd);
> - int ret;
> -
> - if ((ret = ohci_init(ohci)) < 0)
> - return ret;
> -
> - ohci->num_ports = board->ports;
> - return 0;
> -}
> -
> -static int
> -ohci_at91_start (struct usb_hcd *hcd)
> -{
> - struct ohci_hcd *ohci = hcd_to_ohci (hcd);
> - int ret;
> -
> - if ((ret = ohci_run(ohci)) < 0) {
> - dev_err(hcd->self.controller, "can't start %s\n",
> - hcd->self.bus_name);
> - ohci_stop(hcd);
> - return ret;
> - }
> - return 0;
> -}
> -
> static void ohci_at91_usb_set_power(struct at91_usbh_data *pdata, int port, int enable)
> {
> if (!valid_port(port))
> @@ -297,8 +286,8 @@ static int ohci_at91_usb_get_power(struct at91_usbh_data *pdata, int port)
> */
> static int ohci_at91_hub_status_data(struct usb_hcd *hcd, char *buf)
> {
> - struct at91_usbh_data *pdata = dev_get_platdata(hcd->self.controller);
> - int length = ohci_hub_status_data(hcd, buf);
> + struct at91_usbh_data *pdata = hcd->self.controller->platform_data;
> + int length = orig_ohci_hub_status_data(hcd, buf);
> int port;
>
> at91_for_each_port(port) {
> @@ -376,7 +365,8 @@ static int ohci_at91_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue,
> break;
> }
>
> - ret = ohci_hub_control(hcd, typeReq, wValue, wIndex + 1, buf, wLength);
> + ret = orig_ohci_hub_control(hcd, typeReq, wValue, wIndex + 1,
> + buf, wLength);
> if (ret)
> goto out;
>
> @@ -430,51 +420,6 @@ static int ohci_at91_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue,
>
> /*-------------------------------------------------------------------------*/
>
> -static const struct hc_driver ohci_at91_hc_driver = {
> - .description = hcd_name,
> - .product_desc = "AT91 OHCI",
> - .hcd_priv_size = sizeof(struct ohci_hcd),
> -
> - /*
> - * generic hardware linkage
> - */
> - .irq = ohci_irq,
> - .flags = HCD_USB11 | HCD_MEMORY,
> -
> - /*
> - * basic lifecycle operations
> - */
> - .reset = ohci_at91_reset,
> - .start = ohci_at91_start,
> - .stop = ohci_stop,
> - .shutdown = ohci_shutdown,
> -
> - /*
> - * managing i/o requests and associated device resources
> - */
> - .urb_enqueue = ohci_urb_enqueue,
> - .urb_dequeue = ohci_urb_dequeue,
> - .endpoint_disable = ohci_endpoint_disable,
> -
> - /*
> - * scheduling support
> - */
> - .get_frame_number = ohci_get_frame,
> -
> - /*
> - * root hub support
> - */
> - .hub_status_data = ohci_at91_hub_status_data,
> - .hub_control = ohci_at91_hub_control,
> -#ifdef CONFIG_PM
> - .bus_suspend = ohci_bus_suspend,
> - .bus_resume = ohci_bus_resume,
> -#endif
> - .start_port_reset = ohci_start_port_reset,
> -};
> -
> -/*-------------------------------------------------------------------------*/
> -
> static irqreturn_t ohci_hcd_at91_overcurrent_irq(int irq, void *data)
> {
> struct platform_device *pdev = data;
> @@ -703,7 +648,11 @@ ohci_hcd_at91_drv_suspend(struct platform_device *pdev, pm_message_t mesg)
> * REVISIT: some boards will be able to turn VBUS off...
> */
> if (at91_suspend_entering_slow_clock()) {
> - ohci_usb_reset (ohci);
> + ohci->hc_control = ohci_readl(ohci, &ohci->regs->control);
> + ohci->hc_control &= OHCI_CTRL_RWC;
> + ohci_writel(ohci, ohci->hc_control, &ohci->regs->control);
> + ohci->rh_state = OHCI_RH_HALTED;
> +
> /* flush the writes */
> (void) ohci_readl (ohci, &ohci->regs->control);
> at91_stop_clock();
> @@ -730,8 +679,6 @@ static int ohci_hcd_at91_drv_resume(struct platform_device *pdev)
> #define ohci_hcd_at91_drv_resume NULL
> #endif
>
> -MODULE_ALIAS("platform:at91_ohci");
> -
> static struct platform_driver ohci_hcd_at91_driver = {
> .probe = ohci_hcd_at91_drv_probe,
> .remove = ohci_hcd_at91_drv_remove,
> @@ -744,3 +691,40 @@ static struct platform_driver ohci_hcd_at91_driver = {
> .of_match_table = of_match_ptr(at91_ohci_dt_ids),
> },
> };
> +
> +static int __init ohci_at91_init(void)
> +{
> + if (usb_disabled())
> + return -ENODEV;
> +
> + pr_info("%s: " DRIVER_DESC "\n", hcd_name);
> + ohci_init_driver(&ohci_at91_hc_driver, NULL);
> +
> + /*
> + * The Atmel HW has some unusual quirks, which require Atmel-specific
> + * workarounds. We override certain hc_driver functions here to
> + * achieve that. We explicitly do not enhance ohci_driver_overrides to
> + * allow this more easily, since this is an unusual case, and we don't
> + * want to encourage others to override these functions by making it
> + * too easy.
> + */
> +
> + orig_ohci_hub_control = ohci_at91_hc_driver.hub_control;
> + orig_ohci_hub_status_data = ohci_at91_hc_driver.hub_status_data;
> +
> + ohci_at91_hc_driver.hub_status_data = ohci_at91_hub_status_data;
> + ohci_at91_hc_driver.hub_control = ohci_at91_hub_control;
> +
> + return platform_driver_register(&ohci_hcd_at91_driver);
> +}
> +module_init(ohci_at91_init);
> +
> +static void __exit ohci_at91_cleanup(void)
> +{
> + platform_driver_unregister(&ohci_hcd_at91_driver);
> +}
> +module_exit(ohci_at91_cleanup);
> +
> +MODULE_DESCRIPTION(DRIVER_DESC);
> +MODULE_LICENSE("GPL");
> +MODULE_ALIAS("platform:at91_ohci");
> diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
> index 523f58e..2fdaaf8 100644
> --- a/drivers/usb/host/ohci-hcd.c
> +++ b/drivers/usb/host/ohci-hcd.c
> @@ -1192,11 +1192,6 @@ MODULE_LICENSE ("GPL");
> #define EP93XX_PLATFORM_DRIVER ohci_hcd_ep93xx_driver
> #endif
>
> -#ifdef CONFIG_ARCH_AT91
> -#include "ohci-at91.c"
> -#define AT91_PLATFORM_DRIVER ohci_hcd_at91_driver
> -#endif
> -
> #ifdef CONFIG_ARCH_LPC32XX
> #include "ohci-nxp.c"
> #define NXP_PLATFORM_DRIVER usb_hcd_nxp_driver
> @@ -1310,12 +1305,6 @@ static int __init ohci_hcd_mod_init(void)
> goto error_ep93xx;
> #endif
>
> -#ifdef AT91_PLATFORM_DRIVER
> - retval = platform_driver_register(&AT91_PLATFORM_DRIVER);
> - if (retval < 0)
> - goto error_at91;
> -#endif
> -
> #ifdef NXP_PLATFORM_DRIVER
> retval = platform_driver_register(&NXP_PLATFORM_DRIVER);
> if (retval < 0)
> @@ -1339,10 +1328,6 @@ static int __init ohci_hcd_mod_init(void)
> platform_driver_unregister(&NXP_PLATFORM_DRIVER);
> error_nxp:
> #endif
> -#ifdef AT91_PLATFORM_DRIVER
> - platform_driver_unregister(&AT91_PLATFORM_DRIVER);
> - error_at91:
> -#endif
> #ifdef EP93XX_PLATFORM_DRIVER
> platform_driver_unregister(&EP93XX_PLATFORM_DRIVER);
> error_ep93xx:
> @@ -1394,9 +1379,6 @@ static void __exit ohci_hcd_mod_exit(void)
> #ifdef NXP_PLATFORM_DRIVER
> platform_driver_unregister(&NXP_PLATFORM_DRIVER);
> #endif
> -#ifdef AT91_PLATFORM_DRIVER
> - platform_driver_unregister(&AT91_PLATFORM_DRIVER);
> -#endif
> #ifdef EP93XX_PLATFORM_DRIVER
> platform_driver_unregister(&EP93XX_PLATFORM_DRIVER);
> #endif
>
--
Nicolas Ferre
next prev parent reply other threads:[~2013-09-23 12:22 UTC|newest]
Thread overview: 110+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-07 6:03 [RFC][PATCH 0/7] USB: OHCI: more bus glues as separate modules Manjunath Goudar
2013-06-07 6:03 ` [RFC][PATCH 1/7] USB: OHCI: make ohci-exynos a separate driver Manjunath Goudar
2013-06-07 13:49 ` Arnd Bergmann
2013-06-07 17:20 ` Alan Stern
2013-06-07 6:03 ` [RFC][PATCH 2/7] USB: OHCI: make ohci-omap " Manjunath Goudar
2013-06-07 17:37 ` Alan Stern
2013-06-07 6:03 ` [RFC][PATCH 3/7] USB: OHCI: make ohci-omap3 " Manjunath Goudar
2013-06-07 13:51 ` Arnd Bergmann
2013-06-07 17:49 ` Alan Stern
2013-06-07 6:03 ` [RFC][PATCH 4/7] USB: OHCI: make ohci-spear " Manjunath Goudar
2013-06-07 10:30 ` Viresh Kumar
2013-06-07 18:34 ` Alan Stern
2013-06-07 6:03 ` [RFC][PATCH 5/7] USB: OHCI: export ohci_hub_control and ohci_hub_status_data Manjunath Goudar
2013-06-07 18:42 ` Alan Stern
2013-06-07 6:03 ` [RFC][PATCH 6/7] USB: OHCI: make ohci-at91 a separate driver Manjunath Goudar
2013-06-07 18:52 ` Alan Stern
2013-06-07 6:03 ` [RFC][PATCH 7/7] USB: OHCI: make ohci-s3c2410 " Manjunath Goudar
2013-06-07 13:56 ` Arnd Bergmann
2013-06-07 18:54 ` Alan Stern
2013-06-12 15:53 ` [PATCH V2 0/6] USB: OHCI: more bus glues as separate modules Manjunath Goudar
2013-06-12 15:53 ` [PATCH V2 1/6] USB: OHCI: make ohci-exynos a separate driver Manjunath Goudar
2013-06-18 17:30 ` Alan Stern
2013-06-20 4:10 ` Jingoo Han
2013-06-12 15:53 ` [PATCH V2 2/6] USB: OHCI: make ohci-omap " Manjunath Goudar
2013-06-18 17:47 ` Alan Stern
2013-06-18 18:13 ` Alan Stern
2013-06-12 15:53 ` [PATCH V2 3/6] USB: OHCI: make ohci-omap3 " Manjunath Goudar
2013-06-18 18:16 ` Alan Stern
2013-06-12 15:54 ` [PATCH V2 4/6] USB: OHCI: make ohci-spear " Manjunath Goudar
2013-06-18 18:23 ` Alan Stern
2013-06-12 15:54 ` [PATCH V2 5/6] USB: OHCI: make ohci-at91 " Manjunath Goudar
2013-06-19 20:16 ` Alan Stern
2013-06-12 15:54 ` [PATCH V2 6/6] USB: OHCI: make ohci-s3c2410 " Manjunath Goudar
2013-06-19 20:38 ` Alan Stern
2013-06-25 6:23 ` [PATCH V3 0/6] USB: OHCI: more bus glues as separate modules Manjunath Goudar
2013-06-25 6:23 ` [PATCH V3 1/6] USB: OHCI: make ohci-exynos a separate driver Manjunath Goudar
2013-06-25 6:23 ` [PATCH V3 2/6] USB: OHCI: make ohci-omap " Manjunath Goudar
2013-07-18 15:50 ` Alan Stern
2013-06-25 6:23 ` [PATCH V3 3/6] USB: OHCI: make ohci-omap3 " Manjunath Goudar
2013-06-25 18:14 ` Alan Stern
2013-06-25 6:23 ` [PATCH V3 4/6] USB: OHCI: make ohci-spear " Manjunath Goudar
2013-06-25 6:23 ` [PATCH V3 5/6] USB: OHCI: make ohci-at91 " Manjunath Goudar
2013-07-18 20:51 ` Alan Stern
2013-06-25 6:23 ` [PATCH V3 6/6] USB: OHCI: make ohci-s3c2410 " Manjunath Goudar
2013-07-18 20:38 ` Alan Stern
2013-07-22 9:19 ` [PATCH 0/6] USB: OHCI: more bus glues as separate modules Manjunath Goudar
2013-07-22 9:19 ` [PATCH 1/6] USB: OHCI: make ohci-exynos a separate driver Manjunath Goudar
2013-07-22 9:19 ` [PATCH 2/6] USB: OHCI: make ohci-omap " Manjunath Goudar
2013-07-23 18:39 ` Alan Stern
2013-07-22 9:19 ` [PATCH 3/6] USB: OHCI: make ohci-omap3 " Manjunath Goudar
2013-07-23 18:43 ` Alan Stern
2013-07-22 9:19 ` [PATCH 4/6] USB: OHCI: make ohci-spear " Manjunath Goudar
2013-07-22 9:19 ` [PATCH 5/6] USB: OHCI: make ohci-at91 " Manjunath Goudar
2013-07-23 18:45 ` Alan Stern
2013-07-22 9:19 ` [PATCH 6/6] USB: OHCI: make ohci-s3c2410 " Manjunath Goudar
2013-07-23 8:23 ` Tomasz Figa
2013-07-22 9:41 ` [PATCH V4 0/6] USB: OHCI: more bus glues as separate modules manjunath
2013-07-31 6:07 ` Manjunath Goudar
2013-07-31 6:07 ` [PATCH V4 1/6] USB: OHCI: make ohci-exynos a separate driver Manjunath Goudar
2013-07-31 6:08 ` [PATCH V4 2/6] USB: OHCI: make ohci-omap " Manjunath Goudar
2013-07-31 6:08 ` [PATCH V4 3/6] USB: OHCI: make ohci-omap3 " Manjunath Goudar
2013-07-31 6:08 ` [PATCH V4 4/6] USB: OHCI: make ohci-spear " Manjunath Goudar
2013-07-31 6:08 ` [PATCH V4 5/6] USB: OHCI: make ohci-at91 " Manjunath Goudar
2013-07-31 6:08 ` [PATCH V4 6/6] USB: OHCI: make ohci-s3c2410 " Manjunath Goudar
2013-08-10 7:37 ` [PATCH V4 0/6] USB: OHCI: more bus glues as separate modules Manjunath Goudar
2013-08-10 7:37 ` [PATCH V4 1/6] USB: OHCI: make ohci-exynos a separate driver Manjunath Goudar
2013-08-10 7:37 ` [PATCH V4 2/6] USB: OHCI: make ohci-omap " Manjunath Goudar
2013-08-10 7:37 ` [PATCH V4 3/6] USB: OHCI: make ohci-omap3 " Manjunath Goudar
2013-08-10 7:37 ` [PATCH V4 4/6] USB: OHCI: make ohci-spear " Manjunath Goudar
2013-08-10 7:37 ` [PATCH V4 5/6] USB: OHCI: make ohci-at91 " Manjunath Goudar
2013-08-10 7:37 ` [PATCH V4 6/6] USB: OHCI: make ohci-s3c2410 " Manjunath Goudar
2013-08-10 10:53 ` Tomasz Figa
2013-08-12 6:46 ` [PATCH V5 0/6]USB: OHCI: more bus glues as separate modules Manjunath Goudar
2013-08-12 6:46 ` [PATCH V5 1/6] USB: OHCI: make ohci-exynos a separate driver Manjunath Goudar
2013-08-12 6:46 ` [PATCH V5 2/6] USB: OHCI: make ohci-omap " Manjunath Goudar
2013-08-12 6:46 ` [PATCH V5 3/6] USB: OHCI: make ohci-omap3 " Manjunath Goudar
2013-08-12 6:46 ` [PATCH V5 4/6] USB: OHCI: make ohci-spear " Manjunath Goudar
2013-08-12 6:56 ` Viresh Kumar
2013-08-12 20:20 ` Greg KH
2013-08-12 6:46 ` [PATCH V5 5/6] USB: OHCI: make ohci-at91 " Manjunath Goudar
2013-08-12 6:47 ` [PATCH V5 6/6] USB: OHCI: make ohci-s3c2410 " Manjunath Goudar
2013-08-17 13:21 ` Tomasz Figa
2013-08-12 6:54 ` [PATCH V5 0/6]USB: OHCI: more bus glues as separate modules Viresh Kumar
2013-09-16 10:10 ` [PATCH V5 0/9] USB: " Manjunath Goudar
2013-09-16 10:10 ` [PATCH V5 1/9] USB: OHCI: make ohci-exynos a separate driver Manjunath Goudar
2013-09-16 10:10 ` [PATCH V5 2/9] USB: OHCI: make ohci-omap " Manjunath Goudar
2013-09-16 10:10 ` [PATCH V5 3/9] USB: OHCI: make ohci-omap3 " Manjunath Goudar
2013-09-16 10:10 ` [PATCH V5 4/9] USB: OHCI: make ohci-spear " Manjunath Goudar
2013-09-16 10:10 ` [PATCH V5 5/9] USB: OHCI: make ohci-at91 " Manjunath Goudar
2013-09-16 10:10 ` [PATCH V5 6/9] USB: OHCI: make ohci-s3c2410 " Manjunath Goudar
2013-09-16 10:10 ` [PATCH V5 7/9] USB: OHCI: make ohci-nxp " Manjunath Goudar
2013-09-16 10:10 ` [PATCH V5 8/9] USB: OHCI: make ohci-ep93xx " Manjunath Goudar
2013-09-16 10:10 ` [PATCH V5 9/9] USB: OHCI: make ohci-pxa27x " Manjunath Goudar
2013-09-21 11:08 ` [PATCH V5 0/9] USB: OHCI: more bus glues as separate modules Manjunath Goudar
2013-09-21 11:08 ` [PATCH V5 1/9] USB: OHCI: make ohci-exynos a separate driver Manjunath Goudar
2013-09-26 16:50 ` Greg KH
2013-09-21 11:08 ` [PATCH V5 2/9] USB: OHCI: make ohci-omap " Manjunath Goudar
2013-09-21 11:08 ` [PATCH V5 3/9] USB: OHCI: make ohci-omap3 " Manjunath Goudar
2013-09-21 11:08 ` [PATCH V5 4/9] USB: OHCI: make ohci-spear " Manjunath Goudar
2013-09-21 11:08 ` [PATCH V5 5/9] USB: OHCI: make ohci-at91 " Manjunath Goudar
2013-09-23 12:22 ` Nicolas Ferre [this message]
2013-09-27 15:10 ` Kevin Hilman
2013-09-27 15:25 ` Greg KH
2013-09-27 15:37 ` Alan Stern
2013-09-27 15:40 ` Greg KH
2013-09-27 15:38 ` Alan Stern
2013-09-21 11:08 ` [PATCH V5 6/9] USB: OHCI: make ohci-s3c2410 " Manjunath Goudar
2013-09-21 11:08 ` [PATCH V5 7/9] USB: OHCI: make ohci-nxp " Manjunath Goudar
2013-09-21 11:08 ` [PATCH V5 8/9] USB: OHCI: make ohci-ep93xx " Manjunath Goudar
2013-09-21 11:08 ` [PATCH V5 9/9] USB: OHCI: make ohci-pxa27x " 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=524032A3.3080908@atmel.com \
--to=nicolas.ferre@atmel.com \
--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.