diff options
Diffstat (limited to 'target/linux/ar71xx/patches-3.3/002-USB-use-generic-platform-driver-on-ath79.patch')
-rw-r--r-- | target/linux/ar71xx/patches-3.3/002-USB-use-generic-platform-driver-on-ath79.patch | 544 |
1 files changed, 0 insertions, 544 deletions
diff --git a/target/linux/ar71xx/patches-3.3/002-USB-use-generic-platform-driver-on-ath79.patch b/target/linux/ar71xx/patches-3.3/002-USB-use-generic-platform-driver-on-ath79.patch deleted file mode 100644 index d3a3b7106a..0000000000 --- a/target/linux/ar71xx/patches-3.3/002-USB-use-generic-platform-driver-on-ath79.patch +++ /dev/null @@ -1,544 +0,0 @@ -From dbcbcdd001c5943adbb18db3b8f0dafc405559eb Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Tue, 13 Mar 2012 01:04:53 +0100 -Subject: [PATCH 03/47] USB: use generic platform driver on ath79 - -The ath79 usb driver doesn't do anything special and is now converted -to the generic ehci and ohci driver. -This was tested on a TP-Link TL-WR1043ND (AR9132) - -Acked-by: Gabor Juhos <juhosg@openwrt.org> -CC: Imre Kaloz <kaloz@openwrt.org> -CC: linux-mips@linux-mips.org -CC: Ralf Baechle <ralf@linux-mips.org> -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> ---- - arch/mips/ath79/dev-usb.c | 31 +++++- - drivers/usb/host/Kconfig | 12 ++- - drivers/usb/host/ehci-ath79.c | 208 ----------------------------------------- - drivers/usb/host/ehci-hcd.c | 5 - - drivers/usb/host/ohci-ath79.c | 151 ----------------------------- - drivers/usb/host/ohci-hcd.c | 5 - - 6 files changed, 35 insertions(+), 377 deletions(-) - delete mode 100644 drivers/usb/host/ehci-ath79.c - delete mode 100644 drivers/usb/host/ohci-ath79.c - ---- a/arch/mips/ath79/dev-usb.c -+++ b/arch/mips/ath79/dev-usb.c -@@ -17,6 +17,8 @@ - #include <linux/irq.h> - #include <linux/dma-mapping.h> - #include <linux/platform_device.h> -+#include <linux/usb/ehci_pdriver.h> -+#include <linux/usb/ohci_pdriver.h> - - #include <asm/mach-ath79/ath79.h> - #include <asm/mach-ath79/ar71xx_regs.h> -@@ -36,14 +38,19 @@ static struct resource ath79_ohci_resour - }; - - static u64 ath79_ohci_dmamask = DMA_BIT_MASK(32); -+ -+static struct usb_ohci_pdata ath79_ohci_pdata = { -+}; -+ - static struct platform_device ath79_ohci_device = { -- .name = "ath79-ohci", -+ .name = "ohci-platform", - .id = -1, - .resource = ath79_ohci_resources, - .num_resources = ARRAY_SIZE(ath79_ohci_resources), - .dev = { - .dma_mask = &ath79_ohci_dmamask, - .coherent_dma_mask = DMA_BIT_MASK(32), -+ .platform_data = &ath79_ohci_pdata, - }, - }; - -@@ -60,8 +67,20 @@ static struct resource ath79_ehci_resour - }; - - static u64 ath79_ehci_dmamask = DMA_BIT_MASK(32); -+ -+static struct usb_ehci_pdata ath79_ehci_pdata_v1 = { -+ .has_synopsys_hc_bug = 1, -+ .port_power_off = 1, -+}; -+ -+static struct usb_ehci_pdata ath79_ehci_pdata_v2 = { -+ .caps_offset = 0x100, -+ .has_tt = 1, -+ .port_power_off = 1, -+}; -+ - static struct platform_device ath79_ehci_device = { -- .name = "ath79-ehci", -+ .name = "ehci-platform", - .id = -1, - .resource = ath79_ehci_resources, - .num_resources = ARRAY_SIZE(ath79_ehci_resources), -@@ -101,7 +120,7 @@ static void __init ath79_usb_setup(void) - - ath79_ehci_resources[0].start = AR71XX_EHCI_BASE; - ath79_ehci_resources[0].end = AR71XX_EHCI_BASE + AR71XX_EHCI_SIZE - 1; -- ath79_ehci_device.name = "ar71xx-ehci"; -+ ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v1; - platform_device_register(&ath79_ehci_device); - } - -@@ -142,7 +161,7 @@ static void __init ar724x_usb_setup(void - - ath79_ehci_resources[0].start = AR724X_EHCI_BASE; - ath79_ehci_resources[0].end = AR724X_EHCI_BASE + AR724X_EHCI_SIZE - 1; -- ath79_ehci_device.name = "ar724x-ehci"; -+ ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v2; - platform_device_register(&ath79_ehci_device); - } - -@@ -159,7 +178,7 @@ static void __init ar913x_usb_setup(void - - ath79_ehci_resources[0].start = AR913X_EHCI_BASE; - ath79_ehci_resources[0].end = AR913X_EHCI_BASE + AR913X_EHCI_SIZE - 1; -- ath79_ehci_device.name = "ar913x-ehci"; -+ ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v2; - platform_device_register(&ath79_ehci_device); - } - -@@ -176,7 +195,7 @@ static void __init ar933x_usb_setup(void - - ath79_ehci_resources[0].start = AR933X_EHCI_BASE; - ath79_ehci_resources[0].end = AR933X_EHCI_BASE + AR933X_EHCI_SIZE - 1; -- ath79_ehci_device.name = "ar933x-ehci"; -+ ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v2; - platform_device_register(&ath79_ehci_device); - } - ---- a/drivers/usb/host/Kconfig -+++ b/drivers/usb/host/Kconfig -@@ -218,11 +218,15 @@ config USB_CNS3XXX_EHCI - support. - - config USB_EHCI_ATH79 -- bool "EHCI support for AR7XXX/AR9XXX SoCs" -+ bool "EHCI support for AR7XXX/AR9XXX SoCs (DEPRECATED)" - depends on USB_EHCI_HCD && (SOC_AR71XX || SOC_AR724X || SOC_AR913X || SOC_AR933X) - select USB_EHCI_ROOT_HUB_TT -+ select USB_EHCI_HCD_PLATFORM - default y - ---help--- -+ This option is deprecated now and the driver was removed, use -+ USB_EHCI_HCD_PLATFORM instead. -+ - Enables support for the built-in EHCI controller present - on the Atheros AR7XXX/AR9XXX SoCs. - -@@ -312,10 +316,14 @@ config USB_OHCI_HCD_OMAP3 - OMAP3 and later chips. - - config USB_OHCI_ATH79 -- bool "USB OHCI support for the Atheros AR71XX/AR7240 SoCs" -+ bool "USB OHCI support for the Atheros AR71XX/AR7240 SoCs (DEPRECATED)" - depends on USB_OHCI_HCD && (SOC_AR71XX || SOC_AR724X) -+ select USB_OHCI_HCD_PLATFORM - default y - help -+ This option is deprecated now and the driver was removed, use -+ USB_OHCI_HCD_PLATFORM instead. -+ - Enables support for the built-in OHCI controller present on the - Atheros AR71XX/AR7240 SoCs. - ---- a/drivers/usb/host/ehci-ath79.c -+++ /dev/null -@@ -1,208 +0,0 @@ --/* -- * Bus Glue for Atheros AR7XXX/AR9XXX built-in EHCI controller. -- * -- * Copyright (C) 2008-2011 Gabor Juhos <juhosg@openwrt.org> -- * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org> -- * -- * Parts of this file are based on Atheros' 2.6.15 BSP -- * Copyright (C) 2007 Atheros Communications, Inc. -- * -- * This program is free software; you can redistribute it and/or modify it -- * under the terms of the GNU General Public License version 2 as published -- * by the Free Software Foundation. -- */ -- --#include <linux/platform_device.h> -- --enum { -- EHCI_ATH79_IP_V1 = 0, -- EHCI_ATH79_IP_V2, --}; -- --static const struct platform_device_id ehci_ath79_id_table[] = { -- { -- .name = "ar71xx-ehci", -- .driver_data = EHCI_ATH79_IP_V1, -- }, -- { -- .name = "ar724x-ehci", -- .driver_data = EHCI_ATH79_IP_V2, -- }, -- { -- .name = "ar913x-ehci", -- .driver_data = EHCI_ATH79_IP_V2, -- }, -- { -- .name = "ar933x-ehci", -- .driver_data = EHCI_ATH79_IP_V2, -- }, -- { -- /* terminating entry */ -- }, --}; -- --MODULE_DEVICE_TABLE(platform, ehci_ath79_id_table); -- --static int ehci_ath79_init(struct usb_hcd *hcd) --{ -- struct ehci_hcd *ehci = hcd_to_ehci(hcd); -- struct platform_device *pdev = to_platform_device(hcd->self.controller); -- const struct platform_device_id *id; -- int ret; -- -- id = platform_get_device_id(pdev); -- if (!id) { -- dev_err(hcd->self.controller, "missing device id\n"); -- return -EINVAL; -- } -- -- switch (id->driver_data) { -- case EHCI_ATH79_IP_V1: -- ehci->has_synopsys_hc_bug = 1; -- -- ehci->caps = hcd->regs; -- ehci->regs = hcd->regs + -- HC_LENGTH(ehci, -- ehci_readl(ehci, &ehci->caps->hc_capbase)); -- break; -- -- case EHCI_ATH79_IP_V2: -- hcd->has_tt = 1; -- -- ehci->caps = hcd->regs + 0x100; -- ehci->regs = hcd->regs + 0x100 + -- HC_LENGTH(ehci, -- ehci_readl(ehci, &ehci->caps->hc_capbase)); -- break; -- -- default: -- BUG(); -- } -- -- dbg_hcs_params(ehci, "reset"); -- dbg_hcc_params(ehci, "reset"); -- ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params); -- ehci->sbrn = 0x20; -- -- ehci_reset(ehci); -- -- ret = ehci_init(hcd); -- if (ret) -- return ret; -- -- ehci_port_power(ehci, 0); -- -- return 0; --} -- --static const struct hc_driver ehci_ath79_hc_driver = { -- .description = hcd_name, -- .product_desc = "Atheros built-in EHCI controller", -- .hcd_priv_size = sizeof(struct ehci_hcd), -- .irq = ehci_irq, -- .flags = HCD_MEMORY | HCD_USB2, -- -- .reset = ehci_ath79_init, -- .start = ehci_run, -- .stop = ehci_stop, -- .shutdown = ehci_shutdown, -- -- .urb_enqueue = ehci_urb_enqueue, -- .urb_dequeue = ehci_urb_dequeue, -- .endpoint_disable = ehci_endpoint_disable, -- .endpoint_reset = ehci_endpoint_reset, -- -- .get_frame_number = ehci_get_frame, -- -- .hub_status_data = ehci_hub_status_data, -- .hub_control = ehci_hub_control, -- -- .relinquish_port = ehci_relinquish_port, -- .port_handed_over = ehci_port_handed_over, -- -- .clear_tt_buffer_complete = ehci_clear_tt_buffer_complete, --}; -- --static int ehci_ath79_probe(struct platform_device *pdev) --{ -- struct usb_hcd *hcd; -- struct resource *res; -- int irq; -- int ret; -- -- if (usb_disabled()) -- return -ENODEV; -- -- res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); -- if (!res) { -- dev_dbg(&pdev->dev, "no IRQ specified\n"); -- return -ENODEV; -- } -- irq = res->start; -- -- res = platform_get_resource(pdev, IORESOURCE_MEM, 0); -- if (!res) { -- dev_dbg(&pdev->dev, "no base address specified\n"); -- return -ENODEV; -- } -- -- hcd = usb_create_hcd(&ehci_ath79_hc_driver, &pdev->dev, -- dev_name(&pdev->dev)); -- if (!hcd) -- return -ENOMEM; -- -- hcd->rsrc_start = res->start; -- hcd->rsrc_len = resource_size(res); -- -- if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len, hcd_name)) { -- dev_dbg(&pdev->dev, "controller already in use\n"); -- ret = -EBUSY; -- goto err_put_hcd; -- } -- -- hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len); -- if (!hcd->regs) { -- dev_dbg(&pdev->dev, "error mapping memory\n"); -- ret = -EFAULT; -- goto err_release_region; -- } -- -- ret = usb_add_hcd(hcd, irq, IRQF_SHARED); -- if (ret) -- goto err_iounmap; -- -- return 0; -- --err_iounmap: -- iounmap(hcd->regs); -- --err_release_region: -- release_mem_region(hcd->rsrc_start, hcd->rsrc_len); --err_put_hcd: -- usb_put_hcd(hcd); -- return ret; --} -- --static int ehci_ath79_remove(struct platform_device *pdev) --{ -- struct usb_hcd *hcd = platform_get_drvdata(pdev); -- -- usb_remove_hcd(hcd); -- iounmap(hcd->regs); -- release_mem_region(hcd->rsrc_start, hcd->rsrc_len); -- usb_put_hcd(hcd); -- -- return 0; --} -- --static struct platform_driver ehci_ath79_driver = { -- .probe = ehci_ath79_probe, -- .remove = ehci_ath79_remove, -- .id_table = ehci_ath79_id_table, -- .driver = { -- .owner = THIS_MODULE, -- .name = "ath79-ehci", -- } --}; -- --MODULE_ALIAS(PLATFORM_MODULE_PREFIX "ath79-ehci"); ---- a/drivers/usb/host/ehci-hcd.c -+++ b/drivers/usb/host/ehci-hcd.c -@@ -1356,11 +1356,6 @@ MODULE_LICENSE ("GPL"); - #define PLATFORM_DRIVER s5p_ehci_driver - #endif - --#ifdef CONFIG_USB_EHCI_ATH79 --#include "ehci-ath79.c" --#define PLATFORM_DRIVER ehci_ath79_driver --#endif -- - #ifdef CONFIG_SPARC_LEON - #include "ehci-grlib.c" - #define PLATFORM_DRIVER ehci_grlib_driver ---- a/drivers/usb/host/ohci-ath79.c -+++ /dev/null -@@ -1,151 +0,0 @@ --/* -- * OHCI HCD (Host Controller Driver) for USB. -- * -- * Bus Glue for Atheros AR71XX/AR724X built-in OHCI controller. -- * -- * Copyright (C) 2008-2011 Gabor Juhos <juhosg@openwrt.org> -- * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org> -- * -- * Parts of this file are based on Atheros' 2.6.15 BSP -- * Copyright (C) 2007 Atheros Communications, Inc. -- * -- * This program is free software; you can redistribute it and/or modify it -- * under the terms of the GNU General Public License version 2 as published -- * by the Free Software Foundation. -- */ -- --#include <linux/platform_device.h> -- --static int __devinit ohci_ath79_start(struct usb_hcd *hcd) --{ -- struct ohci_hcd *ohci = hcd_to_ohci(hcd); -- int ret; -- -- ret = ohci_init(ohci); -- if (ret < 0) -- return ret; -- -- ret = ohci_run(ohci); -- if (ret < 0) -- goto err; -- -- return 0; -- --err: -- ohci_stop(hcd); -- return ret; --} -- --static const struct hc_driver ohci_ath79_hc_driver = { -- .description = hcd_name, -- .product_desc = "Atheros built-in OHCI controller", -- .hcd_priv_size = sizeof(struct ohci_hcd), -- -- .irq = ohci_irq, -- .flags = HCD_USB11 | HCD_MEMORY, -- -- .start = ohci_ath79_start, -- .stop = ohci_stop, -- .shutdown = ohci_shutdown, -- -- .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_hub_status_data, -- .hub_control = ohci_hub_control, -- .start_port_reset = ohci_start_port_reset, --}; -- --static int ohci_ath79_probe(struct platform_device *pdev) --{ -- struct usb_hcd *hcd; -- struct resource *res; -- int irq; -- int ret; -- -- if (usb_disabled()) -- return -ENODEV; -- -- res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); -- if (!res) { -- dev_dbg(&pdev->dev, "no IRQ specified\n"); -- return -ENODEV; -- } -- irq = res->start; -- -- hcd = usb_create_hcd(&ohci_ath79_hc_driver, &pdev->dev, -- dev_name(&pdev->dev)); -- if (!hcd) -- return -ENOMEM; -- -- res = platform_get_resource(pdev, IORESOURCE_MEM, 0); -- if (!res) { -- dev_dbg(&pdev->dev, "no base address specified\n"); -- ret = -ENODEV; -- goto err_put_hcd; -- } -- hcd->rsrc_start = res->start; -- hcd->rsrc_len = resource_size(res); -- -- if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len, hcd_name)) { -- dev_dbg(&pdev->dev, "controller already in use\n"); -- ret = -EBUSY; -- goto err_put_hcd; -- } -- -- hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len); -- if (!hcd->regs) { -- dev_dbg(&pdev->dev, "error mapping memory\n"); -- ret = -EFAULT; -- goto err_release_region; -- } -- -- ohci_hcd_init(hcd_to_ohci(hcd)); -- -- ret = usb_add_hcd(hcd, irq, 0); -- if (ret) -- goto err_stop_hcd; -- -- return 0; -- --err_stop_hcd: -- iounmap(hcd->regs); --err_release_region: -- release_mem_region(hcd->rsrc_start, hcd->rsrc_len); --err_put_hcd: -- usb_put_hcd(hcd); -- return ret; --} -- --static int ohci_ath79_remove(struct platform_device *pdev) --{ -- struct usb_hcd *hcd = platform_get_drvdata(pdev); -- -- usb_remove_hcd(hcd); -- iounmap(hcd->regs); -- release_mem_region(hcd->rsrc_start, hcd->rsrc_len); -- usb_put_hcd(hcd); -- -- return 0; --} -- --static struct platform_driver ohci_hcd_ath79_driver = { -- .probe = ohci_ath79_probe, -- .remove = ohci_ath79_remove, -- .shutdown = usb_hcd_platform_shutdown, -- .driver = { -- .name = "ath79-ohci", -- .owner = THIS_MODULE, -- }, --}; -- --MODULE_ALIAS(PLATFORM_MODULE_PREFIX "ath79-ohci"); ---- a/drivers/usb/host/ohci-hcd.c -+++ b/drivers/usb/host/ohci-hcd.c -@@ -1111,11 +1111,6 @@ MODULE_LICENSE ("GPL"); - #define PLATFORM_DRIVER ohci_hcd_cns3xxx_driver - #endif - --#ifdef CONFIG_USB_OHCI_ATH79 --#include "ohci-ath79.c" --#define PLATFORM_DRIVER ohci_hcd_ath79_driver --#endif -- - #ifdef CONFIG_CPU_XLR - #include "ohci-xls.c" - #define PLATFORM_DRIVER ohci_xls_driver |