+++ /dev/null
-/*
- * This file is subject to the terms and conditions of the GNU General Public
- * License.  See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Copyright (C) 2000,2012 MIPS Technologies, Inc.  All rights reserved.
- *     Douglas Leung <douglas@mips.com>
- *     Steven J. Hill <sjhill@mips.com>
- */
-#ifndef _MIPS_SEAD3INT_H
-#define _MIPS_SEAD3INT_H
-
-#include <linux/irqchip/mips-gic.h>
-
-/* CPU interrupt offsets */
-#define CPU_INT_EHCI           2
-
-/* GIC interrupt offsets */
-#define GIC_INT_EHCI           GIC_SHARED_TO_HWIRQ(5)
-
-#endif /* !(_MIPS_SEAD3INT_H) */
 
 
 static int remove_gic(void *fdt)
 {
+       const unsigned int cpu_ehci_int = 2;
        const unsigned int cpu_uart_int = 4;
        const unsigned int cpu_eth_int = 6;
-       int gic_off, cpu_off, uart_off, eth_off, err;
+       int gic_off, cpu_off, uart_off, eth_off, ehci_off, err;
        uint32_t cfg, cpu_phandle;
 
        /* leave the GIC node intact if a GIC is present */
                return err;
        }
 
+       ehci_off = fdt_node_offset_by_compatible(fdt, -1, "mti,sead3-ehci");
+       if (ehci_off < 0) {
+               pr_err("unable to find EHCI DT node: %d\n", ehci_off);
+               return ehci_off;
+       }
+
+       err = fdt_setprop_u32(fdt, ehci_off, "interrupts", cpu_ehci_int);
+       if (err) {
+               pr_err("unable to set EHCI interrupts property: %d\n", err);
+               return err;
+       }
+
        return 0;
 }
 
 
  */
 #include <linux/dma-mapping.h>
 #include <linux/init.h>
-#include <linux/irq.h>
-#include <linux/irqchip/mips-gic.h>
-#include <linux/irqdomain.h>
 #include <linux/leds.h>
 #include <linux/mtd/physmap.h>
-#include <linux/of.h>
 #include <linux/platform_device.h>
 
-#include <asm/mips-boards/sead3int.h>
-
 static struct mtd_partition sead3_mtd_partitions[] = {
        {
                .name =         "User FS",
         .id     = -1,
 };
 
-static struct resource ehci_resources[] = {
-       {
-               .start                  = 0x1b200000,
-               .end                    = 0x1b200fff,
-               .flags                  = IORESOURCE_MEM
-       }, {
-               .flags                  = IORESOURCE_IRQ
-       }
-};
-
-static u64 sead3_usbdev_dma_mask = DMA_BIT_MASK(32);
-
-static struct platform_device ehci_device = {
-       .name           = "sead3-ehci",
-       .id             = 0,
-       .dev            = {
-               .dma_mask               = &sead3_usbdev_dma_mask,
-               .coherent_dma_mask      = DMA_BIT_MASK(32)
-       },
-       .num_resources  = ARRAY_SIZE(ehci_resources),
-       .resource       = ehci_resources
-};
-
 static struct platform_device *sead3_platform_devices[] __initdata = {
        &sead3_flash,
        &pled_device,
        &fled_device,
        &sead3_led_device,
-       &ehci_device,
 };
 
 static int __init sead3_platforms_device_init(void)
 {
-       const char *intc_compat;
-       struct device_node *node;
-       struct irq_domain *irqd;
-
-       if (gic_present)
-               intc_compat = "mti,gic";
-       else
-               intc_compat = "mti,cpu-interrupt-controller";
-
-       node = of_find_compatible_node(NULL, NULL, intc_compat);
-       if (!node) {
-               pr_err("unable to find interrupt controller DT node\n");
-               return -ENODEV;
-       }
-
-       irqd = irq_find_host(node);
-       if (!irqd) {
-               pr_err("unable to find interrupt controller IRQ domain\n");
-               return -ENODEV;
-       }
-
-       if (gic_present) {
-               ehci_resources[1].start =
-                       irq_create_mapping(irqd, GIC_INT_EHCI);
-       } else {
-               ehci_resources[1].start =
-                       irq_create_mapping(irqd, CPU_INT_EHCI);
-       }
-
        return platform_add_devices(sead3_platform_devices,
                                    ARRAY_SIZE(sead3_platform_devices));
 }