From: rmallon@gmail.com (Ryan Mallon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] usb: ohci: remove ep93xx bus glue platform driver
Date: Tue, 15 Oct 2013 15:41:18 +1100 [thread overview]
Message-ID: <525CC76E.6000905@gmail.com> (raw)
In-Reply-To: <201310141435.31147.hartleys@visionengravers.com>
On 15/10/13 08:35, H Hartley Sweeten wrote:
> Convert ep93xx to use the OHCI platform driver and remove the
> ohci-ep93xx bus glue driver.
>
> Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
> Cc: Alan Stern <stern@rowland.harvard.edu>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: Ryan Mallon <rmallon@gmail.com>
Cc'ed Olof, who wanted to see what the patches looked like.
I think the overall code reduction is probably worth the small increase
in arch/arm code size.
~Ryan
> ---
> arch/arm/mach-ep93xx/clock.c | 2 +-
> arch/arm/mach-ep93xx/core.c | 45 +++++++++-
> drivers/usb/host/Kconfig | 2 +-
> drivers/usb/host/ohci-ep93xx.c | 184 -----------------------------------------
> drivers/usb/host/ohci-hcd.c | 18 ----
> 5 files changed, 43 insertions(+), 208 deletions(-)
> delete mode 100644 drivers/usb/host/ohci-ep93xx.c
>
> diff --git a/arch/arm/mach-ep93xx/clock.c b/arch/arm/mach-ep93xx/clock.c
> index c95dbce..39ef3b6 100644
> --- a/arch/arm/mach-ep93xx/clock.c
> +++ b/arch/arm/mach-ep93xx/clock.c
> @@ -212,7 +212,7 @@ static struct clk_lookup clocks[] = {
> INIT_CK(NULL, "hclk", &clk_h),
> INIT_CK(NULL, "apb_pclk", &clk_p),
> INIT_CK(NULL, "pll2", &clk_pll2),
> - INIT_CK("ep93xx-ohci", NULL, &clk_usb_host),
> + INIT_CK("ohci-platform", NULL, &clk_usb_host),
> INIT_CK("ep93xx-keypad", NULL, &clk_keypad),
> INIT_CK("ep93xx-fb", NULL, &clk_video),
> INIT_CK("ep93xx-spi.0", NULL, &clk_spi),
> diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c
> index 3f12b88..5489824 100644
> --- a/arch/arm/mach-ep93xx/core.c
> +++ b/arch/arm/mach-ep93xx/core.c
> @@ -36,6 +36,7 @@
> #include <linux/export.h>
> #include <linux/irqchip/arm-vic.h>
> #include <linux/reboot.h>
> +#include <linux/usb/ohci_pdriver.h>
>
> #include <mach/hardware.h>
> #include <linux/platform_data/video-ep93xx.h>
> @@ -297,22 +298,58 @@ static struct platform_device ep93xx_rtc_device = {
> .resource = ep93xx_rtc_resource,
> };
>
> +/*************************************************************************
> + * EP93xx OHCI USB Host
> + *************************************************************************/
> +
> +static struct clk *ep93xx_ohci_host_clock;
> +
> +static int ep93xx_ohci_power_on(struct platform_device *pdev)
> +{
> + if (!ep93xx_ohci_host_clock) {
> + ep93xx_ohci_host_clock = devm_clk_get(&pdev->dev, NULL);
> + if (IS_ERR(ep93xx_ohci_host_clock))
> + return PTR_ERR(ep93xx_ohci_host_clock);
> + }
> +
> + clk_enable(ep93xx_ohci_host_clock);
> +
> + return 0;
> +}
> +
> +static void ep93xx_ohci_power_off(struct platform_device *pdev)
> +{
> + clk_disable(ep93xx_ohci_host_clock);
> +}
> +
> +static void ep93xx_ohci_power_suspend(struct platform_device *pdev)
> +{
> + ep93xx_ohci_power_off(pdev);
> +}
> +
> +static struct usb_ohci_pdata ep93xx_ohci_pdata = {
> + .power_on = ep93xx_ohci_power_on,
> + .power_off = ep93xx_ohci_power_off,
> + .power_suspend = ep93xx_ohci_power_suspend,
> +};
>
> static struct resource ep93xx_ohci_resources[] = {
> DEFINE_RES_MEM(EP93XX_USB_PHYS_BASE, 0x1000),
> DEFINE_RES_IRQ(IRQ_EP93XX_USB),
> };
>
> +static u64 ep93xx_ohci_dma_mask = DMA_BIT_MASK(32);
>
> static struct platform_device ep93xx_ohci_device = {
> - .name = "ep93xx-ohci",
> + .name = "ohci-platform",
> .id = -1,
> + .num_resources = ARRAY_SIZE(ep93xx_ohci_resources),
> + .resource = ep93xx_ohci_resources,
> .dev = {
> - .dma_mask = &ep93xx_ohci_device.dev.coherent_dma_mask,
> + .dma_mask = &ep93xx_ohci_dma_mask,
> .coherent_dma_mask = DMA_BIT_MASK(32),
> + .platform_data = &ep93xx_ohci_pdata,
> },
> - .num_resources = ARRAY_SIZE(ep93xx_ohci_resources),
> - .resource = ep93xx_ohci_resources,
> };
>
>
> diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
> index b3f20d7..2c8f2db 100644
> --- a/drivers/usb/host/Kconfig
> +++ b/drivers/usb/host/Kconfig
> @@ -472,7 +472,7 @@ config USB_CNS3XXX_OHCI
>
> config USB_OHCI_HCD_PLATFORM
> tristate "Generic OHCI driver for a platform device"
> - default n
> + default y if ARCH_EP93XX
> ---help---
> Adds an OHCI host driver for a generic platform device, which
> provides a memory space and an irq.
> diff --git a/drivers/usb/host/ohci-ep93xx.c b/drivers/usb/host/ohci-ep93xx.c
> deleted file mode 100644
> index 84a20d5..0000000
> --- a/drivers/usb/host/ohci-ep93xx.c
> +++ /dev/null
> @@ -1,184 +0,0 @@
> -/*
> - * OHCI HCD (Host Controller Driver) for USB.
> - *
> - * (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at>
> - * (C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net>
> - * (C) Copyright 2002 Hewlett-Packard Company
> - *
> - * Bus Glue for ep93xx.
> - *
> - * Written by Christopher Hoover <ch@hpl.hp.com>
> - * Based on fragments of previous driver by Russell King et al.
> - *
> - * Modified for LH7A404 from ohci-sa1111.c
> - * by Durgesh Pattamatta <pattamattad@sharpsec.com>
> - *
> - * Modified for pxa27x from ohci-lh7a404.c
> - * by Nick Bane <nick@cecomputing.co.uk> 26-8-2004
> - *
> - * Modified for ep93xx from ohci-pxa27x.c
> - * by Lennert Buytenhek <buytenh@wantstofly.org> 28-2-2006
> - * Based on an earlier driver by Ray Lehtiniemi
> - *
> - * This file is licenced under the GPL.
> - */
> -
> -#include <linux/clk.h>
> -#include <linux/device.h>
> -#include <linux/signal.h>
> -#include <linux/platform_device.h>
> -
> -static struct clk *usb_host_clock;
> -
> -static int 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) {
> - dev_err(hcd->self.controller, "can't start %s\n",
> - 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,
> - .stop = ohci_stop,
> - .shutdown = ohci_shutdown,
> - .urb_enqueue = ohci_urb_enqueue,
> - .urb_dequeue = ohci_urb_dequeue,
> - .endpoint_disable = ohci_endpoint_disable,
> - .get_frame_number = ohci_get_frame,
> - .hub_status_data = ohci_hub_status_data,
> - .hub_control = ohci_hub_control,
> -#ifdef CONFIG_PM
> - .bus_suspend = ohci_bus_suspend,
> - .bus_resume = ohci_bus_resume,
> -#endif
> - .start_port_reset = ohci_start_port_reset,
> -};
> -
> -static int ohci_hcd_ep93xx_drv_probe(struct platform_device *pdev)
> -{
> - struct usb_hcd *hcd;
> - struct resource *res;
> - int irq;
> - int ret;
> -
> - if (usb_disabled())
> - return -ENODEV;
> -
> - irq = platform_get_irq(pdev, 0);
> - if (irq < 0)
> - return irq;
> -
> - res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> - if (!res)
> - return -ENXIO;
> -
> - hcd = usb_create_hcd(&ohci_ep93xx_hc_driver, &pdev->dev, "ep93xx");
> - if (!hcd)
> - return -ENOMEM;
> -
> - hcd->rsrc_start = res->start;
> - hcd->rsrc_len = resource_size(res);
> -
> - hcd->regs = devm_ioremap_resource(&pdev->dev, res);
> - if (IS_ERR(hcd->regs)) {
> - ret = PTR_ERR(hcd->regs);
> - goto err_put_hcd;
> - }
> -
> - usb_host_clock = devm_clk_get(&pdev->dev, NULL);
> - if (IS_ERR(usb_host_clock)) {
> - ret = PTR_ERR(usb_host_clock);
> - goto err_put_hcd;
> - }
> -
> - clk_enable(usb_host_clock);
> -
> - ohci_hcd_init(hcd_to_ohci(hcd));
> -
> - ret = usb_add_hcd(hcd, irq, 0);
> - if (ret)
> - goto err_clk_disable;
> -
> - return 0;
> -
> -err_clk_disable:
> - clk_disable(usb_host_clock);
> -err_put_hcd:
> - usb_put_hcd(hcd);
> -
> - return ret;
> -}
> -
> -static int ohci_hcd_ep93xx_drv_remove(struct platform_device *pdev)
> -{
> - struct usb_hcd *hcd = platform_get_drvdata(pdev);
> -
> - usb_remove_hcd(hcd);
> - clk_disable(usb_host_clock);
> - usb_put_hcd(hcd);
> -
> - return 0;
> -}
> -
> -#ifdef CONFIG_PM
> -static int ohci_hcd_ep93xx_drv_suspend(struct platform_device *pdev, pm_message_t state)
> -{
> - struct usb_hcd *hcd = platform_get_drvdata(pdev);
> - struct ohci_hcd *ohci = hcd_to_ohci(hcd);
> -
> - if (time_before(jiffies, ohci->next_statechange))
> - msleep(5);
> - ohci->next_statechange = jiffies;
> -
> - clk_disable(usb_host_clock);
> - return 0;
> -}
> -
> -static int ohci_hcd_ep93xx_drv_resume(struct platform_device *pdev)
> -{
> - struct usb_hcd *hcd = platform_get_drvdata(pdev);
> - struct ohci_hcd *ohci = hcd_to_ohci(hcd);
> -
> - if (time_before(jiffies, ohci->next_statechange))
> - msleep(5);
> - ohci->next_statechange = jiffies;
> -
> - clk_enable(usb_host_clock);
> -
> - ohci_resume(hcd, false);
> - return 0;
> -}
> -#endif
> -
> -
> -static struct platform_driver ohci_hcd_ep93xx_driver = {
> - .probe = ohci_hcd_ep93xx_drv_probe,
> - .remove = ohci_hcd_ep93xx_drv_remove,
> - .shutdown = usb_hcd_platform_shutdown,
> -#ifdef CONFIG_PM
> - .suspend = ohci_hcd_ep93xx_drv_suspend,
> - .resume = ohci_hcd_ep93xx_drv_resume,
> -#endif
> - .driver = {
> - .name = "ep93xx-ohci",
> - .owner = THIS_MODULE,
> - },
> -};
> -
> -MODULE_ALIAS("platform:ep93xx-ohci");
> diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
> index 604cad1..5845c82 100644
> --- a/drivers/usb/host/ohci-hcd.c
> +++ b/drivers/usb/host/ohci-hcd.c
> @@ -1204,11 +1204,6 @@ MODULE_LICENSE ("GPL");
> #define PLATFORM_DRIVER ohci_hcd_pxa27x_driver
> #endif
>
> -#ifdef CONFIG_ARCH_EP93XX
> -#include "ohci-ep93xx.c"
> -#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
> @@ -1344,12 +1339,6 @@ static int __init ohci_hcd_mod_init(void)
> goto error_exynos;
> #endif
>
> -#ifdef EP93XX_PLATFORM_DRIVER
> - retval = platform_driver_register(&EP93XX_PLATFORM_DRIVER);
> - if (retval < 0)
> - goto error_ep93xx;
> -#endif
> -
> #ifdef AT91_PLATFORM_DRIVER
> retval = platform_driver_register(&AT91_PLATFORM_DRIVER);
> if (retval < 0)
> @@ -1393,10 +1382,6 @@ static int __init ohci_hcd_mod_init(void)
> platform_driver_unregister(&AT91_PLATFORM_DRIVER);
> error_at91:
> #endif
> -#ifdef EP93XX_PLATFORM_DRIVER
> - platform_driver_unregister(&EP93XX_PLATFORM_DRIVER);
> - error_ep93xx:
> -#endif
> #ifdef EXYNOS_PLATFORM_DRIVER
> platform_driver_unregister(&EXYNOS_PLATFORM_DRIVER);
> error_exynos:
> @@ -1462,9 +1447,6 @@ static void __exit ohci_hcd_mod_exit(void)
> #ifdef AT91_PLATFORM_DRIVER
> platform_driver_unregister(&AT91_PLATFORM_DRIVER);
> #endif
> -#ifdef EP93XX_PLATFORM_DRIVER
> - platform_driver_unregister(&EP93XX_PLATFORM_DRIVER);
> -#endif
> #ifdef EXYNOS_PLATFORM_DRIVER
> platform_driver_unregister(&EXYNOS_PLATFORM_DRIVER);
> #endif
>
WARNING: multiple messages have this Message-ID (diff)
From: Ryan Mallon <rmallon@gmail.com>
To: H Hartley Sweeten <hartleys@visionengravers.com>,
linux-usb@vger.kernel.org
Cc: ARM Kernel <linux-arm-kernel@lists.infradead.org>,
Linux Kernel <linux-kernel@vger.kernel.org>,
stern@rowland.harvard.edu, gregkh@linuxfoundation.org,
olof Johansson <olof@lixom.net>
Subject: Re: [PATCH] usb: ohci: remove ep93xx bus glue platform driver
Date: Tue, 15 Oct 2013 15:41:18 +1100 [thread overview]
Message-ID: <525CC76E.6000905@gmail.com> (raw)
In-Reply-To: <201310141435.31147.hartleys@visionengravers.com>
On 15/10/13 08:35, H Hartley Sweeten wrote:
> Convert ep93xx to use the OHCI platform driver and remove the
> ohci-ep93xx bus glue driver.
>
> Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
> Cc: Alan Stern <stern@rowland.harvard.edu>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: Ryan Mallon <rmallon@gmail.com>
Cc'ed Olof, who wanted to see what the patches looked like.
I think the overall code reduction is probably worth the small increase
in arch/arm code size.
~Ryan
> ---
> arch/arm/mach-ep93xx/clock.c | 2 +-
> arch/arm/mach-ep93xx/core.c | 45 +++++++++-
> drivers/usb/host/Kconfig | 2 +-
> drivers/usb/host/ohci-ep93xx.c | 184 -----------------------------------------
> drivers/usb/host/ohci-hcd.c | 18 ----
> 5 files changed, 43 insertions(+), 208 deletions(-)
> delete mode 100644 drivers/usb/host/ohci-ep93xx.c
>
> diff --git a/arch/arm/mach-ep93xx/clock.c b/arch/arm/mach-ep93xx/clock.c
> index c95dbce..39ef3b6 100644
> --- a/arch/arm/mach-ep93xx/clock.c
> +++ b/arch/arm/mach-ep93xx/clock.c
> @@ -212,7 +212,7 @@ static struct clk_lookup clocks[] = {
> INIT_CK(NULL, "hclk", &clk_h),
> INIT_CK(NULL, "apb_pclk", &clk_p),
> INIT_CK(NULL, "pll2", &clk_pll2),
> - INIT_CK("ep93xx-ohci", NULL, &clk_usb_host),
> + INIT_CK("ohci-platform", NULL, &clk_usb_host),
> INIT_CK("ep93xx-keypad", NULL, &clk_keypad),
> INIT_CK("ep93xx-fb", NULL, &clk_video),
> INIT_CK("ep93xx-spi.0", NULL, &clk_spi),
> diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c
> index 3f12b88..5489824 100644
> --- a/arch/arm/mach-ep93xx/core.c
> +++ b/arch/arm/mach-ep93xx/core.c
> @@ -36,6 +36,7 @@
> #include <linux/export.h>
> #include <linux/irqchip/arm-vic.h>
> #include <linux/reboot.h>
> +#include <linux/usb/ohci_pdriver.h>
>
> #include <mach/hardware.h>
> #include <linux/platform_data/video-ep93xx.h>
> @@ -297,22 +298,58 @@ static struct platform_device ep93xx_rtc_device = {
> .resource = ep93xx_rtc_resource,
> };
>
> +/*************************************************************************
> + * EP93xx OHCI USB Host
> + *************************************************************************/
> +
> +static struct clk *ep93xx_ohci_host_clock;
> +
> +static int ep93xx_ohci_power_on(struct platform_device *pdev)
> +{
> + if (!ep93xx_ohci_host_clock) {
> + ep93xx_ohci_host_clock = devm_clk_get(&pdev->dev, NULL);
> + if (IS_ERR(ep93xx_ohci_host_clock))
> + return PTR_ERR(ep93xx_ohci_host_clock);
> + }
> +
> + clk_enable(ep93xx_ohci_host_clock);
> +
> + return 0;
> +}
> +
> +static void ep93xx_ohci_power_off(struct platform_device *pdev)
> +{
> + clk_disable(ep93xx_ohci_host_clock);
> +}
> +
> +static void ep93xx_ohci_power_suspend(struct platform_device *pdev)
> +{
> + ep93xx_ohci_power_off(pdev);
> +}
> +
> +static struct usb_ohci_pdata ep93xx_ohci_pdata = {
> + .power_on = ep93xx_ohci_power_on,
> + .power_off = ep93xx_ohci_power_off,
> + .power_suspend = ep93xx_ohci_power_suspend,
> +};
>
> static struct resource ep93xx_ohci_resources[] = {
> DEFINE_RES_MEM(EP93XX_USB_PHYS_BASE, 0x1000),
> DEFINE_RES_IRQ(IRQ_EP93XX_USB),
> };
>
> +static u64 ep93xx_ohci_dma_mask = DMA_BIT_MASK(32);
>
> static struct platform_device ep93xx_ohci_device = {
> - .name = "ep93xx-ohci",
> + .name = "ohci-platform",
> .id = -1,
> + .num_resources = ARRAY_SIZE(ep93xx_ohci_resources),
> + .resource = ep93xx_ohci_resources,
> .dev = {
> - .dma_mask = &ep93xx_ohci_device.dev.coherent_dma_mask,
> + .dma_mask = &ep93xx_ohci_dma_mask,
> .coherent_dma_mask = DMA_BIT_MASK(32),
> + .platform_data = &ep93xx_ohci_pdata,
> },
> - .num_resources = ARRAY_SIZE(ep93xx_ohci_resources),
> - .resource = ep93xx_ohci_resources,
> };
>
>
> diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
> index b3f20d7..2c8f2db 100644
> --- a/drivers/usb/host/Kconfig
> +++ b/drivers/usb/host/Kconfig
> @@ -472,7 +472,7 @@ config USB_CNS3XXX_OHCI
>
> config USB_OHCI_HCD_PLATFORM
> tristate "Generic OHCI driver for a platform device"
> - default n
> + default y if ARCH_EP93XX
> ---help---
> Adds an OHCI host driver for a generic platform device, which
> provides a memory space and an irq.
> diff --git a/drivers/usb/host/ohci-ep93xx.c b/drivers/usb/host/ohci-ep93xx.c
> deleted file mode 100644
> index 84a20d5..0000000
> --- a/drivers/usb/host/ohci-ep93xx.c
> +++ /dev/null
> @@ -1,184 +0,0 @@
> -/*
> - * OHCI HCD (Host Controller Driver) for USB.
> - *
> - * (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at>
> - * (C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net>
> - * (C) Copyright 2002 Hewlett-Packard Company
> - *
> - * Bus Glue for ep93xx.
> - *
> - * Written by Christopher Hoover <ch@hpl.hp.com>
> - * Based on fragments of previous driver by Russell King et al.
> - *
> - * Modified for LH7A404 from ohci-sa1111.c
> - * by Durgesh Pattamatta <pattamattad@sharpsec.com>
> - *
> - * Modified for pxa27x from ohci-lh7a404.c
> - * by Nick Bane <nick@cecomputing.co.uk> 26-8-2004
> - *
> - * Modified for ep93xx from ohci-pxa27x.c
> - * by Lennert Buytenhek <buytenh@wantstofly.org> 28-2-2006
> - * Based on an earlier driver by Ray Lehtiniemi
> - *
> - * This file is licenced under the GPL.
> - */
> -
> -#include <linux/clk.h>
> -#include <linux/device.h>
> -#include <linux/signal.h>
> -#include <linux/platform_device.h>
> -
> -static struct clk *usb_host_clock;
> -
> -static int 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) {
> - dev_err(hcd->self.controller, "can't start %s\n",
> - 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,
> - .stop = ohci_stop,
> - .shutdown = ohci_shutdown,
> - .urb_enqueue = ohci_urb_enqueue,
> - .urb_dequeue = ohci_urb_dequeue,
> - .endpoint_disable = ohci_endpoint_disable,
> - .get_frame_number = ohci_get_frame,
> - .hub_status_data = ohci_hub_status_data,
> - .hub_control = ohci_hub_control,
> -#ifdef CONFIG_PM
> - .bus_suspend = ohci_bus_suspend,
> - .bus_resume = ohci_bus_resume,
> -#endif
> - .start_port_reset = ohci_start_port_reset,
> -};
> -
> -static int ohci_hcd_ep93xx_drv_probe(struct platform_device *pdev)
> -{
> - struct usb_hcd *hcd;
> - struct resource *res;
> - int irq;
> - int ret;
> -
> - if (usb_disabled())
> - return -ENODEV;
> -
> - irq = platform_get_irq(pdev, 0);
> - if (irq < 0)
> - return irq;
> -
> - res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> - if (!res)
> - return -ENXIO;
> -
> - hcd = usb_create_hcd(&ohci_ep93xx_hc_driver, &pdev->dev, "ep93xx");
> - if (!hcd)
> - return -ENOMEM;
> -
> - hcd->rsrc_start = res->start;
> - hcd->rsrc_len = resource_size(res);
> -
> - hcd->regs = devm_ioremap_resource(&pdev->dev, res);
> - if (IS_ERR(hcd->regs)) {
> - ret = PTR_ERR(hcd->regs);
> - goto err_put_hcd;
> - }
> -
> - usb_host_clock = devm_clk_get(&pdev->dev, NULL);
> - if (IS_ERR(usb_host_clock)) {
> - ret = PTR_ERR(usb_host_clock);
> - goto err_put_hcd;
> - }
> -
> - clk_enable(usb_host_clock);
> -
> - ohci_hcd_init(hcd_to_ohci(hcd));
> -
> - ret = usb_add_hcd(hcd, irq, 0);
> - if (ret)
> - goto err_clk_disable;
> -
> - return 0;
> -
> -err_clk_disable:
> - clk_disable(usb_host_clock);
> -err_put_hcd:
> - usb_put_hcd(hcd);
> -
> - return ret;
> -}
> -
> -static int ohci_hcd_ep93xx_drv_remove(struct platform_device *pdev)
> -{
> - struct usb_hcd *hcd = platform_get_drvdata(pdev);
> -
> - usb_remove_hcd(hcd);
> - clk_disable(usb_host_clock);
> - usb_put_hcd(hcd);
> -
> - return 0;
> -}
> -
> -#ifdef CONFIG_PM
> -static int ohci_hcd_ep93xx_drv_suspend(struct platform_device *pdev, pm_message_t state)
> -{
> - struct usb_hcd *hcd = platform_get_drvdata(pdev);
> - struct ohci_hcd *ohci = hcd_to_ohci(hcd);
> -
> - if (time_before(jiffies, ohci->next_statechange))
> - msleep(5);
> - ohci->next_statechange = jiffies;
> -
> - clk_disable(usb_host_clock);
> - return 0;
> -}
> -
> -static int ohci_hcd_ep93xx_drv_resume(struct platform_device *pdev)
> -{
> - struct usb_hcd *hcd = platform_get_drvdata(pdev);
> - struct ohci_hcd *ohci = hcd_to_ohci(hcd);
> -
> - if (time_before(jiffies, ohci->next_statechange))
> - msleep(5);
> - ohci->next_statechange = jiffies;
> -
> - clk_enable(usb_host_clock);
> -
> - ohci_resume(hcd, false);
> - return 0;
> -}
> -#endif
> -
> -
> -static struct platform_driver ohci_hcd_ep93xx_driver = {
> - .probe = ohci_hcd_ep93xx_drv_probe,
> - .remove = ohci_hcd_ep93xx_drv_remove,
> - .shutdown = usb_hcd_platform_shutdown,
> -#ifdef CONFIG_PM
> - .suspend = ohci_hcd_ep93xx_drv_suspend,
> - .resume = ohci_hcd_ep93xx_drv_resume,
> -#endif
> - .driver = {
> - .name = "ep93xx-ohci",
> - .owner = THIS_MODULE,
> - },
> -};
> -
> -MODULE_ALIAS("platform:ep93xx-ohci");
> diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
> index 604cad1..5845c82 100644
> --- a/drivers/usb/host/ohci-hcd.c
> +++ b/drivers/usb/host/ohci-hcd.c
> @@ -1204,11 +1204,6 @@ MODULE_LICENSE ("GPL");
> #define PLATFORM_DRIVER ohci_hcd_pxa27x_driver
> #endif
>
> -#ifdef CONFIG_ARCH_EP93XX
> -#include "ohci-ep93xx.c"
> -#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
> @@ -1344,12 +1339,6 @@ static int __init ohci_hcd_mod_init(void)
> goto error_exynos;
> #endif
>
> -#ifdef EP93XX_PLATFORM_DRIVER
> - retval = platform_driver_register(&EP93XX_PLATFORM_DRIVER);
> - if (retval < 0)
> - goto error_ep93xx;
> -#endif
> -
> #ifdef AT91_PLATFORM_DRIVER
> retval = platform_driver_register(&AT91_PLATFORM_DRIVER);
> if (retval < 0)
> @@ -1393,10 +1382,6 @@ static int __init ohci_hcd_mod_init(void)
> platform_driver_unregister(&AT91_PLATFORM_DRIVER);
> error_at91:
> #endif
> -#ifdef EP93XX_PLATFORM_DRIVER
> - platform_driver_unregister(&EP93XX_PLATFORM_DRIVER);
> - error_ep93xx:
> -#endif
> #ifdef EXYNOS_PLATFORM_DRIVER
> platform_driver_unregister(&EXYNOS_PLATFORM_DRIVER);
> error_exynos:
> @@ -1462,9 +1447,6 @@ static void __exit ohci_hcd_mod_exit(void)
> #ifdef AT91_PLATFORM_DRIVER
> platform_driver_unregister(&AT91_PLATFORM_DRIVER);
> #endif
> -#ifdef EP93XX_PLATFORM_DRIVER
> - platform_driver_unregister(&EP93XX_PLATFORM_DRIVER);
> -#endif
> #ifdef EXYNOS_PLATFORM_DRIVER
> platform_driver_unregister(&EXYNOS_PLATFORM_DRIVER);
> #endif
>
next prev parent reply other threads:[~2013-10-15 4:41 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-14 21:35 [PATCH] usb: ohci: remove ep93xx bus glue platform driver H Hartley Sweeten
2013-10-14 21:35 ` H Hartley Sweeten
2013-10-14 22:01 ` Ryan Mallon
2013-10-14 22:01 ` Ryan Mallon
2013-10-14 22:11 ` Hartley Sweeten
2013-10-14 22:11 ` Hartley Sweeten
2013-10-15 14:46 ` Alan Stern
2013-10-15 14:46 ` Alan Stern
2013-10-15 4:41 ` Ryan Mallon [this message]
2013-10-15 4:41 ` Ryan Mallon
2013-10-15 14:48 ` Alan Stern
2013-10-15 14:48 ` Alan Stern
2013-10-15 15:50 ` Olof Johansson
2013-10-15 15:50 ` Olof Johansson
2013-10-15 20:55 ` Hartley Sweeten
2013-10-15 20:55 ` Hartley Sweeten
2013-10-16 14:36 ` Alan Stern
2013-10-16 14:36 ` Alan Stern
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=525CC76E.6000905@gmail.com \
--to=rmallon@gmail.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.