From: marex@denx.de (Marek Vasut)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 08/11] MXS: Add imx-otg driver
Date: Mon, 23 Apr 2012 11:38:18 +0200 [thread overview]
Message-ID: <201204231138.19119.marex@denx.de> (raw)
In-Reply-To: <20120423063924.GY3852@pengutronix.de>
Dear Sascha Hauer,
> On Sun, Apr 22, 2012 at 02:59:24PM +0200, Marek Vasut wrote:
> > This driver handles claiming of clocks and memory areas. These are later
> > properly delegated to it's child devices, the USB Host (ehci-mxs) and
> > USB Gadget (ci13xxx-mxs).
> >
> > Signed-off-by: Marek Vasut <marex@denx.de>
> > Cc: Chen Peter-B29397 <B29397@freescale.com>
> > Cc: Detlev Zundel <dzu@denx.de>
> > Cc: Fabio Estevam <festevam@gmail.com>
> > Cc: Li Frank-B20596 <B20596@freescale.com>
> > Cc: Lin Tony-B19295 <B19295@freescale.com>
> > Cc: Linux USB <linux-usb@vger.kernel.org>
> > Cc: Sascha Hauer <s.hauer@pengutronix.de>
> > Cc: Shawn Guo <shawn.guo@freescale.com>
> > Cc: Shawn Guo <shawn.guo@linaro.org>
> > Cc: Stefano Babic <sbabic@denx.de>
> > Cc: Subodh Nijsure <snijsure@grid-net.com>
> > Cc: Tony Lin <tony.lin@freescale.com>
> > Cc: Wolfgang Denk <wd@denx.de>
> > ---
> >
> > drivers/usb/otg/Kconfig | 6 +
> > drivers/usb/otg/Makefile | 1 +
> > drivers/usb/otg/imx-otg.c | 282
> > +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 289
> > insertions(+)
> > create mode 100644 drivers/usb/otg/imx-otg.c
> >
> > diff --git a/drivers/usb/otg/Kconfig b/drivers/usb/otg/Kconfig
> > index 5c87db0..e7c6325 100644
> > --- a/drivers/usb/otg/Kconfig
> > +++ b/drivers/usb/otg/Kconfig
> > @@ -116,6 +116,12 @@ config FSL_USB2_OTG
> >
> > help
> >
> > Enable this to support Freescale USB OTG transceiver.
> >
> > +config USB_IMX_COMPOSITE
> > + bool
> > + help
> > + Composite driver that handles clock and memory mapping for
> > + i.MX USB host and USB PHY.
> > +
> >
> > config USB_MV_OTG
> >
> > tristate "Marvell USB OTG support"
> > depends on USB_EHCI_MV && USB_MV_UDC && USB_SUSPEND
> >
> > diff --git a/drivers/usb/otg/Makefile b/drivers/usb/otg/Makefile
> > index 41aa509..7d2c631 100644
> > --- a/drivers/usb/otg/Makefile
> > +++ b/drivers/usb/otg/Makefile
> > @@ -20,4 +20,5 @@ obj-$(CONFIG_USB_MSM_OTG) += msm_otg.o
> >
> > obj-$(CONFIG_AB8500_USB) += ab8500-usb.o
> > fsl_usb2_otg-objs := fsl_otg.o otg_fsm.o
> > obj-$(CONFIG_FSL_USB2_OTG) += fsl_usb2_otg.o
> >
> > +obj-$(CONFIG_USB_IMX_COMPOSITE) += imx-otg.o
> >
> > obj-$(CONFIG_USB_MV_OTG) += mv_otg.o
> >
> > diff --git a/drivers/usb/otg/imx-otg.c b/drivers/usb/otg/imx-otg.c
> > new file mode 100644
> > index 0000000..249b6b5
> > --- /dev/null
> > +++ b/drivers/usb/otg/imx-otg.c
> > @@ -0,0 +1,282 @@
> > +/*
> > + * drivers/usb/otg/imx-otg.c
> > + *
> > + * Freescale i.MX USB composite driver.
> > + *
> > + * Copyright (C) 2012 Marek Vasut <marex@denx.de>
> > + * on behalf of DENX Software Engineering GmbH
> > + *
> > + * This program is free software; you can redistribute it and/or modify
> > + * it under the terms of the GNU General Public License as published by
> > + * the Free Software Foundation; either version 2 of the License, or
> > + * (at your option) any later version.
> > + *
> > + * This program is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> > + * GNU General Public License for more details.
> > + *
> > + * You should have received a copy of the GNU General Public License
> > + * along with this program; if not, write to the Free Software
> > + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
> > + */
> > +
> > +#include <linux/module.h>
> > +#include <linux/platform_device.h>
> > +#include <linux/dma-mapping.h>
> > +#include <linux/usb.h>
> > +#include <linux/usb/otg.h>
> > +#include <linux/usb/hcd.h>
> > +#include <linux/slab.h>
> > +#include <linux/delay.h>
> > +#include <linux/fsl/mxs-usb.h>
> > +#include <linux/io.h>
> > +
> > +#include <mach/common.h>
> > +#include <mach/hardware.h>
> > +#include <mach/devices-common.h>
> > +
> > +/*
> > + * Allocate platform device with the DMA mask, this is borrowed from
> > + * arch/arm/mach-mxs/devices.c
> > + */
> > +static struct platform_device *__devinit add_platform_device(
> > + const char *name, int id,
> > + const void *data, size_t size_data, u64 dmamask)
> > +{
> > + int ret = -ENOMEM;
> > + struct platform_device *pdev;
> > +
> > + pdev = platform_device_alloc(name, id);
> > + if (!pdev)
> > + goto err;
> > +
> > + if (dmamask) {
> > + /*
> > + * This memory isn't freed when the device is put,
> > + * I don't have a nice idea for that though. Conceptually
> > + * dma_mask in struct device should not be a pointer.
> > + * See http://thread.gmane.org/gmane.linux.kernel.pci/9081
> > + */
> > + pdev->dev.dma_mask =
> > + kmalloc(sizeof(*pdev->dev.dma_mask), GFP_KERNEL);
> > + if (!pdev->dev.dma_mask)
> > + /* ret is still -ENOMEM; */
> > + goto err;
> > +
> > + *pdev->dev.dma_mask = dmamask;
> > + pdev->dev.coherent_dma_mask = dmamask;
> > + }
> > +
> > + if (data) {
> > + ret = platform_device_add_data(pdev, data, size_data);
> > + if (ret)
> > + goto err;
> > + }
> > +
> > + ret = platform_device_add(pdev);
> > + if (ret) {
> > +err:
> > + if (dmamask)
> > + kfree(pdev->dev.dma_mask);
> > + platform_device_put(pdev);
> > + return ERR_PTR(ret);
> > + }
> > +
> > + return pdev;
> > +}
> > +
> > +static int __devinit imx_usb_probe(struct platform_device *pdev)
> > +{
> > + struct imx_usb_platform_data *pdata = pdev->dev.platform_data;
> > + struct imx_usb *data;
> > + struct usb_phy *phy;
> > + int ret;
> > + void *retp = NULL;
> > +
> > + if (!pdata) {
> > + dev_err(&pdev->dev, "No platform data supplied!\n");
> > + return -ENODEV;
> > + }
> > +
> > + phy = usb_get_transceiver();
> > + if (!phy)
> > + return -EPROBE_DEFER;
> > +
> > + /*
> > + * Until further notice, this claims all necessary resources.
> > + */
> > +
> > + /* Allocate driver's private date. */
> > + data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
> > + if (!data) {
> > + ret = -ENOMEM;
> > + goto err_alloc_data;
> > + }
> > +
> > + /* Claim the Host clock. */
> > + data->clk = clk_get(&pdev->dev, "usb");
> > + if (IS_ERR(data->clk)) {
> > + dev_err(&pdev->dev, "Failed to claim clock for USB Host\n");
> > + ret = PTR_ERR(data->clk);
> > + goto err_claim_host_clock;
> > + }
> > +
> > + /* Prepare Host clock. */
> > + ret = clk_prepare_enable(data->clk);
> > + if (ret) {
> > + dev_err(&pdev->dev, "Failed to enable clock for USB Host.\n");
> > + goto err_prepare_host_clock;
> > + }
> > +
> > + /* Get memory area for EHCI host from resources. */
> > + data->mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> > + if (!data->mem_res) {
> > + dev_err(&pdev->dev, "Specify memory area for this USB Host!\n");
> > + ret = -ENODEV;
> > + goto err_get_host_resource;
> > + }
> > +
> > + /* Request the memory region for this USB Host. */
> > + retp = devm_request_mem_region(&pdev->dev, data->mem_res->start,
> > + resource_size(data->mem_res), pdev->name);
> > + if (!retp) {
> > + dev_err(&pdev->dev, "USB Host memory area already in use!\n");
> > + ret = -EBUSY;
> > + goto err_get_host_mem;
> > + }
> > +
> > + /* Map the memory region for USB Host. */
> > + data->mem = devm_ioremap(&pdev->dev, data->mem_res->start,
> > + resource_size(data->mem_res));
> > + if (!data->mem) {
> > + dev_err(&pdev->dev, "Memory mapping of USB Host failed!\n");
> > + ret = -EFAULT;
> > + goto err_map_host_mem;
> > + }
> > +
> > + /* Get IRQ for EHCI host from resources. */
> > + data->irq = platform_get_irq(pdev, 0);
> > + if (data->irq < 0) {
> > + dev_err(&pdev->dev, "Specify IRQ for this USB Host!\n");
> > + ret = -ENODEV;
> > + goto err_get_host_irq;
> > + }
> > +
> > + /*
> > + * Now finally probe the Host driver!
> > + */
> > + if (pdata->host_mode) {
> > + data->pdev_host = add_platform_device("mxs-ehci", -1,
> > + data, sizeof(*data),
> > + DMA_BIT_MASK(32));
> > + if (!data->pdev_host) {
> > + dev_err(&pdev->dev, "Failed registering Host!\n");
> > + ret = -ENODEV;
> > + goto err_register_host;
> > + }
> > + } else {
> > + data->pdev_gadget = add_platform_device("ci13xxx-mxs", -1,
> > + data, sizeof(*data),
> > + DMA_BIT_MASK(32));
> > + if (!data->pdev_gadget) {
> > + dev_err(&pdev->dev, "Failed registering Host!\n");
> > + ret = -ENODEV;
> > + goto err_register_gadget;
> > + }
> > + }
> > +
> > + /*
> > + * Initialize the transceiver
> > + */
> > + phy = usb_get_transceiver();
> > + if (!phy) {
> > + dev_err(&pdev->dev, "Unable to find transceiver.\n");
> > + ret = -ENODEV;
> > + goto err_phy;
> > + }
> > +
> > + ret = usb_phy_init(phy);
> > + if (ret < 0) {
> > + dev_err(&pdev->dev, "Unable init transceiver\n");
> > + ret = -ENODEV;
> > + goto err_phy_init;
> > + }
> > +
> > + /* Set up the PORTSCx register */
> > + writel(0, data->mem + 0x144);
> > +
> > + return 0;
> > +
> > +err_phy_init:
> > + if (phy)
> > + usb_put_transceiver(phy);
> > +err_phy:
> > + if (data->pdev_gadget)
> > + platform_device_unregister(data->pdev_gadget);
> > +err_register_gadget:
> > + if (data->pdev_host)
> > + platform_device_unregister(data->pdev_host);
> > +err_register_host:
> > +err_get_host_irq:
> > + iounmap(data->mem);
> > +err_map_host_mem:
> > + release_mem_region(data->mem_res->start,
> > + resource_size(data->mem_res));
> > +err_get_host_mem:
> > + data->mem_res = NULL;
> > +err_get_host_resource:
> > + clk_disable_unprepare(data->clk);
> > +err_prepare_host_clock:
> > + clk_put(data->clk);
> > +err_claim_host_clock:
> > +err_alloc_data:
> > + return ret;
> > +}
> > +
> > +static int __devexit imx_usb_remove(struct platform_device *pdev)
> > +{
> > + struct imx_usb *data = platform_get_drvdata(pdev);
> > +
> > + if (data->pdev_gadget)
> > + platform_device_unregister(data->pdev_gadget);
> > +
> > + if (data->pdev_host)
> > + platform_device_unregister(data->pdev_host);
> > +
> > + iounmap(data->mem);
> > + release_mem_region(data->mem_res->start,
> > + resource_size(data->mem_res));
>
> Again, you are using the managed versions of ioremap and
> request_mem_region. The whole point of these functions is that these
> resources are automatically released on driver exit (or failure at
> probe).
Argh. Anyway, I'm more interested to hear your opinion on the general concept,
esp. on Peter's comment on otg_set_host()/otg_set_peripheral() -- their
implementation should be in the PHY driver and they should be called from EHCI
host / ci13xxx gadget driver, correct?
> Sascha
next prev parent reply other threads:[~2012-04-23 9:38 UTC|newest]
Thread overview: 153+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-17 10:15 [RFC PATCH 0/8] MXS: Add i.MX28 USB Host driver Marek Vasut
2012-04-17 10:15 ` [PATCH 1/8] MXS: Make clk_disable return integer Marek Vasut
2012-04-17 10:15 ` [PATCH 2/8] MXS: Add USB EHCI and USB PHY clock handling Marek Vasut
2012-04-17 18:01 ` Sascha Hauer
2012-04-17 10:15 ` [PATCH 3/8] MXS: Fixup i.MX233 USB base address name Marek Vasut
2012-04-17 10:15 ` [PATCH 4/8] MXS: Add platform registration hooks for USB EHCI Marek Vasut
2012-04-17 10:15 ` [PATCH 5/8] MXS: Add USB PHY driver Marek Vasut
2012-04-17 17:51 ` Sascha Hauer
2012-04-19 11:40 ` Arnd Bergmann
2012-04-17 10:15 ` [PATCH 6/8] MXS: Add separate MXS EHCI HCD driver Marek Vasut
2012-04-17 10:15 ` [PATCH 7/8] MXS: Enable USB on M28EVK Marek Vasut
2012-04-17 17:40 ` Sergei Shtylyov
2012-04-17 10:15 ` [PATCH 8/8] MXS: Enable USB on MX28EVK Marek Vasut
2012-04-17 10:37 ` [RFC PATCH 0/8] MXS: Add i.MX28 USB Host driver Dirk Behme
2012-04-17 11:24 ` Marek Vasut
2012-04-18 1:00 ` Chen Peter-B29397
2012-04-17 11:29 ` Sascha Hauer
2012-04-17 11:45 ` Marek Vasut
2012-04-17 12:18 ` Sascha Hauer
2012-04-17 20:29 ` Marek Vasut
2012-04-18 7:02 ` Sascha Hauer
2012-04-18 8:05 ` Chen Peter-B29397
2012-04-17 12:36 ` Heikki Krogerus
2012-04-18 4:31 ` Chen Peter-B29397
2012-04-18 7:40 ` Sascha Hauer
2012-04-20 13:10 ` 答复: " Liu JunJie-B08287
2012-04-20 16:25 ` Marek Vasut
2012-04-23 2:02 ` Liu JunJie-B08287
2012-04-18 2:07 ` [RFC PATCH 00/10 V2] " Marek Vasut
2012-04-18 2:07 ` [PATCH 01/10] MXS: Make clk_disable return integer Marek Vasut
2012-04-18 2:07 ` [PATCH 02/10] MXS: Add USB EHCI and USB PHY clock handling Marek Vasut
2012-04-18 2:07 ` [PATCH 03/10] MXS: Fixup i.MX233 USB base address name Marek Vasut
2012-04-18 2:07 ` [PATCH 04/10] MXS: Add data shared between imx-usb, PHY and EHCI driver Marek Vasut
2012-04-18 2:07 ` [PATCH 05/10] MXS: Add platform registration hooks for USB EHCI Marek Vasut
2012-04-18 2:07 ` [PATCH 06/10] MXS: Add composite imx-usb driver Marek Vasut
2012-04-18 2:07 ` [PATCH 07/10] MXS: Add USB PHY driver Marek Vasut
2012-04-18 2:07 ` [PATCH 08/10] MXS: Add separate MXS EHCI HCD driver Marek Vasut
2012-04-18 7:01 ` Chen Peter-B29397
2012-04-18 8:40 ` Sascha Hauer
2012-04-18 9:18 ` Chen Peter-B29397
2012-04-18 9:45 ` Sascha Hauer
2012-04-19 2:54 ` Chen Peter-B29397
2012-04-19 6:34 ` Sascha Hauer
2012-04-18 2:07 ` [PATCH 09/10] MXS: Enable USB on M28EVK Marek Vasut
2012-04-18 12:08 ` Sergei Shtylyov
2012-04-18 12:24 ` Marek Vasut
2012-04-18 2:07 ` [PATCH 10/10] MXS: Enable USB on MX28EVK Marek Vasut
2012-04-18 2:09 ` [RFC PATCH 00/10 V2] MXS: Add i.MX28 USB Host driver Marek Vasut
2012-04-18 7:52 ` Chen Peter-B29397
2012-04-18 17:49 ` Marek Vasut
2012-04-19 2:37 ` Chen Peter-B29397
2012-04-18 17:46 ` [RFC PATCH 00/10 V3] " Marek Vasut
2012-04-18 17:46 ` [PATCH 01/10] MXS: Make clk_disable return integer Marek Vasut
2012-04-18 17:46 ` [PATCH 02/10] MXS: Add USB EHCI and USB PHY clock handling Marek Vasut
2012-04-18 17:46 ` [PATCH 03/10] MXS: Fixup i.MX233 USB base address name Marek Vasut
2012-04-18 17:46 ` [PATCH 04/10] MXS: Add data shared between imx-usb and EHCI driver Marek Vasut
2012-04-18 17:46 ` [PATCH 05/10] MXS: Add platform registration hooks for USB EHCI Marek Vasut
2012-04-19 11:51 ` Arnd Bergmann
2012-04-19 14:24 ` Shawn Guo
2012-04-19 21:32 ` Marek Vasut
2012-04-20 0:40 ` Shawn Guo
2012-04-20 0:56 ` Marek Vasut
2012-04-20 1:34 ` Shawn Guo
2012-04-20 1:40 ` Marek Vasut
2012-04-18 17:46 ` [PATCH 06/10] MXS: Add imx-usb driver Marek Vasut
2012-04-18 17:46 ` [PATCH 07/10] MXS: Add USB PHY driver Marek Vasut
2012-04-18 19:36 ` Sascha Hauer
2012-04-18 20:02 ` Marek Vasut
2012-04-18 20:16 ` Sascha Hauer
2012-04-19 22:06 ` Marek Vasut
2012-04-20 2:35 ` Chen Peter-B29397
2012-04-18 17:46 ` [PATCH 08/10] MXS: Add separate MXS EHCI HCD driver Marek Vasut
2012-04-18 19:50 ` Sascha Hauer
2012-04-18 20:07 ` Marek Vasut
2012-04-18 20:43 ` Sascha Hauer
2012-04-18 17:46 ` [PATCH 09/10] MXS: Enable USB on M28EVK Marek Vasut
2012-04-18 17:46 ` [PATCH 10/10] MXS: Enable USB on MX28EVK Marek Vasut
2012-04-20 2:13 ` [RFC PATCH 00/10 V3] MXS: Add i.MX28 USB Host driver Marek Vasut
2012-04-20 9:48 ` Sascha Hauer
2012-04-20 12:26 ` Peter Chen
2012-04-20 12:44 ` Marek Vasut
2012-04-20 13:00 ` Robert Schwebel
2012-04-20 13:26 ` Sascha Hauer
2012-04-20 16:36 ` Michael Grzeschik
2012-04-21 7:42 ` Peter Chen
2012-04-21 8:17 ` Sascha Hauer
2012-04-21 13:53 ` Subodh Nijsure
2012-04-21 15:37 ` Marek Vasut
2012-04-22 12:59 ` [RFC PATCH 00/11 V4] " Marek Vasut
2012-04-22 12:59 ` [PATCH 01/11] MXS: Make clk_disable return integer Marek Vasut
2012-04-22 12:59 ` [PATCH 02/11] MXS: Add USB EHCI and USB PHY clock handling Marek Vasut
2012-04-22 14:42 ` Shawn Guo
2012-04-22 15:42 ` Marek Vasut
2012-04-22 16:34 ` Shawn Guo
2012-04-22 12:59 ` [PATCH 03/11] MXS: Fixup i.MX233 USB base address name Marek Vasut
2012-04-22 12:59 ` [PATCH 04/11] MXS: Add data shared between imx-otg and EHCI driver Marek Vasut
2012-04-22 14:39 ` Shawn Guo
2012-04-22 15:42 ` Marek Vasut
2012-04-22 16:38 ` Shawn Guo
2012-04-22 12:59 ` [PATCH 05/11] MXS: Modify the ci13xxx_udc to avoid adding UDC Marek Vasut
2012-04-22 12:59 ` [PATCH 06/11] MXS: Add small registration glue for ci13xxx_udc Marek Vasut
2012-04-23 1:46 ` Chen Peter-B29397
2012-04-22 12:59 ` [PATCH 07/11] MXS: Add separate MXS EHCI HCD driver Marek Vasut
2012-04-23 1:44 ` Chen Peter-B29397
2012-04-23 2:11 ` Marek Vasut
2012-04-22 12:59 ` [PATCH 08/11] MXS: Add imx-otg driver Marek Vasut
2012-04-23 6:39 ` Sascha Hauer
2012-04-23 9:38 ` Marek Vasut [this message]
2012-04-22 12:59 ` [PATCH 09/11] MXS: Add USB PHY driver Marek Vasut
2012-04-23 1:42 ` Chen Peter-B29397
2012-04-23 2:17 ` Marek Vasut
2012-04-23 12:20 ` Chen Peter-B29397
2012-04-22 12:59 ` [PATCH 10/11] MXS: Add platform registration hooks for USB EHCI Marek Vasut
2012-04-22 12:59 ` [PATCH 11/11] MXS: Enable USB on M28EVK Marek Vasut
2012-04-23 1:57 ` Chen Peter-B29397
2012-04-23 2:18 ` Marek Vasut
2012-04-23 2:01 ` [RFC PATCH 00/11 V4] MXS: Add i.MX28 USB Host driver Chen Peter-B29397
2012-04-23 2:18 ` Marek Vasut
2012-04-23 11:59 ` Chen Peter-B29397
2012-04-23 12:09 ` Marek Vasut
2012-04-23 12:25 ` Chen Peter-B29397
2012-04-23 12:40 ` Marek Vasut
2012-04-23 2:37 ` Marek Vasut
2012-04-24 3:18 ` [RFC PATCH 00/11 V5] " Marek Vasut
2012-04-24 3:18 ` [PATCH 01/11] MXS: Make clk_disable return integer Marek Vasut
2012-04-24 3:18 ` [PATCH 02/11] MXS: Add USB EHCI and USB PHY clock handling Marek Vasut
2012-04-24 3:18 ` [PATCH 03/11] MXS: Fixup i.MX233 USB base address name Marek Vasut
2012-04-24 3:18 ` [PATCH 04/11] MXS: Add data shared between imx-otg and EHCI driver Marek Vasut
2012-04-24 3:18 ` [PATCH 05/11] MXS: Modify the ci13xxx_udc to avoid adding UDC Marek Vasut
2012-04-29 8:26 ` Chen Peter-B29397
2012-04-24 3:18 ` [PATCH 06/11] MXS: Add small registration glue for ci13xxx_udc Marek Vasut
2012-04-24 3:18 ` [PATCH 07/11] MXS: Add separate MXS EHCI HCD driver Marek Vasut
2012-04-29 8:28 ` Chen Peter-B29397
2012-04-24 3:18 ` [PATCH 08/11] MXS: Add imx-otg driver Marek Vasut
2012-04-24 14:48 ` Lothar Waßmann
2012-04-24 14:50 ` Sascha Hauer
2012-04-24 16:13 ` Lothar Waßmann
2012-04-24 16:47 ` Sascha Hauer
2012-04-24 17:49 ` Marek Vasut
2012-04-24 20:49 ` Sascha Hauer
2012-04-24 20:58 ` Marek Vasut
2012-04-25 0:17 ` Chen Peter-B29397
2012-04-24 3:18 ` [PATCH 09/11] MXS: Add USB PHY driver Marek Vasut
2012-04-24 3:18 ` [PATCH 10/11] MXS: Add platform registration hooks for USB EHCI Marek Vasut
2012-04-24 3:18 ` [PATCH 11/11] MXS: Enable USB on M28EVK Marek Vasut
2012-04-24 20:02 ` [RFC PATCH 00/11 V5] MXS: Add i.MX28 USB Host driver Russell King - ARM Linux
2012-04-25 12:27 ` Marek Vasut
2012-04-25 12:41 ` Russell King - ARM Linux
2012-04-25 12:43 ` Marek Vasut
-- strict thread matches above, loose matches on Subject: below --
2012-04-29 22:34 [RFC PATCH 00/11 V6] " Marek Vasut
2012-04-29 22:34 ` [PATCH 08/11] MXS: Add imx-otg driver Marek Vasut
2012-04-30 6:13 ` Lothar Waßmann
2012-04-30 12:24 ` Marek Vasut
2012-05-01 1:55 [RFC PATCH 00/11 V7] MXS: Add i.MX28 USB Host driver Marek Vasut
2012-05-01 1:56 ` [PATCH 08/11] MXS: Add imx-otg driver Marek Vasut
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=201204231138.19119.marex@denx.de \
--to=marex@denx.de \
--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.