diff options
Diffstat (limited to 'target/linux/ixp4xx/patches-2.6.24/402-ixp4xx_ehci_backport.patch')
-rw-r--r-- | target/linux/ixp4xx/patches-2.6.24/402-ixp4xx_ehci_backport.patch | 220 |
1 files changed, 0 insertions, 220 deletions
diff --git a/target/linux/ixp4xx/patches-2.6.24/402-ixp4xx_ehci_backport.patch b/target/linux/ixp4xx/patches-2.6.24/402-ixp4xx_ehci_backport.patch deleted file mode 100644 index f898c55d3..000000000 --- a/target/linux/ixp4xx/patches-2.6.24/402-ixp4xx_ehci_backport.patch +++ /dev/null @@ -1,220 +0,0 @@ -Index: linux-2.6.24.7/drivers/usb/host/ehci.h -=================================================================== ---- linux-2.6.24.7.orig/drivers/usb/host/ehci.h -+++ linux-2.6.24.7/drivers/usb/host/ehci.h -@@ -730,6 +730,11 @@ ehci_port_speed(struct ehci_hcd *ehci, u - #define writel_be(val, addr) out_be32((__force unsigned *)addr, val) - #endif - -+#if defined(CONFIG_ARM) && defined(CONFIG_ARCH_IXP4XX) -+#define readl_be(addr) __raw_readl((__force unsigned *)addr) -+#define writel_be(val, addr) __raw_writel(val, (__force unsigned *)addr) -+#endif -+ - static inline unsigned int ehci_readl(const struct ehci_hcd *ehci, - __u32 __iomem * regs) - { -Index: linux-2.6.24.7/drivers/usb/host/ehci-hcd.c -=================================================================== ---- linux-2.6.24.7.orig/drivers/usb/host/ehci-hcd.c -+++ linux-2.6.24.7/drivers/usb/host/ehci-hcd.c -@@ -964,6 +964,11 @@ MODULE_LICENSE ("GPL"); - #define PLATFORM_DRIVER ehci_ppc_soc_driver - #endif - -+#ifdef CONFIG_ARCH_IXP4XX -+#include "ehci-ixp4xx.c" -+#define PLATFORM_DRIVER ixp4xx_ehci_driver -+#endif -+ - #if !defined(PCI_DRIVER) && !defined(PLATFORM_DRIVER) && \ - !defined(PS3_SYSTEM_BUS_DRIVER) - #error "missing bus glue for ehci-hcd" -Index: linux-2.6.24.7/drivers/usb/host/ehci-ixp4xx.c -=================================================================== ---- /dev/null -+++ linux-2.6.24.7/drivers/usb/host/ehci-ixp4xx.c -@@ -0,0 +1,152 @@ -+/* -+ * IXP4XX EHCI Host Controller Driver -+ * -+ * Author: Vladimir Barinov <vbarinov@ru.mvista.com> -+ * -+ * Based on "ehci-fsl.c" by Randy Vinson <rvinson@mvista.com> -+ * -+ * 2007 (c) MontaVista Software, Inc. This file is licensed under -+ * the terms of the GNU General Public License version 2. This program -+ * is licensed "as is" without any warranty of any kind, whether express -+ * or implied. -+ */ -+ -+#include <linux/platform_device.h> -+ -+static int ixp4xx_ehci_init(struct usb_hcd *hcd) -+{ -+ struct ehci_hcd *ehci = hcd_to_ehci(hcd); -+ int retval = 0; -+ -+ ehci->big_endian_desc = 1; -+ ehci->big_endian_mmio = 1; -+ -+ ehci->caps = hcd->regs + 0x100; -+ ehci->regs = hcd->regs + 0x100 -+ + HC_LENGTH(ehci_readl(ehci, &ehci->caps->hc_capbase)); -+ ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params); -+ -+ ehci->is_tdi_rh_tt = 1; -+ ehci_reset(ehci); -+ -+ retval = ehci_init(hcd); -+ if (retval) -+ return retval; -+ -+ ehci_port_power(ehci, 0); -+ -+ return retval; -+} -+ -+static const struct hc_driver ixp4xx_ehci_hc_driver = { -+ .description = hcd_name, -+ .product_desc = "IXP4XX EHCI Host Controller", -+ .hcd_priv_size = sizeof(struct ehci_hcd), -+ .irq = ehci_irq, -+ .flags = HCD_MEMORY | HCD_USB2, -+ .reset = ixp4xx_ehci_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, -+ .get_frame_number = ehci_get_frame, -+ .hub_status_data = ehci_hub_status_data, -+ .hub_control = ehci_hub_control, -+#if defined(CONFIG_PM) -+ .bus_suspend = ehci_bus_suspend, -+ .bus_resume = ehci_bus_resume, -+#endif -+}; -+ -+static int ixp4xx_ehci_probe(struct platform_device *pdev) -+{ -+ struct usb_hcd *hcd; -+ const struct hc_driver *driver = &ixp4xx_ehci_hc_driver; -+ struct resource *res; -+ int irq; -+ int retval; -+ -+ if (usb_disabled()) -+ return -ENODEV; -+ -+ res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); -+ if (!res) { -+ dev_err(&pdev->dev, -+ "Found HC with no IRQ. Check %s setup!\n", -+ pdev->dev.bus_id); -+ return -ENODEV; -+ } -+ irq = res->start; -+ -+ hcd = usb_create_hcd(driver, &pdev->dev, pdev->dev.bus_id); -+ if (!hcd) { -+ retval = -ENOMEM; -+ goto fail_create_hcd; -+ } -+ -+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); -+ if (!res) { -+ dev_err(&pdev->dev, -+ "Found HC with no register addr. Check %s setup!\n", -+ pdev->dev.bus_id); -+ retval = -ENODEV; -+ goto fail_request_resource; -+ } -+ hcd->rsrc_start = res->start; -+ hcd->rsrc_len = res->end - res->start + 1; -+ -+ if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len, -+ driver->description)) { -+ dev_dbg(&pdev->dev, "controller already in use\n"); -+ retval = -EBUSY; -+ goto fail_request_resource; -+ } -+ -+ hcd->regs = ioremap_nocache(hcd->rsrc_start, hcd->rsrc_len); -+ if (hcd->regs == NULL) { -+ dev_dbg(&pdev->dev, "error mapping memory\n"); -+ retval = -EFAULT; -+ goto fail_ioremap; -+ } -+ -+ retval = usb_add_hcd(hcd, irq, IRQF_SHARED); -+ if (retval) -+ goto fail_add_hcd; -+ -+ return retval; -+ -+fail_add_hcd: -+ iounmap(hcd->regs); -+fail_ioremap: -+ release_mem_region(hcd->rsrc_start, hcd->rsrc_len); -+fail_request_resource: -+ usb_put_hcd(hcd); -+fail_create_hcd: -+ dev_err(&pdev->dev, "init %s fail, %d\n", pdev->dev.bus_id, retval); -+ return retval; -+} -+ -+static int ixp4xx_ehci_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; -+} -+ -+MODULE_ALIAS("platform:ixp4xx-ehci"); -+ -+static struct platform_driver ixp4xx_ehci_driver = { -+ .probe = ixp4xx_ehci_probe, -+ .remove = ixp4xx_ehci_remove, -+ .driver = { -+ .name = "ixp4xx-ehci", -+// .bus = &platform_bus_type -+ }, -+}; -Index: linux-2.6.24.7/drivers/usb/host/Kconfig -=================================================================== ---- linux-2.6.24.7.orig/drivers/usb/host/Kconfig -+++ linux-2.6.24.7/drivers/usb/host/Kconfig -@@ -69,12 +69,12 @@ config USB_EHCI_TT_NEWSCHED - - config USB_EHCI_BIG_ENDIAN_MMIO - bool -- depends on USB_EHCI_HCD && (PPC_CELLEB || PPC_PS3 || 440EPX) -+ depends on USB_EHCI_HCD && (PPC_CELLEB || PPC_PS3 || 440EPX || ARCH_IXP4XX) - default y - - config USB_EHCI_BIG_ENDIAN_DESC - bool -- depends on USB_EHCI_HCD && 440EPX -+ depends on USB_EHCI_HCD && (440EPX || ARCH_IXP4XX) - default y - - config USB_EHCI_FSL -Index: linux-2.6.24.7/drivers/usb/Kconfig -=================================================================== ---- linux-2.6.24.7.orig/drivers/usb/Kconfig -+++ linux-2.6.24.7/drivers/usb/Kconfig -@@ -49,6 +49,7 @@ config USB_ARCH_HAS_EHCI - boolean - default y if PPC_83xx - default y if SOC_AU1200 -+ default y if ARCH_IXP4XX - default PCI - - # ARM SA1111 chips have a non-PCI based "OHCI-compatible" USB host interface. |