From 4fea8d2283645d50dc58ab28036713f2e16e5082 Mon Sep 17 00:00:00 2001
From: blogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Fri, 2 Oct 2009 08:09:27 +0000
Subject: [PATCH] bump ifxmips to .30

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@17817 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 target/linux/ifxmips/Makefile                 |   7 +-
 .../ifxmips/base-files/etc/config/network     |  27 +++
 target/linux/ifxmips/config-2.6.27            | 191 ------------------
 .../ifxmips/{config-2.6.28 => config-2.6.30}  |  31 +--
 .../ifxmips/files/arch/mips/ifxmips/board.c   |  31 ++-
 .../ifxmips/files/arch/mips/ifxmips/clock.c   |  54 +----
 .../ifxmips/files/arch/mips/ifxmips/setup.c   |   2 +-
 .../ifxmips/files/arch/mips/ifxmips/timer.c   |   2 +-
 .../asm}/ifxmips/ifx_peripheral_definitions.h |   0
 .../mips/include/asm}/ifxmips/ifx_ssc.h       |   0
 .../include/asm}/ifxmips/ifx_ssc_defines.h    |   0
 .../mips/include/asm}/ifxmips/ifxmips.h       |   0
 .../mips/include/asm}/ifxmips/ifxmips_dma.h   |   0
 .../mips/include/asm}/ifxmips/ifxmips_ebu.h   |   0
 .../mips/include/asm}/ifxmips/ifxmips_gpio.h  |   0
 .../mips/include/asm}/ifxmips/ifxmips_gptu.h  |   0
 .../mips/include/asm}/ifxmips/ifxmips_irq.h   |   2 +
 .../mips/include/asm}/ifxmips/ifxmips_led.h   |   0
 .../mips/include/asm}/ifxmips/ifxmips_mei.h   |   0
 .../include/asm}/ifxmips/ifxmips_mei_app.h    |   0
 .../asm}/ifxmips/ifxmips_mei_app_ioctl.h      |   0
 .../include/asm}/ifxmips/ifxmips_mei_bsp.h    |   0
 .../include/asm}/ifxmips/ifxmips_mei_ioctl.h  |   0
 .../include/asm}/ifxmips/ifxmips_mei_linux.h  |   0
 .../mips/include/asm}/ifxmips/ifxmips_pmu.h   |   6 +-
 .../mips/include/asm}/ifxmips/ifxmips_prom.h  |   0
 .../arch/mips/include/asm/mach-ifxmips/cgu.h  |  64 ++++++
 .../mips/include/asm}/mach-ifxmips/gpio.h     |   2 +-
 .../mips/include/asm}/mach-ifxmips/irq.h      |   0
 .../mips/include/asm}/mach-ifxmips/war.h      |   0
 .../ifxmips/files/arch/mips/pci/pci-ifxmips.c |   2 +-
 .../ifxmips/files/drivers/mtd/maps/ifxmips.c  |   6 +-
 .../ifxmips/files/drivers/net/ifxmips_mii0.c  |  23 +--
 .../files/drivers/watchdog/ifxmips_wdt.c      |   2 +-
 .../include/asm-mips/ifxmips/ifxmips_cgu.h    |  29 ---
 .../010-mips_clocksource_init_war.patch       |  33 ---
 .../ifxmips/patches-2.6.27/100-board.patch    |  72 -------
 .../ifxmips/patches-2.6.27/110-drivers.patch  | 152 --------------
 .../ifxmips/patches-2.6.27/160-cfi-swap.patch |  13 --
 .../ifxmips/patches-2.6.27/170-dma_hack.patch |  11 -
 .../patches-2.6.27/200-genirq_fix.patch       |  12 --
 .../patches-2.6.28/000-mips-bad-intctl.patch  |  34 ----
 .../ifxmips/patches-2.6.28/100-board.patch    |  71 -------
 .../ifxmips/patches-2.6.28/110-drivers.patch  | 152 --------------
 .../ifxmips/patches-2.6.28/160-cfi-swap.patch |  13 --
 .../ifxmips/patches-2.6.28/170-dma_hack.patch |  11 -
 .../patches-2.6.28/200-genirq_fix.patch       |  12 --
 .../000-mips-bad-intctl.patch                 |  20 +-
 .../010-mips_clocksource_init_war.patch       |   8 +-
 .../ifxmips/patches-2.6.30/100-board.patch    |  77 +++++++
 .../ifxmips/patches-2.6.30/110-drivers.patch  | 162 +++++++++++++++
 .../ifxmips/patches-2.6.30/160-cfi-swap.patch |  15 ++
 .../ifxmips/patches-2.6.30/170-dma_hack.patch |  13 ++
 .../patches-2.6.30/200-genirq_fix.patch       |  14 ++
 .../ifxmips/patches-2.6.30/201-atm.patch      |  26 +++
 .../ifxmips/patches/000-mips-bad-intctl.patch |  34 ----
 .../010-mips_clocksource_init_war.patch       |  65 ------
 target/linux/ifxmips/patches/100-board.patch  |  72 -------
 .../linux/ifxmips/patches/110-drivers.patch   | 149 --------------
 .../linux/ifxmips/patches/160-cfi-swap.patch  |  13 --
 .../linux/ifxmips/patches/170-dma_hack.patch  |  11 -
 61 files changed, 500 insertions(+), 1246 deletions(-)
 create mode 100644 target/linux/ifxmips/base-files/etc/config/network
 delete mode 100644 target/linux/ifxmips/config-2.6.27
 rename target/linux/ifxmips/{config-2.6.28 => config-2.6.30} (87%)
 rename target/linux/ifxmips/files/{include/asm-mips => arch/mips/include/asm}/ifxmips/ifx_peripheral_definitions.h (100%)
 rename target/linux/ifxmips/files/{include/asm-mips => arch/mips/include/asm}/ifxmips/ifx_ssc.h (100%)
 rename target/linux/ifxmips/files/{include/asm-mips => arch/mips/include/asm}/ifxmips/ifx_ssc_defines.h (100%)
 rename target/linux/ifxmips/files/{include/asm-mips => arch/mips/include/asm}/ifxmips/ifxmips.h (100%)
 rename target/linux/ifxmips/files/{include/asm-mips => arch/mips/include/asm}/ifxmips/ifxmips_dma.h (100%)
 rename target/linux/ifxmips/files/{include/asm-mips => arch/mips/include/asm}/ifxmips/ifxmips_ebu.h (100%)
 rename target/linux/ifxmips/files/{include/asm-mips => arch/mips/include/asm}/ifxmips/ifxmips_gpio.h (100%)
 rename target/linux/ifxmips/files/{include/asm-mips => arch/mips/include/asm}/ifxmips/ifxmips_gptu.h (100%)
 rename target/linux/ifxmips/files/{include/asm-mips => arch/mips/include/asm}/ifxmips/ifxmips_irq.h (98%)
 rename target/linux/ifxmips/files/{include/asm-mips => arch/mips/include/asm}/ifxmips/ifxmips_led.h (100%)
 rename target/linux/ifxmips/files/{include/asm-mips => arch/mips/include/asm}/ifxmips/ifxmips_mei.h (100%)
 rename target/linux/ifxmips/files/{include/asm-mips => arch/mips/include/asm}/ifxmips/ifxmips_mei_app.h (100%)
 rename target/linux/ifxmips/files/{include/asm-mips => arch/mips/include/asm}/ifxmips/ifxmips_mei_app_ioctl.h (100%)
 rename target/linux/ifxmips/files/{include/asm-mips => arch/mips/include/asm}/ifxmips/ifxmips_mei_bsp.h (100%)
 rename target/linux/ifxmips/files/{include/asm-mips => arch/mips/include/asm}/ifxmips/ifxmips_mei_ioctl.h (100%)
 rename target/linux/ifxmips/files/{include/asm-mips => arch/mips/include/asm}/ifxmips/ifxmips_mei_linux.h (100%)
 rename target/linux/ifxmips/files/{include/asm-mips => arch/mips/include/asm}/ifxmips/ifxmips_pmu.h (90%)
 rename target/linux/ifxmips/files/{include/asm-mips => arch/mips/include/asm}/ifxmips/ifxmips_prom.h (100%)
 create mode 100644 target/linux/ifxmips/files/arch/mips/include/asm/mach-ifxmips/cgu.h
 rename target/linux/ifxmips/files/{include/asm-mips => arch/mips/include/asm}/mach-ifxmips/gpio.h (98%)
 rename target/linux/ifxmips/files/{include/asm-mips => arch/mips/include/asm}/mach-ifxmips/irq.h (100%)
 rename target/linux/ifxmips/files/{include/asm-mips => arch/mips/include/asm}/mach-ifxmips/war.h (100%)
 delete mode 100644 target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_cgu.h
 delete mode 100644 target/linux/ifxmips/patches-2.6.27/010-mips_clocksource_init_war.patch
 delete mode 100644 target/linux/ifxmips/patches-2.6.27/100-board.patch
 delete mode 100644 target/linux/ifxmips/patches-2.6.27/110-drivers.patch
 delete mode 100644 target/linux/ifxmips/patches-2.6.27/160-cfi-swap.patch
 delete mode 100644 target/linux/ifxmips/patches-2.6.27/170-dma_hack.patch
 delete mode 100644 target/linux/ifxmips/patches-2.6.27/200-genirq_fix.patch
 delete mode 100644 target/linux/ifxmips/patches-2.6.28/000-mips-bad-intctl.patch
 delete mode 100644 target/linux/ifxmips/patches-2.6.28/100-board.patch
 delete mode 100644 target/linux/ifxmips/patches-2.6.28/110-drivers.patch
 delete mode 100644 target/linux/ifxmips/patches-2.6.28/160-cfi-swap.patch
 delete mode 100644 target/linux/ifxmips/patches-2.6.28/170-dma_hack.patch
 delete mode 100644 target/linux/ifxmips/patches-2.6.28/200-genirq_fix.patch
 rename target/linux/ifxmips/{patches-2.6.27 => patches-2.6.30}/000-mips-bad-intctl.patch (53%)
 rename target/linux/ifxmips/{patches-2.6.28 => patches-2.6.30}/010-mips_clocksource_init_war.patch (73%)
 create mode 100644 target/linux/ifxmips/patches-2.6.30/100-board.patch
 create mode 100644 target/linux/ifxmips/patches-2.6.30/110-drivers.patch
 create mode 100644 target/linux/ifxmips/patches-2.6.30/160-cfi-swap.patch
 create mode 100644 target/linux/ifxmips/patches-2.6.30/170-dma_hack.patch
 create mode 100644 target/linux/ifxmips/patches-2.6.30/200-genirq_fix.patch
 create mode 100644 target/linux/ifxmips/patches-2.6.30/201-atm.patch
 delete mode 100644 target/linux/ifxmips/patches/000-mips-bad-intctl.patch
 delete mode 100644 target/linux/ifxmips/patches/010-mips_clocksource_init_war.patch
 delete mode 100644 target/linux/ifxmips/patches/100-board.patch
 delete mode 100644 target/linux/ifxmips/patches/110-drivers.patch
 delete mode 100644 target/linux/ifxmips/patches/160-cfi-swap.patch
 delete mode 100644 target/linux/ifxmips/patches/170-dma_hack.patch

diff --git a/target/linux/ifxmips/Makefile b/target/linux/ifxmips/Makefile
index eee0d44e9..7f27b55d3 100644
--- a/target/linux/ifxmips/Makefile
+++ b/target/linux/ifxmips/Makefile
@@ -9,12 +9,13 @@ include $(TOPDIR)/rules.mk
 ARCH:=mips
 BOARD:=ifxmips
 BOARDNAME:=Infineon Mips
-FEATURES:=squashfs jffs2
+FEATURES:=squashfs jffs2 atm
 
-LINUX_VERSION:=2.6.28.10
+LINUX_VERSION:=2.6.30.5
 
 include $(INCLUDE_DIR)/target.mk
-DEFAULT_PACKAGES+=uboot-ifxmips hostapd-mini
+DEFAULT_PACKAGES+=uboot-ifxmips kmod-pppoa ppp-mod-pppoa linux-atm atm-tools br2684ctl kmod-ifxmips-atm dwc_usb
+
 
 define Target/Description
 	Build firmware images for Infineon Mips Controllers
diff --git a/target/linux/ifxmips/base-files/etc/config/network b/target/linux/ifxmips/base-files/etc/config/network
new file mode 100644
index 000000000..8f5624b4a
--- /dev/null
+++ b/target/linux/ifxmips/base-files/etc/config/network
@@ -0,0 +1,27 @@
+config interface loopback
+	option ifname   lo
+	option proto    static
+	option ipaddr   127.0.0.1
+	option netmask  255.0.0.0
+
+config interface lan
+	option ifname   eth0
+	option type     bridge
+	option proto    static
+	option ipaddr   192.168.1.1
+	option netmask  255.255.255.0
+
+config atm-bridge
+	option unit		0
+	option encaps	llc
+	option vpi		1
+	option vci		32
+	option payload	bridged # some ISPs need this set to 'routed'
+
+config interface wan
+	option ifname	nas0
+	option proto	pppoe
+	option username ""
+	option password	""
+	option defaultroute 0
+	option unit 1
diff --git a/target/linux/ifxmips/config-2.6.27 b/target/linux/ifxmips/config-2.6.27
deleted file mode 100644
index 8003af5a0..000000000
--- a/target/linux/ifxmips/config-2.6.27
+++ /dev/null
@@ -1,191 +0,0 @@
-CONFIG_32BIT=y
-# CONFIG_64BIT is not set
-# CONFIG_8139TOO is not set
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-CONFIG_ARCH_SUPPORTS_OPROFILE=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-# CONFIG_ATM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_BCM47XX is not set
-CONFIG_BITREVERSE=y
-CONFIG_CEVT_R4K=y
-CONFIG_CLASSIC_RCU=y
-CONFIG_CMDLINE="console=ttyS0,9600 rootfstype=squashfs,jffs2"
-CONFIG_CPU_BIG_ENDIAN=y
-CONFIG_CPU_HAS_LLSC=y
-CONFIG_CPU_HAS_PREFETCH=y
-CONFIG_CPU_HAS_SYNC=y
-# CONFIG_CPU_LITTLE_ENDIAN is not set
-# CONFIG_CPU_LOONGSON2 is not set
-CONFIG_CPU_MIPS32=y
-# CONFIG_CPU_MIPS32_R1 is not set
-CONFIG_CPU_MIPS32_R2=y
-# CONFIG_CPU_MIPS64_R1 is not set
-# CONFIG_CPU_MIPS64_R2 is not set
-CONFIG_CPU_MIPSR2=y
-# CONFIG_CPU_NEVADA is not set
-# CONFIG_CPU_R10000 is not set
-# CONFIG_CPU_R3000 is not set
-# CONFIG_CPU_R4300 is not set
-# CONFIG_CPU_R4X00 is not set
-# CONFIG_CPU_R5000 is not set
-# CONFIG_CPU_R5432 is not set
-# CONFIG_CPU_R6000 is not set
-# CONFIG_CPU_R8000 is not set
-# CONFIG_CPU_RM7000 is not set
-# CONFIG_CPU_RM9000 is not set
-# CONFIG_CPU_SB1 is not set
-CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
-CONFIG_CPU_SUPPORTS_HIGHMEM=y
-# CONFIG_CPU_TX39XX is not set
-# CONFIG_CPU_TX49XX is not set
-# CONFIG_CPU_VR41XX is not set
-CONFIG_CSRC_R4K=y
-CONFIG_DEVPORT=y
-# CONFIG_DM9000 is not set
-CONFIG_DMA_NEED_PCI_MAP_STATE=y
-CONFIG_DMA_NONCOHERENT=y
-CONFIG_EARLY_PRINTK=y
-CONFIG_FS_POSIX_ACL=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-# CONFIG_GENERIC_FIND_FIRST_BIT is not set
-CONFIG_GENERIC_FIND_NEXT_BIT=y
-CONFIG_GENERIC_GPIO=y
-# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set
-CONFIG_GPIO_DEVICE=y
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAVE_ARCH_KGDB=y
-# CONFIG_HAVE_ARCH_TRACEHOOK is not set
-# CONFIG_HAVE_CLK is not set
-# CONFIG_HAVE_DMA_ATTRS is not set
-# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
-# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
-CONFIG_HAVE_IDE=y
-# CONFIG_HAVE_IOREMAP_PROT is not set
-# CONFIG_HAVE_KPROBES is not set
-# CONFIG_HAVE_KRETPROBES is not set
-CONFIG_HAVE_OPROFILE=y
-CONFIG_HAVE_STD_PC_SERIAL_PORT=y
-# CONFIG_HIGH_RES_TIMERS is not set
-CONFIG_HW_HAS_PCI=y
-CONFIG_HW_RANDOM=y
-# CONFIG_I2C is not set
-# CONFIG_IDE is not set
-CONFIG_IFXMIPS=y
-CONFIG_IFXMIPS_EEPROM=y
-CONFIG_IFXMIPS_GPIO_RST_BTN=y
-# CONFIG_IFXMIPS_MEI is not set
-CONFIG_IFXMIPS_MII0=y
-# CONFIG_IFXMIPS_PROM_ASC0 is not set
-CONFIG_IFXMIPS_PROM_ASC1=y
-CONFIG_IFXMIPS_SSC=y
-CONFIG_IFXMIPS_WDT=y
-# CONFIG_IMAGE_CMDLINE_HACK is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_IRQ_CPU=y
-CONFIG_KALLSYMS=y
-CONFIG_LEDS_GPIO=y
-CONFIG_LEDS_IFXMIPS=y
-# CONFIG_LEMOTE_FULONG is not set
-# CONFIG_MACH_ALCHEMY is not set
-# CONFIG_MACH_DECSTATION is not set
-# CONFIG_MACH_JAZZ is not set
-# CONFIG_MACH_TX39XX is not set
-# CONFIG_MACH_TX49XX is not set
-# CONFIG_MACH_VR41XX is not set
-# CONFIG_MIKROTIK_RB532 is not set
-CONFIG_MIPS=y
-# CONFIG_MIPS_COBALT is not set
-CONFIG_MIPS_L1_CACHE_SHIFT=5
-# CONFIG_MIPS_MACHINE is not set
-# CONFIG_MIPS_MALTA is not set
-CONFIG_MIPS_MT_DISABLED=y
-# CONFIG_MIPS_MT_SMP is not set
-# CONFIG_MIPS_MT_SMTC is not set
-# CONFIG_MIPS_SIM is not set
-# CONFIG_MIPS_VPE_LOADER is not set
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_CFI_INTELEXT is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_IFXMIPS=y
-# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
-# CONFIG_NATSEMI is not set
-CONFIG_NF_CT_ACCT=y
-# CONFIG_NO_IOPORT is not set
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_PCI=y
-CONFIG_PCI_DOMAINS=y
-# CONFIG_PCSPKR_PLATFORM is not set
-# CONFIG_PMC_MSP is not set
-# CONFIG_PMC_YOSEMITE is not set
-# CONFIG_PNX8550_JBS is not set
-# CONFIG_PNX8550_STB810 is not set
-# CONFIG_PROBE_INITRD_HEADER is not set
-# CONFIG_R6040 is not set
-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
-# CONFIG_SCSI_WAIT_SCAN is not set
-# CONFIG_SERIAL_8250 is not set
-CONFIG_SERIAL_IFXMIPS=y
-# CONFIG_SGI_IP22 is not set
-# CONFIG_SGI_IP27 is not set
-# CONFIG_SGI_IP28 is not set
-# CONFIG_SGI_IP32 is not set
-# CONFIG_SIBYTE_BIGSUR is not set
-# CONFIG_SIBYTE_CARMEL is not set
-# CONFIG_SIBYTE_CRHINE is not set
-# CONFIG_SIBYTE_CRHONE is not set
-# CONFIG_SIBYTE_LITTLESUR is not set
-# CONFIG_SIBYTE_RHONE is not set
-# CONFIG_SIBYTE_SENTOSA is not set
-# CONFIG_SIBYTE_SWARM is not set
-CONFIG_SWAP_IO_SPACE=y
-CONFIG_SYS_HAS_CPU_MIPS32_R1=y
-CONFIG_SYS_HAS_CPU_MIPS32_R2=y
-CONFIG_SYS_HAS_EARLY_PRINTK=y
-CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
-CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
-CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
-CONFIG_SYS_SUPPORTS_MULTITHREADING=y
-# CONFIG_TC35815 is not set
-# CONFIG_TICK_ONESHOT is not set
-CONFIG_TRAD_SIGNALS=y
-# CONFIG_USB is not set
-# CONFIG_USB_CDC_COMPOSITE is not set
-# CONFIG_USB_DWC_HCD is not set
-# CONFIG_USB_EHCI_HCD is not set
-# CONFIG_USB_ETH is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_GADGET_AMD5536UDC is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_ATMEL_USBA is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_FSL_USB2 is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_M66592 is not set
-# CONFIG_USB_GADGET_MUSB_HDRC is not set
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_PXA25X is not set
-# CONFIG_USB_GADGET_PXA27X is not set
-# CONFIG_USB_GADGET_S3C2410 is not set
-# CONFIG_USB_G_PRINTER is not set
-# CONFIG_USB_G_SERIAL is not set
-# CONFIG_USB_MIDI_GADGET is not set
-CONFIG_USB_SUPPORT=y
-# CONFIG_USB_UHCI_HCD is not set
-# CONFIG_USB_ZERO is not set
-# CONFIG_VGASTATE is not set
-# CONFIG_VIA_RHINE is not set
-# CONFIG_VIDEO_MEDIA is not set
-CONFIG_ZONE_DMA_FLAG=0
diff --git a/target/linux/ifxmips/config-2.6.28 b/target/linux/ifxmips/config-2.6.30
similarity index 87%
rename from target/linux/ifxmips/config-2.6.28
rename to target/linux/ifxmips/config-2.6.30
index a59c46ee8..7eefc1532 100644
--- a/target/linux/ifxmips/config-2.6.28
+++ b/target/linux/ifxmips/config-2.6.30
@@ -1,6 +1,5 @@
 CONFIG_32BIT=y
 # CONFIG_64BIT is not set
-# CONFIG_8139TOO is not set
 # CONFIG_ARCH_HAS_ILOG2_U32 is not set
 # CONFIG_ARCH_HAS_ILOG2_U64 is not set
 CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -9,11 +8,15 @@ CONFIG_ARCH_SUPPORTS_OPROFILE=y
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
 CONFIG_BASE_SMALL=0
 # CONFIG_BCM47XX is not set
+# CONFIG_BINARY_PRINTF is not set
 CONFIG_BITREVERSE=y
+# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set
+# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set
 CONFIG_CEVT_R4K=y
-CONFIG_CLASSIC_RCU=y
+CONFIG_CEVT_R4K_LIB=y
 CONFIG_CMDLINE="console=ttyS0,9600 rootfstype=squashfs,jffs2"
 CONFIG_CPU_BIG_ENDIAN=y
+# CONFIG_CPU_CAVIUM_OCTEON is not set
 CONFIG_CPU_HAS_LLSC=y
 CONFIG_CPU_HAS_PREFETCH=y
 CONFIG_CPU_HAS_SYNC=y
@@ -44,6 +47,8 @@ CONFIG_CPU_SUPPORTS_HIGHMEM=y
 # CONFIG_CPU_TX49XX is not set
 # CONFIG_CPU_VR41XX is not set
 CONFIG_CSRC_R4K=y
+CONFIG_CSRC_R4K_LIB=y
+CONFIG_DECOMPRESS_LZMA=y
 CONFIG_DEVPORT=y
 # CONFIG_DM9000 is not set
 CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -52,10 +57,10 @@ CONFIG_EARLY_PRINTK=y
 CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
 CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_GENERIC_FIND_LAST_BIT=y
 CONFIG_GENERIC_FIND_NEXT_BIT=y
 CONFIG_GENERIC_GPIO=y
 CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
-CONFIG_GPIO_DEVICE=y
 CONFIG_HARDWARE_WATCHPOINTS=y
 CONFIG_HAS_DMA=y
 CONFIG_HAS_IOMEM=y
@@ -63,7 +68,9 @@ CONFIG_HAS_IOPORT=y
 CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
 CONFIG_HAVE_IDE=y
+CONFIG_HAVE_MLOCK=y
 CONFIG_HAVE_OPROFILE=y
+CONFIG_HAVE_STD_PC_SERIAL_PORT=y
 # CONFIG_HIGH_RES_TIMERS is not set
 CONFIG_HW_HAS_PCI=y
 CONFIG_HW_RANDOM=y
@@ -71,17 +78,15 @@ CONFIG_HZ=250
 # CONFIG_HZ_100 is not set
 CONFIG_HZ_250=y
 # CONFIG_I2C is not set
-# CONFIG_IDE is not set
 CONFIG_IFXMIPS=y
-CONFIG_IFXMIPS_EEPROM=y
+# CONFIG_IFXMIPS_EEPROM is not set
 CONFIG_IFXMIPS_GPIO_RST_BTN=y
 # CONFIG_IFXMIPS_MEI is not set
 CONFIG_IFXMIPS_MII0=y
 # CONFIG_IFXMIPS_PROM_ASC0 is not set
 CONFIG_IFXMIPS_PROM_ASC1=y
-CONFIG_IFXMIPS_SSC=y
+# CONFIG_IFXMIPS_SSC is not set
 CONFIG_IFXMIPS_WDT=y
-# CONFIG_IMAGE_CMDLINE_HACK is not set
 CONFIG_INITRAMFS_SOURCE=""
 CONFIG_IRQ_CPU=y
 CONFIG_KALLSYMS=y
@@ -90,7 +95,6 @@ CONFIG_LEDS_IFXMIPS=y
 # CONFIG_LEMOTE_FULONG is not set
 # CONFIG_MACH_ALCHEMY is not set
 # CONFIG_MACH_DECSTATION is not set
-# CONFIG_MACH_EMMA is not set
 # CONFIG_MACH_JAZZ is not set
 # CONFIG_MACH_TX39XX is not set
 # CONFIG_MACH_TX49XX is not set
@@ -98,6 +102,7 @@ CONFIG_LEDS_IFXMIPS=y
 # CONFIG_MIKROTIK_RB532 is not set
 CONFIG_MIPS=y
 # CONFIG_MIPS_COBALT is not set
+# CONFIG_MIPS_FPU_EMU is not set
 CONFIG_MIPS_L1_CACHE_SHIFT=5
 # CONFIG_MIPS_MACHINE is not set
 # CONFIG_MIPS_MALTA is not set
@@ -105,6 +110,7 @@ CONFIG_MIPS_MT_DISABLED=y
 # CONFIG_MIPS_MT_SMP is not set
 # CONFIG_MIPS_MT_SMTC is not set
 # CONFIG_MIPS_SIM is not set
+# CONFIG_MIPS_VPE_LOADER is not set
 CONFIG_MTD_CFI_ADV_OPTIONS=y
 CONFIG_MTD_CFI_GEOMETRY=y
 # CONFIG_MTD_CFI_INTELEXT is not set
@@ -125,8 +131,8 @@ CONFIG_PCI_DOMAINS=y
 # CONFIG_PNX8550_JBS is not set
 # CONFIG_PNX8550_STB810 is not set
 # CONFIG_PROBE_INITRD_HEADER is not set
-# CONFIG_R6040 is not set
-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+# CONFIG_PROM_EMU is not set
+CONFIG_SCHED_OMIT_FRAME_POINTER=y
 # CONFIG_SCSI_DMA is not set
 # CONFIG_SERIAL_8250 is not set
 CONFIG_SERIAL_IFXMIPS=y
@@ -142,6 +148,7 @@ CONFIG_SERIAL_IFXMIPS=y
 # CONFIG_SIBYTE_RHONE is not set
 # CONFIG_SIBYTE_SENTOSA is not set
 # CONFIG_SIBYTE_SWARM is not set
+# CONFIG_SLOW_WORK is not set
 CONFIG_SWAP_IO_SPACE=y
 CONFIG_SYS_HAS_CPU_MIPS32_R1=y
 CONFIG_SYS_HAS_CPU_MIPS32_R2=y
@@ -149,9 +156,9 @@ CONFIG_SYS_HAS_EARLY_PRINTK=y
 CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
 CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
 CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
+CONFIG_SYS_SUPPORTS_MULTITHREADING=y
 # CONFIG_TC35815 is not set
+CONFIG_TRACING_SUPPORT=y
 CONFIG_TRAD_SIGNALS=y
 CONFIG_USB_SUPPORT=y
-# CONFIG_VGASTATE is not set
-# CONFIG_VIA_RHINE is not set
 CONFIG_ZONE_DMA_FLAG=0
diff --git a/target/linux/ifxmips/files/arch/mips/ifxmips/board.c b/target/linux/ifxmips/files/arch/mips/ifxmips/board.c
index 2a803ff85..0f05aed05 100644
--- a/target/linux/ifxmips/files/arch/mips/ifxmips/board.c
+++ b/target/linux/ifxmips/files/arch/mips/ifxmips/board.c
@@ -34,6 +34,7 @@
 #include <asm/bootinfo.h>
 #include <asm/irq.h>
 #include <asm/ifxmips/ifxmips.h>
+#include <asm/ifxmips/ifxmips_irq.h>
 
 #define MAX_BOARD_NAME_LEN		32
 #define MAX_IFXMIPS_DEVS		9
@@ -132,6 +133,7 @@ static struct gpio_led arv4519_gpio_leds[] = {
 	{ .name = "ifx:green:internet", .gpio = 5, .active_low = 1, },
 	{ .name = "ifx:red:internet", .gpio = 8, .active_low = 1, },
 	{ .name = "ifx:green:wlan", .gpio = 6, .active_low = 1, },
+	{ .name = "ifx:green:usbpwr", .gpio = 14, .active_low = 1, },
 	{ .name = "ifx:green:usb", .gpio = 19, .active_low = 1, },
 };
 
@@ -146,18 +148,41 @@ static struct platform_device ifxmips_gpio_leds = {
 };
 #endif
 
+static struct resource dwc_usb_res[] = {
+	{
+		.name = "dwc_usb_membase",
+		.flags = IORESOURCE_MEM,
+		.start = 0x1E101000,
+		.end = 0x1E101FFF
+	},
+	{
+		.name = "dwc_usb_irq",
+		.flags = IORESOURCE_IRQ,
+		.start = IFXMIPS_USB_INT,
+	}
+};
+
+static struct platform_device dwc_usb =
+{
+	.id = 0,
+	.name = "dwc_usb",
+	.resource = dwc_usb_res,
+	.num_resources = ARRAY_SIZE(dwc_usb_res),
+};
+
 struct platform_device *easy50712_devs[] = {
 	&ifxmips_led, &ifxmips_gpio, &ifxmips_mii,
-	&ifxmips_mtd, &ifxmips_wdt, &ifxmips_gpio_dev
+	&ifxmips_mtd, &ifxmips_wdt, &ifxmips_gpio_dev, &dwc_usb
 };
 
 struct platform_device *easy4010_devs[] = {
 	&ifxmips_led, &ifxmips_gpio, &ifxmips_mii,
-	&ifxmips_mtd, &ifxmips_wdt, &ifxmips_gpio_dev
+	&ifxmips_mtd, &ifxmips_wdt, &ifxmips_gpio_dev, &dwc_usb
 };
 
 struct platform_device *arv5419_devs[] = {
-	&ifxmips_gpio, &ifxmips_mii, &ifxmips_mtd, &ifxmips_wdt,
+	&ifxmips_gpio, &ifxmips_mii, &ifxmips_mtd,
+	&ifxmips_gpio_dev, &ifxmips_wdt, &dwc_usb,
 #ifdef CONFIG_LEDS_GPIO
 	&ifxmips_gpio_leds,
 #endif
diff --git a/target/linux/ifxmips/files/arch/mips/ifxmips/clock.c b/target/linux/ifxmips/files/arch/mips/ifxmips/clock.c
index d44bf44e4..a8d198479 100644
--- a/target/linux/ifxmips/files/arch/mips/ifxmips/clock.c
+++ b/target/linux/ifxmips/files/arch/mips/ifxmips/clock.c
@@ -30,40 +30,7 @@
 #include <asm/div64.h>
 #include <linux/errno.h>
 #include <asm/ifxmips/ifxmips.h>
-
-#define BASIC_INPUT_CLOCK_FREQUENCY_1   35328000
-#define BASIC_INPUT_CLOCK_FREQUENCY_2   36000000
-
-#define BASIS_INPUT_CRYSTAL_USB         12000000
-
-#define GET_BITS(x, msb, lsb)           (((x) & ((1 << ((msb) + 1)) - 1)) >> (lsb))
-
-
-#define CGU_PLL0_PHASE_DIVIDER_ENABLE   (ifxmips_r32(IFXMIPS_CGU_PLL0_CFG) & (1 << 31))
-#define CGU_PLL0_BYPASS                 (ifxmips_r32(IFXMIPS_CGU_PLL0_CFG) & (1 << 30))
-#define CGU_PLL0_CFG_DSMSEL             (ifxmips_r32(IFXMIPS_CGU_PLL0_CFG) & (1 << 28))
-#define CGU_PLL0_CFG_FRAC_EN            (ifxmips_r32(IFXMIPS_CGU_PLL0_CFG) & (1 << 27))
-#define CGU_PLL1_SRC                    (ifxmips_r32(IFXMIPS_CGU_PLL1_CFG) & (1 << 31))
-#define CGU_PLL1_BYPASS                 (ifxmips_r32(IFXMIPS_CGU_PLL1_CFG) & (1 << 30))
-#define CGU_PLL1_CFG_DSMSEL             (ifxmips_r32(IFXMIPS_CGU_PLL1_CFG) & (1 << 28))
-#define CGU_PLL1_CFG_FRAC_EN            (ifxmips_r32(IFXMIPS_CGU_PLL1_CFG) & (1 << 27))
-#define CGU_PLL2_PHASE_DIVIDER_ENABLE   (ifxmips_r32(IFXMIPS_CGU_PLL2_CFG) & (1 << 20))
-#define CGU_PLL2_BYPASS                 (ifxmips_r32(IFXMIPS_CGU_PLL2_CFG) & (1 << 19))
-#define CGU_SYS_FPI_SEL                 (1 << 6)
-#define CGU_SYS_DDR_SEL                 0x3
-#define CGU_PLL0_SRC                    (1 << 29)
-
-#define CGU_PLL0_CFG_PLLK               GET_BITS(*IFXMIPS_CGU_PLL0_CFG, 26, 17)
-#define CGU_PLL0_CFG_PLLN               GET_BITS(*IFXMIPS_CGU_PLL0_CFG, 12, 6)
-#define CGU_PLL0_CFG_PLLM               GET_BITS(*IFXMIPS_CGU_PLL0_CFG, 5, 2)
-#define CGU_PLL1_CFG_PLLK               GET_BITS(*IFXMIPS_CGU_PLL1_CFG, 26, 17)
-#define CGU_PLL1_CFG_PLLN               GET_BITS(*IFXMIPS_CGU_PLL1_CFG, 12, 6)
-#define CGU_PLL1_CFG_PLLM               GET_BITS(*IFXMIPS_CGU_PLL1_CFG, 5, 2)
-#define CGU_PLL2_SRC                    GET_BITS(*IFXMIPS_CGU_PLL2_CFG, 18, 17)
-#define CGU_PLL2_CFG_INPUT_DIV          GET_BITS(*IFXMIPS_CGU_PLL2_CFG, 16, 13)
-#define CGU_PLL2_CFG_PLLN               GET_BITS(*IFXMIPS_CGU_PLL2_CFG, 12, 6)
-#define CGU_PLL2_CFG_PLLM               GET_BITS(*IFXMIPS_CGU_PLL2_CFG, 5, 2)
-#define CGU_IF_CLK_PCI_CLK              GET_BITS(*IFXMIPS_CGU_IF_CLK, 23, 20)
+#include <asm/mach-ifxmips/cgu.h>
 
 static unsigned int cgu_get_pll0_fdiv(void);
 unsigned int ifxmips_clocks[] = {CLOCK_167M, CLOCK_133M, CLOCK_111M, CLOCK_83M };
@@ -185,14 +152,6 @@ unsigned int cgu_get_io_region_clock(void)
 	}
 }
 
-unsigned int cgu_get_fpi_bus_clock(int fpi)
-{
-	unsigned int ret = cgu_get_io_region_clock();
-	if ((fpi == 2) && (ifxmips_r32(IFXMIPS_CGU_SYS) & CGU_SYS_FPI_SEL))
-		ret >>= 1;
-	return ret;
-}
-
 void cgu_setup_pci_clk(int external_clock)
 {
 	/* set clock to 33Mhz */
@@ -200,7 +159,7 @@ void cgu_setup_pci_clk(int external_clock)
 		IFXMIPS_CGU_IFCCR);
 	ifxmips_w32(ifxmips_r32(IFXMIPS_CGU_IFCCR) | 0x800000,
 		IFXMIPS_CGU_IFCCR);
-	if (external_clock) 	{
+	if (external_clock) {
 		ifxmips_w32(ifxmips_r32(IFXMIPS_CGU_IFCCR) & ~(1 << 16),
 			IFXMIPS_CGU_IFCCR);
 		ifxmips_w32((1 << 30), IFXMIPS_CGU_PCICR);
@@ -211,6 +170,15 @@ void cgu_setup_pci_clk(int external_clock)
 	}
 }
 
+unsigned int cgu_get_fpi_bus_clock(int fpi)
+{
+	unsigned int ret = cgu_get_io_region_clock();
+	if ((fpi == 2) && (ifxmips_r32(IFXMIPS_CGU_SYS) & CGU_SYS_FPI_SEL))
+		ret >>= 1;
+	return ret;
+}
+EXPORT_SYMBOL(cgu_get_fpi_bus_clock);
+
 unsigned int ifxmips_get_cpu_hz(void)
 {
 	unsigned int ddr_clock = DDR_HZ;
diff --git a/target/linux/ifxmips/files/arch/mips/ifxmips/setup.c b/target/linux/ifxmips/files/arch/mips/ifxmips/setup.c
index e571862a4..2ba0592f6 100644
--- a/target/linux/ifxmips/files/arch/mips/ifxmips/setup.c
+++ b/target/linux/ifxmips/files/arch/mips/ifxmips/setup.c
@@ -30,7 +30,7 @@
 #include <asm/ifxmips/ifxmips.h>
 #include <asm/ifxmips/ifxmips_irq.h>
 #include <asm/ifxmips/ifxmips_pmu.h>
-#include <asm/ifxmips/ifxmips_cgu.h>
+#include <asm/mach-ifxmips/cgu.h>
 #include <asm/ifxmips/ifxmips_prom.h>
 
 static unsigned int r4k_offset;
diff --git a/target/linux/ifxmips/files/arch/mips/ifxmips/timer.c b/target/linux/ifxmips/files/arch/mips/ifxmips/timer.c
index 8d8d431a8..d05df2283 100644
--- a/target/linux/ifxmips/files/arch/mips/ifxmips/timer.c
+++ b/target/linux/ifxmips/files/arch/mips/ifxmips/timer.c
@@ -15,7 +15,7 @@
 
 #include <asm/ifxmips/ifxmips.h>
 #include <asm/ifxmips/ifxmips_irq.h>
-#include <asm/ifxmips/ifxmips_cgu.h>
+#include <asm/mach-ifxmips/cgu.h>
 #include <asm/ifxmips/ifxmips_gptu.h>
 #include <asm/ifxmips/ifxmips_pmu.h>
 
diff --git a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifx_peripheral_definitions.h b/target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifx_peripheral_definitions.h
similarity index 100%
rename from target/linux/ifxmips/files/include/asm-mips/ifxmips/ifx_peripheral_definitions.h
rename to target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifx_peripheral_definitions.h
diff --git a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifx_ssc.h b/target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifx_ssc.h
similarity index 100%
rename from target/linux/ifxmips/files/include/asm-mips/ifxmips/ifx_ssc.h
rename to target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifx_ssc.h
diff --git a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifx_ssc_defines.h b/target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifx_ssc_defines.h
similarity index 100%
rename from target/linux/ifxmips/files/include/asm-mips/ifxmips/ifx_ssc_defines.h
rename to target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifx_ssc_defines.h
diff --git a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips.h b/target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips.h
similarity index 100%
rename from target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips.h
rename to target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips.h
diff --git a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_dma.h b/target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_dma.h
similarity index 100%
rename from target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_dma.h
rename to target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_dma.h
diff --git a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_ebu.h b/target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_ebu.h
similarity index 100%
rename from target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_ebu.h
rename to target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_ebu.h
diff --git a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_gpio.h b/target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_gpio.h
similarity index 100%
rename from target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_gpio.h
rename to target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_gpio.h
diff --git a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_gptu.h b/target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_gptu.h
similarity index 100%
rename from target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_gptu.h
rename to target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_gptu.h
diff --git a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_irq.h b/target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_irq.h
similarity index 98%
rename from target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_irq.h
rename to target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_irq.h
index c7bd373fc..f84fdcb12 100644
--- a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_irq.h
+++ b/target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_irq.h
@@ -63,6 +63,8 @@
 #define IFXMIPS_DMA_CH18_INT		(INT_NUM_IM2_IRL0 + 16)
 #define IFXMIPS_DMA_CH19_INT		(INT_NUM_IM2_IRL0 + 21)
 
+#define IFXMIPS_PPE_MBOX_INT		(INT_NUM_IM2_IRL0 + 24)
+
 #define IFXMIPS_USB_INT			(INT_NUM_IM4_IRL0 + 22)
 #define IFXMIPS_USB_OC_INT		(INT_NUM_IM4_IRL0 + 23)
 
diff --git a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_led.h b/target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_led.h
similarity index 100%
rename from target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_led.h
rename to target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_led.h
diff --git a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_mei.h b/target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_mei.h
similarity index 100%
rename from target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_mei.h
rename to target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_mei.h
diff --git a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_mei_app.h b/target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_mei_app.h
similarity index 100%
rename from target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_mei_app.h
rename to target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_mei_app.h
diff --git a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_mei_app_ioctl.h b/target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_mei_app_ioctl.h
similarity index 100%
rename from target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_mei_app_ioctl.h
rename to target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_mei_app_ioctl.h
diff --git a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_mei_bsp.h b/target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_mei_bsp.h
similarity index 100%
rename from target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_mei_bsp.h
rename to target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_mei_bsp.h
diff --git a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_mei_ioctl.h b/target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_mei_ioctl.h
similarity index 100%
rename from target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_mei_ioctl.h
rename to target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_mei_ioctl.h
diff --git a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_mei_linux.h b/target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_mei_linux.h
similarity index 100%
rename from target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_mei_linux.h
rename to target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_mei_linux.h
diff --git a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_pmu.h b/target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_pmu.h
similarity index 90%
rename from target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_pmu.h
rename to target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_pmu.h
index c1ba6cbfb..dd1f0d6f1 100644
--- a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_pmu.h
+++ b/target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_pmu.h
@@ -18,8 +18,10 @@
 #ifndef _IFXMIPS_PMU_H__
 #define _IFXMIPS_PMU_H__
 
-#define IFXMIPS_PMU_PWDCR_DMA		0x20
-#define IFXMIPS_PMU_PWDCR_LED		0x800
+
+#define IFXMIPS_PMU_PWDCR_DMA		0x0020
+#define IFXMIPS_PMU_PWDCR_USB		0x8041
+#define IFXMIPS_PMU_PWDCR_LED		0x0800
 #define IFXMIPS_PMU_PWDCR_GPT		0x1000
 #define IFXMIPS_PMU_PWDCR_PPE		0x2000
 #define IFXMIPS_PMU_PWDCR_FPI		0x4000
diff --git a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_prom.h b/target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_prom.h
similarity index 100%
rename from target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_prom.h
rename to target/linux/ifxmips/files/arch/mips/include/asm/ifxmips/ifxmips_prom.h
diff --git a/target/linux/ifxmips/files/arch/mips/include/asm/mach-ifxmips/cgu.h b/target/linux/ifxmips/files/arch/mips/include/asm/mach-ifxmips/cgu.h
new file mode 100644
index 000000000..9ee287b42
--- /dev/null
+++ b/target/linux/ifxmips/files/arch/mips/include/asm/mach-ifxmips/cgu.h
@@ -0,0 +1,64 @@
+/*
+ *   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., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ *
+ *   Copyright (C) 2007 John Crispin <blogic@openwrt.org> 
+ */
+
+#ifndef _IFXMIPS_CGU_H__
+#define _IFXMIPS_CGU_H__
+
+#define BASIC_INPUT_CLOCK_FREQUENCY_1   35328000
+#define BASIC_INPUT_CLOCK_FREQUENCY_2   36000000
+
+#define BASIS_INPUT_CRYSTAL_USB         12000000
+
+#define GET_BITS(x, msb, lsb)           (((x) & ((1 << ((msb) + 1)) - 1)) >> (lsb))
+
+#define CGU_PLL0_PHASE_DIVIDER_ENABLE   (ifxmips_r32(IFXMIPS_CGU_PLL0_CFG) & (1 << 31))
+#define CGU_PLL0_BYPASS                 (ifxmips_r32(IFXMIPS_CGU_PLL0_CFG) & (1 << 30))
+#define CGU_PLL0_CFG_DSMSEL             (ifxmips_r32(IFXMIPS_CGU_PLL0_CFG) & (1 << 28))
+#define CGU_PLL0_CFG_FRAC_EN            (ifxmips_r32(IFXMIPS_CGU_PLL0_CFG) & (1 << 27))
+#define CGU_PLL1_SRC                    (ifxmips_r32(IFXMIPS_CGU_PLL1_CFG) & (1 << 31))
+#define CGU_PLL1_BYPASS                 (ifxmips_r32(IFXMIPS_CGU_PLL1_CFG) & (1 << 30))
+#define CGU_PLL1_CFG_DSMSEL             (ifxmips_r32(IFXMIPS_CGU_PLL1_CFG) & (1 << 28))
+#define CGU_PLL1_CFG_FRAC_EN            (ifxmips_r32(IFXMIPS_CGU_PLL1_CFG) & (1 << 27))
+#define CGU_PLL2_PHASE_DIVIDER_ENABLE   (ifxmips_r32(IFXMIPS_CGU_PLL2_CFG) & (1 << 20))
+#define CGU_PLL2_BYPASS                 (ifxmips_r32(IFXMIPS_CGU_PLL2_CFG) & (1 << 19))
+#define CGU_SYS_FPI_SEL                 (1 << 6)
+#define CGU_SYS_DDR_SEL                 0x3
+#define CGU_PLL0_SRC                    (1 << 29)
+
+#define CGU_PLL0_CFG_PLLK               GET_BITS(*IFXMIPS_CGU_PLL0_CFG, 26, 17)
+#define CGU_PLL0_CFG_PLLN               GET_BITS(*IFXMIPS_CGU_PLL0_CFG, 12, 6)
+#define CGU_PLL0_CFG_PLLM               GET_BITS(*IFXMIPS_CGU_PLL0_CFG, 5, 2)
+#define CGU_PLL1_CFG_PLLK               GET_BITS(*IFXMIPS_CGU_PLL1_CFG, 26, 17)
+#define CGU_PLL1_CFG_PLLN               GET_BITS(*IFXMIPS_CGU_PLL1_CFG, 12, 6)
+#define CGU_PLL1_CFG_PLLM               GET_BITS(*IFXMIPS_CGU_PLL1_CFG, 5, 2)
+#define CGU_PLL2_SRC                    GET_BITS(*IFXMIPS_CGU_PLL2_CFG, 18, 17)
+#define CGU_PLL2_CFG_INPUT_DIV          GET_BITS(*IFXMIPS_CGU_PLL2_CFG, 16, 13)
+#define CGU_PLL2_CFG_PLLN               GET_BITS(*IFXMIPS_CGU_PLL2_CFG, 12, 6)
+#define CGU_PLL2_CFG_PLLM               GET_BITS(*IFXMIPS_CGU_PLL2_CFG, 5, 2)
+#define CGU_IF_CLK_PCI_CLK              GET_BITS(*IFXMIPS_CGU_IF_CLK, 23, 20)
+
+
+unsigned int cgu_get_mips_clock(int cpu);
+unsigned int cgu_get_io_region_clock(void);
+unsigned int cgu_get_fpi_bus_clock(int fpi);
+void cgu_setup_pci_clk(int internal_clock);
+unsigned int ifxmips_get_ddr_hz(void);
+unsigned int ifxmips_get_fpi_hz(void);
+unsigned int ifxmips_get_cpu_hz(void);
+
+#endif
diff --git a/target/linux/ifxmips/files/include/asm-mips/mach-ifxmips/gpio.h b/target/linux/ifxmips/files/arch/mips/include/asm/mach-ifxmips/gpio.h
similarity index 98%
rename from target/linux/ifxmips/files/include/asm-mips/mach-ifxmips/gpio.h
rename to target/linux/ifxmips/files/arch/mips/include/asm/mach-ifxmips/gpio.h
index 92adc4848..fa70ebcac 100644
--- a/target/linux/ifxmips/files/include/asm-mips/mach-ifxmips/gpio.h
+++ b/target/linux/ifxmips/files/arch/mips/include/asm/mach-ifxmips/gpio.h
@@ -99,7 +99,7 @@ static inline void gpio_set_value_cansleep(unsigned gpio, int value)
 
 static inline int gpio_is_valid(int number)
 {
-	return ((unsigned)number) < 8;
+	return ((unsigned)number) < 16;
 }
 
 #endif
diff --git a/target/linux/ifxmips/files/include/asm-mips/mach-ifxmips/irq.h b/target/linux/ifxmips/files/arch/mips/include/asm/mach-ifxmips/irq.h
similarity index 100%
rename from target/linux/ifxmips/files/include/asm-mips/mach-ifxmips/irq.h
rename to target/linux/ifxmips/files/arch/mips/include/asm/mach-ifxmips/irq.h
diff --git a/target/linux/ifxmips/files/include/asm-mips/mach-ifxmips/war.h b/target/linux/ifxmips/files/arch/mips/include/asm/mach-ifxmips/war.h
similarity index 100%
rename from target/linux/ifxmips/files/include/asm-mips/mach-ifxmips/war.h
rename to target/linux/ifxmips/files/arch/mips/include/asm/mach-ifxmips/war.h
diff --git a/target/linux/ifxmips/files/arch/mips/pci/pci-ifxmips.c b/target/linux/ifxmips/files/arch/mips/pci/pci-ifxmips.c
index d492dada5..ac81ee3bf 100644
--- a/target/linux/ifxmips/files/arch/mips/pci/pci-ifxmips.c
+++ b/target/linux/ifxmips/files/arch/mips/pci/pci-ifxmips.c
@@ -6,7 +6,7 @@
 #include <linux/mm.h>
 #include <asm/ifxmips/ifxmips.h>
 #include <asm/ifxmips/ifxmips_irq.h>
-#include <asm/ifxmips/ifxmips_cgu.h>
+#include <asm/mach-ifxmips/cgu.h>
 #include <asm/addrspace.h>
 #include <linux/vmalloc.h>
 
diff --git a/target/linux/ifxmips/files/drivers/mtd/maps/ifxmips.c b/target/linux/ifxmips/files/drivers/mtd/maps/ifxmips.c
index a2d30cd0b..6498d12cb 100644
--- a/target/linux/ifxmips/files/drivers/mtd/maps/ifxmips.c
+++ b/target/linux/ifxmips/files/drivers/mtd/maps/ifxmips.c
@@ -134,8 +134,8 @@ int find_uImage_size(unsigned long start_offset)
 	unsigned long magic;
 	unsigned long temp;
 	ifxmips_copy_from(&ifxmips_map, &magic, start_offset, 4);
-	if (!(ntohl(magic) == 0x27051956)) {
-		printk(KERN_INFO "ifxmips_mtd: invalid magic (0x%08X) of kernel at 0x%08lx \n", ntohl(magic), start_offset);
+	if (le32_to_cpu(magic) != 0x56190527) {
+		printk(KERN_INFO "ifxmips_mtd: invalid magic (0x%08X) of kernel at 0x%08lx \n", le32_to_cpu(magic), start_offset);
 		return 0;
 	}
 	ifxmips_copy_from(&ifxmips_map, &temp, start_offset + 12, 4);
@@ -159,7 +159,7 @@ int detect_squashfs_partition(unsigned long start_offset)
 {
 	unsigned long temp;
 	ifxmips_copy_from(&ifxmips_map, &temp, start_offset, 4);
-	return temp == SQUASHFS_MAGIC;
+	return le32_to_cpu(temp) == SQUASHFS_MAGIC;
 }
 
 static int ifxmips_mtd_probe(struct platform_device *dev)
diff --git a/target/linux/ifxmips/files/drivers/net/ifxmips_mii0.c b/target/linux/ifxmips/files/drivers/net/ifxmips_mii0.c
index 1185a1537..0fddc631b 100644
--- a/target/linux/ifxmips/files/drivers/net/ifxmips_mii0.c
+++ b/target/linux/ifxmips/files/drivers/net/ifxmips_mii0.c
@@ -79,7 +79,7 @@ EXPORT_SYMBOL(ifxmips_read_mdio);
 
 int ifxmips_ifxmips_mii_open(struct net_device *dev)
 {
-	struct ifxmips_mii_priv *priv = (struct ifxmips_mii_priv *)dev->priv;
+	struct ifxmips_mii_priv *priv = (struct ifxmips_mii_priv *)netdev_priv(dev);
 	struct dma_device_info *dma_dev = priv->dma_device;
 	int i;
 
@@ -93,7 +93,7 @@ int ifxmips_ifxmips_mii_open(struct net_device *dev)
 
 int ifxmips_mii_release(struct net_device *dev)
 {
-	struct ifxmips_mii_priv *priv = (struct ifxmips_mii_priv *)dev->priv;
+	struct ifxmips_mii_priv *priv = (struct ifxmips_mii_priv *)netdev_priv(dev);
 	struct dma_device_info *dma_dev = priv->dma_device;
 	int i;
 
@@ -105,7 +105,7 @@ int ifxmips_mii_release(struct net_device *dev)
 
 int ifxmips_mii_hw_receive(struct net_device *dev, struct dma_device_info *dma_dev)
 {
-	struct ifxmips_mii_priv *priv = (struct ifxmips_mii_priv *)dev->priv;
+	struct ifxmips_mii_priv *priv = (struct ifxmips_mii_priv *)netdev_priv(dev);
 	unsigned char *buf = NULL;
 	struct sk_buff *skb = NULL;
 	int len = 0;
@@ -154,7 +154,7 @@ ifxmips_mii_hw_receive_err_exit:
 int ifxmips_mii_hw_tx(char *buf, int len, struct net_device *dev)
 {
 	int ret = 0;
-	struct ifxmips_mii_priv *priv = dev->priv;
+	struct ifxmips_mii_priv *priv = netdev_priv(dev);
 	struct dma_device_info *dma_dev = priv->dma_device;
 	ret = dma_device_write(dma_dev, buf, len, priv->skb);
 	return ret;
@@ -164,7 +164,7 @@ int ifxmips_mii_tx(struct sk_buff *skb, struct net_device *dev)
 {
 	int len;
 	char *data;
-	struct ifxmips_mii_priv *priv = dev->priv;
+	struct ifxmips_mii_priv *priv = netdev_priv(dev);
 	struct dma_device_info *dma_dev = priv->dma_device;
 
 	len = skb->len < ETH_ZLEN ? ETH_ZLEN : skb->len;
@@ -192,7 +192,7 @@ int ifxmips_mii_tx(struct sk_buff *skb, struct net_device *dev)
 void ifxmips_mii_tx_timeout(struct net_device *dev)
 {
 	int i;
-	struct ifxmips_mii_priv *priv = (struct ifxmips_mii_priv *)dev->priv;
+	struct ifxmips_mii_priv *priv = (struct ifxmips_mii_priv *)netdev_priv(dev);
 
 	priv->stats.tx_errors++;
 	for (i = 0; i < priv->dma_device->max_tx_chan_num; i++)
@@ -261,14 +261,13 @@ void ifxmips_etop_dma_buffer_free(unsigned char *dataptr, void *opt)
 
 static struct net_device_stats *ifxmips_get_stats(struct net_device *dev)
 {
-	return (struct net_device_stats *)dev->priv;
+	return &((struct ifxmips_mii_priv *)netdev_priv(dev))->stats;
 }
 
 static int ifxmips_mii_dev_init(struct net_device *dev)
 {
 	int i;
-	struct ifxmips_mii_priv *priv;
-
+	struct ifxmips_mii_priv *priv = (struct ifxmips_mii_priv *)netdev_priv(dev);
 	ether_setup(dev);
 	printk(KERN_INFO "ifxmips_mii0: %s is up\n", dev->name);
 	dev->open = ifxmips_ifxmips_mii_open;
@@ -277,8 +276,7 @@ static int ifxmips_mii_dev_init(struct net_device *dev)
 	dev->get_stats = ifxmips_get_stats;
 	dev->tx_timeout = ifxmips_mii_tx_timeout;
 	dev->watchdog_timeo = 10 * HZ;
-	memset(dev->priv, 0, sizeof(struct ifxmips_mii_priv));
-	priv = dev->priv;
+	memset(priv, 0, sizeof(struct ifxmips_mii_priv));
 	priv->dma_device = dma_device_reserve("PPE");
 	if (!priv->dma_device) {
 		BUG();
@@ -347,14 +345,13 @@ out:
 
 static int ifxmips_mii_remove(struct platform_device *dev)
 {
-	struct ifxmips_mii_priv *priv = (struct ifxmips_mii_priv *)ifxmips_mii0_dev->priv;
+	struct ifxmips_mii_priv *priv = (struct ifxmips_mii_priv *)netdev_priv(ifxmips_mii0_dev);
 
 	printk(KERN_INFO "ifxmips_mii0: ifxmips_mii0 cleanup\n");
 
 	dma_device_unregister(priv->dma_device);
 	dma_device_release(priv->dma_device);
 	kfree(priv->dma_device);
-	kfree(ifxmips_mii0_dev->priv);
 	unregister_netdev(ifxmips_mii0_dev);
 	return 0;
 }
diff --git a/target/linux/ifxmips/files/drivers/watchdog/ifxmips_wdt.c b/target/linux/ifxmips/files/drivers/watchdog/ifxmips_wdt.c
index e62d2fec3..d75eeeac2 100644
--- a/target/linux/ifxmips/files/drivers/watchdog/ifxmips_wdt.c
+++ b/target/linux/ifxmips/files/drivers/watchdog/ifxmips_wdt.c
@@ -25,7 +25,7 @@
 #include <linux/platform_device.h>
 #include <linux/uaccess.h>
 
-#include <asm/ifxmips/ifxmips_cgu.h>
+#include <asm/mach-ifxmips/cgu.h>
 #include <asm/ifxmips/ifxmips.h>
 
 #define IFXMIPS_WDT_PW1			0x00BE0000
diff --git a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_cgu.h b/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_cgu.h
deleted file mode 100644
index 899bbbca3..000000000
--- a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_cgu.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- *   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., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- *
- *   Copyright (C) 2007 John Crispin <blogic@openwrt.org> 
- */
-#ifndef _IFXMIPS_CGU_H__
-#define _IFXMIPS_CGU_H__
-
-unsigned int cgu_get_mips_clock(int cpu);
-unsigned int cgu_get_io_region_clock(void);
-unsigned int cgu_get_fpi_bus_clock(int fpi);
-void cgu_setup_pci_clk(int internal_clock);
-unsigned int ifxmips_get_ddr_hz(void);
-unsigned int ifxmips_get_fpi_hz(void);
-unsigned int ifxmips_get_cpu_hz(void);
-
-#endif
diff --git a/target/linux/ifxmips/patches-2.6.27/010-mips_clocksource_init_war.patch b/target/linux/ifxmips/patches-2.6.27/010-mips_clocksource_init_war.patch
deleted file mode 100644
index ac44c308f..000000000
--- a/target/linux/ifxmips/patches-2.6.27/010-mips_clocksource_init_war.patch
+++ /dev/null
@@ -1,33 +0,0 @@
---- a/arch/mips/kernel/cevt-r4k.c
-+++ b/arch/mips/kernel/cevt-r4k.c
-@@ -21,6 +21,22 @@
- 
- #ifndef CONFIG_MIPS_MT_SMTC
- 
-+/*
-+ * Compare interrupt can be routed and latched outside the core,
-+ * so a single execution hazard barrier may not be enough to give
-+ * it time to clear as seen in the Cause register.  4 time the
-+ * pipeline depth seems reasonably conservative, and empirically
-+ * works better in configurations with high CPU/bus clock ratios.
-+ */
-+
-+#define compare_change_hazard() \
-+	do { \
-+		irq_disable_hazard(); \
-+		irq_disable_hazard(); \
-+		irq_disable_hazard(); \
-+		irq_disable_hazard(); \
-+	} while (0)
-+
- static int mips_next_event(unsigned long delta,
-                            struct clock_event_device *evt)
- {
-@@ -30,6 +46,7 @@ static int mips_next_event(unsigned long
- 	cnt = read_c0_count();
- 	cnt += delta;
- 	write_c0_compare(cnt);
-+	compare_change_hazard();
- 	res = ((int)(read_c0_count() - cnt) > 0) ? -ETIME : 0;
- 	return res;
- }
diff --git a/target/linux/ifxmips/patches-2.6.27/100-board.patch b/target/linux/ifxmips/patches-2.6.27/100-board.patch
deleted file mode 100644
index b45c1c466..000000000
--- a/target/linux/ifxmips/patches-2.6.27/100-board.patch
+++ /dev/null
@@ -1,72 +0,0 @@
---- a/arch/mips/Kconfig
-+++ b/arch/mips/Kconfig
-@@ -78,6 +78,23 @@ config MIPS_COBALT
- 	select SYS_SUPPORTS_LITTLE_ENDIAN
- 	select GENERIC_HARDIRQS_NO__DO_IRQ
- 
-+config IFXMIPS
-+	bool "Infineon Twinpass, Danube, Amazon-SE"
-+	select DMA_NONCOHERENT
-+	select IRQ_CPU
-+	select CEVT_R4K
-+	select CSRC_R4K
-+	select SYS_HAS_CPU_MIPS32_R1
-+	select SYS_HAS_CPU_MIPS32_R2
-+	select HAVE_STD_PC_SERIAL_PORT
-+	select SYS_SUPPORTS_BIG_ENDIAN
-+	select SYS_SUPPORTS_32BIT_KERNEL
-+	select SYS_SUPPORTS_MULTITHREADING
-+	select SYS_HAS_EARLY_PRINTK
-+	select HW_HAS_PCI
-+	select GENERIC_GPIO
-+	select SWAP_IO_SPACE
-+
- config MACH_DECSTATION
- 	bool "DECstations"
- 	select BOOT_ELF32
-@@ -607,6 +624,7 @@ source "arch/mips/sgi-ip27/Kconfig"
- source "arch/mips/sibyte/Kconfig"
- source "arch/mips/txx9/Kconfig"
- source "arch/mips/vr41xx/Kconfig"
-+source "arch/mips/ifxmips/Kconfig"
- 
- endmenu
- 
---- a/arch/mips/Makefile
-+++ b/arch/mips/Makefile
-@@ -283,6 +283,13 @@ cflags-$(CONFIG_MIPS_COBALT)	+= -Iinclud
- load-$(CONFIG_MIPS_COBALT)	+= 0xffffffff80080000
- 
- #
-+# Infineon IFXMIPS
-+#
-+core-$(CONFIG_IFXMIPS) += arch/mips/ifxmips/
-+cflags-$(CONFIG_IFXMIPS)   += -Iinclude/asm-mips/mach-ifxmips
-+load-$(CONFIG_IFXMIPS) += 0xffffffff80002000
-+
-+#
- # DECstation family
- #
- core-$(CONFIG_MACH_DECSTATION)	+= arch/mips/dec/
---- a/include/asm-mips/bootinfo.h
-+++ b/include/asm-mips/bootinfo.h
-@@ -57,6 +57,12 @@
- #define	MACH_MIKROTIK_RB532	0	/* Mikrotik RouterBoard 532 	*/
- #define MACH_MIKROTIK_RB532A	1	/* Mikrotik RouterBoard 532A 	*/
- 
-+/*
-+ * Valid machtype for group IFXMIPS
-+ */
-+#define MACH_GROUP_IFXMIPS     29
-+#define MACH_INFINEON_IFXMIPS  0
-+
- #define CL_SIZE			COMMAND_LINE_SIZE
- 
- extern char *system_type;
---- a/arch/mips/pci/Makefile
-+++ b/arch/mips/pci/Makefile
-@@ -51,3 +51,4 @@ obj-$(CONFIG_VICTOR_MPC30X)	+= fixup-mpc
- obj-$(CONFIG_ZAO_CAPCELLA)	+= fixup-capcella.o
- obj-$(CONFIG_WR_PPMC)		+= fixup-wrppmc.o
- obj-$(CONFIG_MIKROTIK_RB532)	+= pci-rc32434.o ops-rc32434.o fixup-rc32434.o
-+obj-$(CONFIG_IFXMIPS)		+= pci-ifxmips.o ops-ifxmips.o
diff --git a/target/linux/ifxmips/patches-2.6.27/110-drivers.patch b/target/linux/ifxmips/patches-2.6.27/110-drivers.patch
deleted file mode 100644
index 9382c8b39..000000000
--- a/target/linux/ifxmips/patches-2.6.27/110-drivers.patch
+++ /dev/null
@@ -1,152 +0,0 @@
---- a/drivers/char/Makefile
-+++ b/drivers/char/Makefile
-@@ -112,6 +112,10 @@ obj-$(CONFIG_PS3_FLASH)		+= ps3flash.o
- obj-$(CONFIG_JS_RTC)		+= js-rtc.o
- js-rtc-y = rtc.o
- 
-+obj-$(CONFIG_IFXMIPS_SSC)  += ifxmips_ssc.o
-+obj-$(CONFIG_IFXMIPS_EEPROM)   += ifxmips_eeprom.o
-+obj-$(CONFIG_IFXMIPS_MEI)  += ifxmips_mei_core.o
-+
- # Files generated that shall be removed upon make clean
- clean-files := consolemap_deftbl.c defkeymap.c
- 
---- a/drivers/mtd/maps/Makefile
-+++ b/drivers/mtd/maps/Makefile
-@@ -56,6 +56,7 @@ obj-$(CONFIG_MTD_WALNUT)        += walnu
- obj-$(CONFIG_MTD_H720X)		+= h720x-flash.o
- obj-$(CONFIG_MTD_SBC8240)	+= sbc8240.o
- obj-$(CONFIG_MTD_NOR_TOTO)	+= omap-toto-flash.o
-+obj-$(CONFIG_MTD_IFXMIPS)	+= ifxmips.o
- obj-$(CONFIG_MTD_IXP4XX)	+= ixp4xx.o
- obj-$(CONFIG_MTD_IXP2000)	+= ixp2000.o
- obj-$(CONFIG_MTD_WRSBC8260)	+= wr_sbc82xx_flash.o
---- a/drivers/net/Kconfig
-+++ b/drivers/net/Kconfig
-@@ -343,6 +343,12 @@ config MACB
- 
- source "drivers/net/arm/Kconfig"
- 
-+config IFXMIPS_MII0
-+	tristate "Infineon IFXMips eth0 driver"
-+	depends on IFXMIPS
-+	help
-+	  Support for the MII0 inside the IFXMips SOC
-+
- config AX88796
- 	tristate "ASIX AX88796 NE2000 clone support"
- 	depends on ARM || MIPS || SUPERH
---- a/drivers/serial/Kconfig
-+++ b/drivers/serial/Kconfig
-@@ -1353,6 +1353,14 @@ config SERIAL_OF_PLATFORM
- 	  Currently, only 8250 compatible ports are supported, but
- 	  others can easily be added.
- 
-+config SERIAL_IFXMIPS
-+	bool "IFXMips serial driver"
-+	depends on IFXMIPS
-+	select SERIAL_CORE
-+	select SERIAL_CORE_CONSOLE
-+	help
-+	  Driver for the ifxmipss built in ASC hardware
-+
- config SERIAL_QE
- 	tristate "Freescale QUICC Engine serial port support"
- 	depends on QUICC_ENGINE
---- a/drivers/serial/Makefile
-+++ b/drivers/serial/Makefile
-@@ -69,3 +69,4 @@ obj-$(CONFIG_SERIAL_OF_PLATFORM) += of_s
- obj-$(CONFIG_SERIAL_KS8695) += serial_ks8695.o
- obj-$(CONFIG_KGDB_SERIAL_CONSOLE) += kgdboc.o
- obj-$(CONFIG_SERIAL_QE) += ucc_uart.o
-+obj-$(CONFIG_SERIAL_IFXMIPS) += ifxmips_asc.o
---- a/drivers/watchdog/Makefile
-+++ b/drivers/watchdog/Makefile
-@@ -102,6 +102,7 @@ obj-$(CONFIG_WDT_RM9K_GPI) += rm9k_wdt.o
- obj-$(CONFIG_SIBYTE_WDOG) += sb_wdog.o
- obj-$(CONFIG_AR7_WDT) += ar7_wdt.o
- obj-$(CONFIG_TXX9_WDT) += txx9wdt.o
-+obj-$(CONFIG_IFXMIPS_WDT) += ifxmips_wdt.o
- 
- # PARISC Architecture
- 
---- a/drivers/net/Makefile
-+++ b/drivers/net/Makefile
-@@ -256,4 +256,4 @@ obj-$(CONFIG_NETXEN_NIC) += netxen/
- obj-$(CONFIG_NIU) += niu.o
- obj-$(CONFIG_VIRTIO_NET) += virtio_net.o
- obj-$(CONFIG_SFC) += sfc/
--
-+obj-$(CONFIG_IFXMIPS_MII0) += ifxmips_mii0.o
---- a/drivers/crypto/Kconfig
-+++ b/drivers/crypto/Kconfig
-@@ -9,6 +9,9 @@ menuconfig CRYPTO_HW
- 	  If you say N, all options in this submenu will be skipped and disabled.
- 
- if CRYPTO_HW
-+config CRYPTO_DEV_IFXMIPS
-+	tristate "Support for IFXMIPS Data Encryption Unit"
-+	depends on IFXMIPS
- 
- config CRYPTO_DEV_PADLOCK
- 	tristate "Support for VIA PadLock ACE"
---- a/drivers/crypto/Makefile
-+++ b/drivers/crypto/Makefile
-@@ -4,3 +4,4 @@ obj-$(CONFIG_CRYPTO_DEV_GEODE) += geode-
- obj-$(CONFIG_CRYPTO_DEV_HIFN_795X) += hifn_795x.o
- obj-$(CONFIG_CRYPTO_DEV_TALITOS) += talitos.o
- obj-$(CONFIG_CRYPTO_DEV_IXP4XX) += ixp4xx_crypto.o
-+obj-$(CONFIG_CRYPTO_DEV_IFXMIPS) += ifxdeu-aes.o ifxdeu-des.o ifxdeu-dma.o ifxdeu-generic.o ifxdeu-md5.o ifxdeu-sha1.o
---- a/drivers/usb/host/Kconfig
-+++ b/drivers/usb/host/Kconfig
-@@ -305,3 +305,10 @@ config SUPERH_ON_CHIP_R8A66597
- 	help
- 	   This driver enables support for the on-chip R8A66597 in the
- 	   SH7366 and SH7723 processors.
-+
-+config USB_DWC_HCD
-+	tristate "IFXMIPS USB Host Controller Driver"
-+	depends on USB && IFXMIPS
-+	default y
-+	help
-+       Danube USB Host Controller
---- a/drivers/leds/Kconfig
-+++ b/drivers/leds/Kconfig
-@@ -169,6 +169,12 @@ config LEDS_PCA955X
- 	  LED driver chips accessed via the I2C bus.  Supported
- 	  devices include PCA9550, PCA9551, PCA9552, and PCA9553.
- 
-+config LEDS_IFXMIPS
-+	tristate "LED Support for IFXMIPS  LEDs"
-+	depends on LEDS_CLASS && IFXMIPS
-+	help
-+	  This option enables support for the CM-X270 LEDs.
-+
- comment "LED Triggers"
- 
- config LEDS_TRIGGERS
---- a/drivers/leds/Makefile
-+++ b/drivers/leds/Makefile
-@@ -24,6 +24,7 @@ obj-$(CONFIG_LEDS_CLEVO_MAIL)		+= leds-c
- obj-$(CONFIG_LEDS_HP6XX)		+= leds-hp6xx.o
- obj-$(CONFIG_LEDS_FSG)			+= leds-fsg.o
- obj-$(CONFIG_LEDS_PCA955X)		+= leds-pca955x.o
-+obj-$(CONFIG_LEDS_IFXMIPS)		+= leds-ifxmips.o
- 
- # LED Triggers
- obj-$(CONFIG_LEDS_TRIGGER_TIMER)	+= ledtrig-timer.o
---- a/drivers/watchdog/Kconfig
-+++ b/drivers/watchdog/Kconfig
-@@ -704,6 +704,12 @@ config TXX9_WDT
- 	help
- 	  Hardware driver for the built-in watchdog timer on TXx9 MIPS SoCs.
- 
-+config IFXMIPS_WDT
-+	bool "IFXMips watchdog"
-+	depends on IFXMIPS
-+	help
-+	  Hardware driver for the IFXMIPS Watchdog Timer.
-+
- # PARISC Architecture
- 
- # POWERPC Architecture
diff --git a/target/linux/ifxmips/patches-2.6.27/160-cfi-swap.patch b/target/linux/ifxmips/patches-2.6.27/160-cfi-swap.patch
deleted file mode 100644
index 9010c4b4e..000000000
--- a/target/linux/ifxmips/patches-2.6.27/160-cfi-swap.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- a/drivers/mtd/chips/cfi_cmdset_0002.c
-+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
-@@ -1025,7 +1025,9 @@ static int __xipram do_write_oneword(str
- 	int retry_cnt = 0;
- 
- 	adr += chip->start;
--
-+#ifdef CONFIG_IFXMIPS
-+	adr ^= 2;
-+#endif
- 	spin_lock(chip->mutex);
- 	ret = get_chip(map, chip, adr, FL_WRITING);
- 	if (ret) {
diff --git a/target/linux/ifxmips/patches-2.6.27/170-dma_hack.patch b/target/linux/ifxmips/patches-2.6.27/170-dma_hack.patch
deleted file mode 100644
index 5416b6aae..000000000
--- a/target/linux/ifxmips/patches-2.6.27/170-dma_hack.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/arch/mips/mm/cache.c
-+++ b/arch/mips/mm/cache.c
-@@ -51,6 +51,8 @@ void (*_dma_cache_wback)(unsigned long s
- void (*_dma_cache_inv)(unsigned long start, unsigned long size);
- 
- EXPORT_SYMBOL(_dma_cache_wback_inv);
-+EXPORT_SYMBOL(_dma_cache_wback);
-+EXPORT_SYMBOL(_dma_cache_inv);
- 
- #endif /* CONFIG_DMA_NONCOHERENT */
- 
diff --git a/target/linux/ifxmips/patches-2.6.27/200-genirq_fix.patch b/target/linux/ifxmips/patches-2.6.27/200-genirq_fix.patch
deleted file mode 100644
index ba6372317..000000000
--- a/target/linux/ifxmips/patches-2.6.27/200-genirq_fix.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- a/kernel/irq/chip.c
-+++ b/kernel/irq/chip.c
-@@ -526,6 +526,9 @@ handle_percpu_irq(unsigned int irq, stru
- 
- 	kstat_this_cpu.irqs[irq]++;
- 
-+	if (unlikely(!desc->action || (desc->status & IRQ_DISABLED)))
-+		return;
-+
- 	if (desc->chip->ack)
- 		desc->chip->ack(irq);
- 
diff --git a/target/linux/ifxmips/patches-2.6.28/000-mips-bad-intctl.patch b/target/linux/ifxmips/patches-2.6.28/000-mips-bad-intctl.patch
deleted file mode 100644
index 22f7e0c75..000000000
--- a/target/linux/ifxmips/patches-2.6.28/000-mips-bad-intctl.patch
+++ /dev/null
@@ -1,34 +0,0 @@
---- a/arch/mips/kernel/traps.c
-+++ b/arch/mips/kernel/traps.c
-@@ -1514,7 +1514,16 @@ void __cpuinit per_cpu_trap_init(void)
- 	 */
- 	if (cpu_has_mips_r2) {
- 		cp0_compare_irq = (read_c0_intctl() >> 29) & 7;
-+		if (!cp0_compare_irq)
-+			cp0_compare_irq = CP0_LEGACY_COMPARE_IRQ;
-+
- 		cp0_perfcount_irq = (read_c0_intctl() >> 26) & 7;
-+		if (!cp0_perfcount_irq)
-+			cp0_perfcount_irq = CP0_LEGACY_PERFCNT_IRQ;
-+
-+		if (arch_fixup_c0_irqs)
-+			arch_fixup_c0_irqs();
-+
- 		if (cp0_perfcount_irq == cp0_compare_irq)
- 			cp0_perfcount_irq = -1;
- 	} else {
---- a/arch/mips/include/asm/irq.h
-+++ b/arch/mips/include/asm/irq.h
-@@ -156,8 +156,12 @@ extern void free_irqno(unsigned int irq)
-  * IE7.  Since R2 their number has to be read from the c0_intctl register.
-  */
- #define CP0_LEGACY_COMPARE_IRQ 7
-+#define CP0_LEGACY_PERFCNT_IRQ 7
- 
- extern int cp0_compare_irq;
- extern int cp0_perfcount_irq;
- 
-+extern void __weak arch_fixup_c0_irqs(void);
-+
-+
- #endif /* _ASM_IRQ_H */
diff --git a/target/linux/ifxmips/patches-2.6.28/100-board.patch b/target/linux/ifxmips/patches-2.6.28/100-board.patch
deleted file mode 100644
index 39bda41ef..000000000
--- a/target/linux/ifxmips/patches-2.6.28/100-board.patch
+++ /dev/null
@@ -1,71 +0,0 @@
---- a/arch/mips/Kconfig
-+++ b/arch/mips/Kconfig
-@@ -79,6 +79,22 @@ config MIPS_COBALT
- 	select SYS_SUPPORTS_LITTLE_ENDIAN
- 	select GENERIC_HARDIRQS_NO__DO_IRQ
- 
-+config IFXMIPS
-+	bool "Infineon Twinpass, Danube, Amazon-SE"
-+	select DMA_NONCOHERENT
-+	select IRQ_CPU
-+	select CEVT_R4K
-+	select CSRC_R4K
-+	select SYS_HAS_CPU_MIPS32_R1
-+	select SYS_HAS_CPU_MIPS32_R2
-+	select SYS_SUPPORTS_BIG_ENDIAN
-+	select SYS_SUPPORTS_32BIT_KERNEL
-+	select SYS_HAS_EARLY_PRINTK
-+	select HW_HAS_PCI
-+	select GENERIC_GPIO
-+	select SWAP_IO_SPACE
-+	select GENERIC_HARDIRQS_NO__DO_IRQ
-+
- config MACH_DECSTATION
- 	bool "DECstations"
- 	select BOOT_ELF32
-@@ -607,6 +623,7 @@ source "arch/mips/sgi-ip27/Kconfig"
- source "arch/mips/sibyte/Kconfig"
- source "arch/mips/txx9/Kconfig"
- source "arch/mips/vr41xx/Kconfig"
-+source "arch/mips/ifxmips/Kconfig"
- 
- endmenu
- 
---- a/arch/mips/Makefile
-+++ b/arch/mips/Makefile
-@@ -285,6 +285,13 @@ cflags-$(CONFIG_MIPS_COBALT)	+= -I$(srct
- load-$(CONFIG_MIPS_COBALT)	+= 0xffffffff80080000
- 
- #
-+# Infineon IFXMIPS
-+#
-+core-$(CONFIG_IFXMIPS)		+= arch/mips/ifxmips/
-+cflags-$(CONFIG_IFXMIPS)	+= -I$(srctree)/arch/mips/include/asm/mach-ifxmips
-+load-$(CONFIG_IFXMIPS)		+= 0xffffffff80002000
-+
-+#
- # DECstation family
- #
- core-$(CONFIG_MACH_DECSTATION)	+= arch/mips/dec/
---- a/arch/mips/include/asm/bootinfo.h
-+++ b/arch/mips/include/asm/bootinfo.h
-@@ -57,6 +57,12 @@
- #define	MACH_MIKROTIK_RB532	0	/* Mikrotik RouterBoard 532 	*/
- #define MACH_MIKROTIK_RB532A	1	/* Mikrotik RouterBoard 532A 	*/
- 
-+/*
-+ * Valid machtype for group IFXMIPS
-+ */
-+#define MACH_GROUP_IFXMIPS     29
-+#define MACH_INFINEON_IFXMIPS  0
-+
- #define CL_SIZE			COMMAND_LINE_SIZE
- 
- extern char *system_type;
---- a/arch/mips/pci/Makefile
-+++ b/arch/mips/pci/Makefile
-@@ -52,3 +52,4 @@ obj-$(CONFIG_VICTOR_MPC30X)	+= fixup-mpc
- obj-$(CONFIG_ZAO_CAPCELLA)	+= fixup-capcella.o
- obj-$(CONFIG_WR_PPMC)		+= fixup-wrppmc.o
- obj-$(CONFIG_MIKROTIK_RB532)	+= pci-rc32434.o ops-rc32434.o fixup-rc32434.o
-+obj-$(CONFIG_IFXMIPS)		+= pci-ifxmips.o ops-ifxmips.o
diff --git a/target/linux/ifxmips/patches-2.6.28/110-drivers.patch b/target/linux/ifxmips/patches-2.6.28/110-drivers.patch
deleted file mode 100644
index 23ceb3cd6..000000000
--- a/target/linux/ifxmips/patches-2.6.28/110-drivers.patch
+++ /dev/null
@@ -1,152 +0,0 @@
---- a/drivers/char/Makefile
-+++ b/drivers/char/Makefile
-@@ -110,6 +110,10 @@ obj-$(CONFIG_PS3_FLASH)		+= ps3flash.o
- obj-$(CONFIG_JS_RTC)		+= js-rtc.o
- js-rtc-y = rtc.o
- 
-+obj-$(CONFIG_IFXMIPS_SSC)  += ifxmips_ssc.o
-+obj-$(CONFIG_IFXMIPS_EEPROM)   += ifxmips_eeprom.o
-+obj-$(CONFIG_IFXMIPS_MEI)  += ifxmips_mei_core.o
-+
- # Files generated that shall be removed upon make clean
- clean-files := consolemap_deftbl.c defkeymap.c
- 
---- a/drivers/mtd/maps/Makefile
-+++ b/drivers/mtd/maps/Makefile
-@@ -52,6 +52,7 @@ obj-$(CONFIG_MTD_NETtel)	+= nettel.o
- obj-$(CONFIG_MTD_SCB2_FLASH)	+= scb2_flash.o
- obj-$(CONFIG_MTD_H720X)		+= h720x-flash.o
- obj-$(CONFIG_MTD_SBC8240)	+= sbc8240.o
-+obj-$(CONFIG_MTD_IFXMIPS)	+= ifxmips.o
- obj-$(CONFIG_MTD_IXP4XX)	+= ixp4xx.o
- obj-$(CONFIG_MTD_IXP2000)	+= ixp2000.o
- obj-$(CONFIG_MTD_WRSBC8260)	+= wr_sbc82xx_flash.o
---- a/drivers/net/Kconfig
-+++ b/drivers/net/Kconfig
-@@ -343,6 +343,12 @@ config MACB
- 
- source "drivers/net/arm/Kconfig"
- 
-+config IFXMIPS_MII0
-+	tristate "Infineon IFXMips eth0 driver"
-+	depends on IFXMIPS
-+	help
-+	  Support for the MII0 inside the IFXMips SOC
-+
- config AX88796
- 	tristate "ASIX AX88796 NE2000 clone support"
- 	depends on ARM || MIPS || SUPERH
---- a/drivers/serial/Kconfig
-+++ b/drivers/serial/Kconfig
-@@ -1304,6 +1304,14 @@ config SERIAL_OF_PLATFORM
- 	  Currently, only 8250 compatible ports are supported, but
- 	  others can easily be added.
- 
-+config SERIAL_IFXMIPS
-+	bool "IFXMips serial driver"
-+	depends on IFXMIPS
-+	select SERIAL_CORE
-+	select SERIAL_CORE_CONSOLE
-+	help
-+	  Driver for the ifxmipss built in ASC hardware
-+
- config SERIAL_QE
- 	tristate "Freescale QUICC Engine serial port support"
- 	depends on QUICC_ENGINE
---- a/drivers/serial/Makefile
-+++ b/drivers/serial/Makefile
-@@ -73,3 +73,4 @@ obj-$(CONFIG_SERIAL_OF_PLATFORM) += of_s
- obj-$(CONFIG_SERIAL_KS8695) += serial_ks8695.o
- obj-$(CONFIG_KGDB_SERIAL_CONSOLE) += kgdboc.o
- obj-$(CONFIG_SERIAL_QE) += ucc_uart.o
-+obj-$(CONFIG_SERIAL_IFXMIPS) += ifxmips_asc.o
---- a/drivers/watchdog/Makefile
-+++ b/drivers/watchdog/Makefile
-@@ -106,6 +106,7 @@ obj-$(CONFIG_WDT_RM9K_GPI) += rm9k_wdt.o
- obj-$(CONFIG_SIBYTE_WDOG) += sb_wdog.o
- obj-$(CONFIG_AR7_WDT) += ar7_wdt.o
- obj-$(CONFIG_TXX9_WDT) += txx9wdt.o
-+obj-$(CONFIG_IFXMIPS_WDT) += ifxmips_wdt.o
- 
- # PARISC Architecture
- 
---- a/drivers/net/Makefile
-+++ b/drivers/net/Makefile
-@@ -262,4 +262,4 @@ obj-$(CONFIG_NETXEN_NIC) += netxen/
- obj-$(CONFIG_NIU) += niu.o
- obj-$(CONFIG_VIRTIO_NET) += virtio_net.o
- obj-$(CONFIG_SFC) += sfc/
--
-+obj-$(CONFIG_IFXMIPS_MII0) += ifxmips_mii0.o
---- a/drivers/crypto/Kconfig
-+++ b/drivers/crypto/Kconfig
-@@ -9,6 +9,9 @@ menuconfig CRYPTO_HW
- 	  If you say N, all options in this submenu will be skipped and disabled.
- 
- if CRYPTO_HW
-+config CRYPTO_DEV_IFXMIPS
-+	tristate "Support for IFXMIPS Data Encryption Unit"
-+	depends on IFXMIPS
- 
- config CRYPTO_DEV_PADLOCK
- 	tristate "Support for VIA PadLock ACE"
---- a/drivers/crypto/Makefile
-+++ b/drivers/crypto/Makefile
-@@ -4,3 +4,4 @@ obj-$(CONFIG_CRYPTO_DEV_GEODE) += geode-
- obj-$(CONFIG_CRYPTO_DEV_HIFN_795X) += hifn_795x.o
- obj-$(CONFIG_CRYPTO_DEV_TALITOS) += talitos.o
- obj-$(CONFIG_CRYPTO_DEV_IXP4XX) += ixp4xx_crypto.o
-+obj-$(CONFIG_CRYPTO_DEV_IFXMIPS) += ifxdeu-aes.o ifxdeu-des.o ifxdeu-dma.o ifxdeu-generic.o ifxdeu-md5.o ifxdeu-sha1.o
---- a/drivers/usb/host/Kconfig
-+++ b/drivers/usb/host/Kconfig
-@@ -321,3 +321,10 @@ config USB_HWA_HCD
- 
- 	  To compile this driver a module, choose M here: the module
- 	  will be called "hwa-hc".
-+
-+config USB_DWC_HCD
-+	tristate "IFXMIPS USB Host Controller Driver"
-+	depends on USB && IFXMIPS
-+	default y
-+	help
-+       Danube USB Host Controller
---- a/drivers/leds/Kconfig
-+++ b/drivers/leds/Kconfig
-@@ -171,6 +171,12 @@ config LEDS_DA903X
- 	  This option enables support for on-chip LED drivers found
- 	  on Dialog Semiconductor DA9030/DA9034 PMICs.
- 
-+config LEDS_IFXMIPS
-+	tristate "LED Support for IFXMIPS LEDs"
-+	depends on LEDS_CLASS && IFXMIPS
-+	help
-+	  This option enables support for the IFXMIPS LEDs.
-+
- comment "LED Triggers"
- 
- config LEDS_TRIGGERS
---- a/drivers/leds/Makefile
-+++ b/drivers/leds/Makefile
-@@ -24,6 +24,7 @@ obj-$(CONFIG_LEDS_FSG)			+= leds-fsg.o
- obj-$(CONFIG_LEDS_PCA955X)		+= leds-pca955x.o
- obj-$(CONFIG_LEDS_DA903X)		+= leds-da903x.o
- obj-$(CONFIG_LEDS_HP_DISK)		+= leds-hp-disk.o
-+obj-$(CONFIG_LEDS_IFXMIPS)		+= leds-ifxmips.o
- 
- # LED Triggers
- obj-$(CONFIG_LEDS_TRIGGER_TIMER)	+= ledtrig-timer.o
---- a/drivers/watchdog/Kconfig
-+++ b/drivers/watchdog/Kconfig
-@@ -747,6 +747,12 @@ config TXX9_WDT
- 	help
- 	  Hardware driver for the built-in watchdog timer on TXx9 MIPS SoCs.
- 
-+config IFXMIPS_WDT
-+	bool "IFXMips watchdog"
-+	depends on IFXMIPS
-+	help
-+	  Hardware driver for the IFXMIPS Watchdog Timer.
-+
- # PARISC Architecture
- 
- # POWERPC Architecture
diff --git a/target/linux/ifxmips/patches-2.6.28/160-cfi-swap.patch b/target/linux/ifxmips/patches-2.6.28/160-cfi-swap.patch
deleted file mode 100644
index 53a0db873..000000000
--- a/target/linux/ifxmips/patches-2.6.28/160-cfi-swap.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- a/drivers/mtd/chips/cfi_cmdset_0002.c
-+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
-@@ -1069,7 +1069,9 @@ static int __xipram do_write_oneword(str
- 	int retry_cnt = 0;
- 
- 	adr += chip->start;
--
-+#ifdef CONFIG_IFXMIPS
-+	adr ^= 2;
-+#endif
- 	spin_lock(chip->mutex);
- 	ret = get_chip(map, chip, adr, FL_WRITING);
- 	if (ret) {
diff --git a/target/linux/ifxmips/patches-2.6.28/170-dma_hack.patch b/target/linux/ifxmips/patches-2.6.28/170-dma_hack.patch
deleted file mode 100644
index 5416b6aae..000000000
--- a/target/linux/ifxmips/patches-2.6.28/170-dma_hack.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/arch/mips/mm/cache.c
-+++ b/arch/mips/mm/cache.c
-@@ -51,6 +51,8 @@ void (*_dma_cache_wback)(unsigned long s
- void (*_dma_cache_inv)(unsigned long start, unsigned long size);
- 
- EXPORT_SYMBOL(_dma_cache_wback_inv);
-+EXPORT_SYMBOL(_dma_cache_wback);
-+EXPORT_SYMBOL(_dma_cache_inv);
- 
- #endif /* CONFIG_DMA_NONCOHERENT */
- 
diff --git a/target/linux/ifxmips/patches-2.6.28/200-genirq_fix.patch b/target/linux/ifxmips/patches-2.6.28/200-genirq_fix.patch
deleted file mode 100644
index 2050d1f0b..000000000
--- a/target/linux/ifxmips/patches-2.6.28/200-genirq_fix.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- a/kernel/irq/chip.c
-+++ b/kernel/irq/chip.c
-@@ -524,6 +524,9 @@ handle_percpu_irq(unsigned int irq, stru
- 
- 	kstat_incr_irqs_this_cpu(irq, desc);
- 
-+	if (unlikely(!desc->action || (desc->status & IRQ_DISABLED)))
-+		return;
-+
- 	if (desc->chip->ack)
- 		desc->chip->ack(irq);
- 
diff --git a/target/linux/ifxmips/patches-2.6.27/000-mips-bad-intctl.patch b/target/linux/ifxmips/patches-2.6.30/000-mips-bad-intctl.patch
similarity index 53%
rename from target/linux/ifxmips/patches-2.6.27/000-mips-bad-intctl.patch
rename to target/linux/ifxmips/patches-2.6.30/000-mips-bad-intctl.patch
index 36f0552d4..bd1b399c1 100644
--- a/target/linux/ifxmips/patches-2.6.27/000-mips-bad-intctl.patch
+++ b/target/linux/ifxmips/patches-2.6.30/000-mips-bad-intctl.patch
@@ -1,6 +1,8 @@
---- a/arch/mips/kernel/traps.c
-+++ b/arch/mips/kernel/traps.c
-@@ -1484,7 +1484,16 @@ void __cpuinit per_cpu_trap_init(void)
+Index: linux-2.6.30.5/arch/mips/kernel/traps.c
+===================================================================
+--- linux-2.6.30.5.orig/arch/mips/kernel/traps.c	2009-08-16 23:19:38.000000000 +0200
++++ linux-2.6.30.5/arch/mips/kernel/traps.c	2009-09-02 18:23:37.000000000 +0200
+@@ -1542,7 +1542,16 @@
  	 */
  	if (cpu_has_mips_r2) {
  		cp0_compare_irq = (read_c0_intctl() >> 29) & 7;
@@ -17,9 +19,11 @@
  		if (cp0_perfcount_irq == cp0_compare_irq)
  			cp0_perfcount_irq = -1;
  	} else {
---- a/include/asm-mips/irq.h
-+++ b/include/asm-mips/irq.h
-@@ -156,8 +156,12 @@ extern void free_irqno(unsigned int irq)
+Index: linux-2.6.30.5/arch/mips/include/asm/irq.h
+===================================================================
+--- linux-2.6.30.5.orig/arch/mips/include/asm/irq.h	2009-09-02 18:24:49.000000000 +0200
++++ linux-2.6.30.5/arch/mips/include/asm/irq.h	2009-09-02 18:26:05.000000000 +0200
+@@ -157,8 +157,10 @@
   * IE7.  Since R2 their number has to be read from the c0_intctl register.
   */
  #define CP0_LEGACY_COMPARE_IRQ 7
@@ -27,8 +31,6 @@
  
  extern int cp0_compare_irq;
  extern int cp0_perfcount_irq;
- 
 +extern void __weak arch_fixup_c0_irqs(void);
-+
-+
+ 
  #endif /* _ASM_IRQ_H */
diff --git a/target/linux/ifxmips/patches-2.6.28/010-mips_clocksource_init_war.patch b/target/linux/ifxmips/patches-2.6.30/010-mips_clocksource_init_war.patch
similarity index 73%
rename from target/linux/ifxmips/patches-2.6.28/010-mips_clocksource_init_war.patch
rename to target/linux/ifxmips/patches-2.6.30/010-mips_clocksource_init_war.patch
index ac44c308f..49ff66310 100644
--- a/target/linux/ifxmips/patches-2.6.28/010-mips_clocksource_init_war.patch
+++ b/target/linux/ifxmips/patches-2.6.30/010-mips_clocksource_init_war.patch
@@ -1,5 +1,7 @@
---- a/arch/mips/kernel/cevt-r4k.c
-+++ b/arch/mips/kernel/cevt-r4k.c
+Index: linux-2.6.30.5/arch/mips/kernel/cevt-r4k.c
+===================================================================
+--- linux-2.6.30.5.orig/arch/mips/kernel/cevt-r4k.c	2009-08-16 23:19:38.000000000 +0200
++++ linux-2.6.30.5/arch/mips/kernel/cevt-r4k.c	2009-09-02 18:26:26.000000000 +0200
 @@ -21,6 +21,22 @@
  
  #ifndef CONFIG_MIPS_MT_SMTC
@@ -23,7 +25,7 @@
  static int mips_next_event(unsigned long delta,
                             struct clock_event_device *evt)
  {
-@@ -30,6 +46,7 @@ static int mips_next_event(unsigned long
+@@ -30,6 +46,7 @@
  	cnt = read_c0_count();
  	cnt += delta;
  	write_c0_compare(cnt);
diff --git a/target/linux/ifxmips/patches-2.6.30/100-board.patch b/target/linux/ifxmips/patches-2.6.30/100-board.patch
new file mode 100644
index 000000000..62a683ddf
--- /dev/null
+++ b/target/linux/ifxmips/patches-2.6.30/100-board.patch
@@ -0,0 +1,77 @@
+Index: linux-2.6.30.5/arch/mips/Kconfig
+===================================================================
+--- linux-2.6.30.5.orig/arch/mips/Kconfig	2009-09-02 22:12:48.000000000 +0200
++++ linux-2.6.30.5/arch/mips/Kconfig	2009-09-03 01:18:31.000000000 +0200
+@@ -79,6 +79,24 @@
+ 	select SYS_SUPPORTS_64BIT_KERNEL
+ 	select SYS_SUPPORTS_LITTLE_ENDIAN
+ 
++config IFXMIPS
++	bool "Infineon Twinpass, Danube, Amazon-SE"
++	select DMA_NONCOHERENT
++	select IRQ_CPU
++	select CEVT_R4K
++	select CSRC_R4K
++	select SYS_HAS_CPU_MIPS32_R1
++	select SYS_HAS_CPU_MIPS32_R2
++	select HAVE_STD_PC_SERIAL_PORT
++	select SYS_SUPPORTS_BIG_ENDIAN
++	select SYS_SUPPORTS_32BIT_KERNEL
++	select SYS_SUPPORTS_MULTITHREADING
++	select SYS_HAS_EARLY_PRINTK
++	select HW_HAS_PCI
++	select GENERIC_GPIO
++	select ARCH_WANT_OPTIONAL_GPIOLIB
++	select SWAP_IO_SPACE
++
+ config MACH_DECSTATION
+ 	bool "DECstations"
+ 	select BOOT_ELF32
+@@ -643,6 +661,7 @@
+ source "arch/mips/txx9/Kconfig"
+ source "arch/mips/vr41xx/Kconfig"
+ source "arch/mips/cavium-octeon/Kconfig"
++source "arch/mips/ifxmips/Kconfig"
+ 
+ endmenu
+ 
+Index: linux-2.6.30.5/arch/mips/Makefile
+===================================================================
+--- linux-2.6.30.5.orig/arch/mips/Makefile	2009-09-02 22:12:48.000000000 +0200
++++ linux-2.6.30.5/arch/mips/Makefile	2009-09-02 22:12:53.000000000 +0200
+@@ -290,6 +290,13 @@
+ load-$(CONFIG_MIPS_COBALT)	+= 0xffffffff80080000
+ 
+ #
++# Infineon IFXMIPS
++#
++core-$(CONFIG_IFXMIPS) += arch/mips/ifxmips/
++cflags-$(CONFIG_IFXMIPS)   += -I$(srctree)/arch/mips/include/asm/mach-ifxmips
++load-$(CONFIG_IFXMIPS) += 0xffffffff80002000
++
++#
+ # DECstation family
+ #
+ core-$(CONFIG_MACH_DECSTATION)	+= arch/mips/dec/
+Index: linux-2.6.30.5/arch/mips/pci/Makefile
+===================================================================
+--- linux-2.6.30.5.orig/arch/mips/pci/Makefile	2009-09-02 22:12:48.000000000 +0200
++++ linux-2.6.30.5/arch/mips/pci/Makefile	2009-09-02 22:12:53.000000000 +0200
+@@ -52,3 +52,4 @@
+ obj-$(CONFIG_ZAO_CAPCELLA)	+= fixup-capcella.o
+ obj-$(CONFIG_WR_PPMC)		+= fixup-wrppmc.o
+ obj-$(CONFIG_MIKROTIK_RB532)	+= pci-rc32434.o ops-rc32434.o fixup-rc32434.o
++obj-$(CONFIG_IFXMIPS)		+= pci-ifxmips.o ops-ifxmips.o
+Index: linux-2.6.30.5/arch/mips/include/asm/bootinfo.h
+===================================================================
+--- linux-2.6.30.5.orig/arch/mips/include/asm/bootinfo.h	2009-09-02 22:12:48.000000000 +0200
++++ linux-2.6.30.5/arch/mips/include/asm/bootinfo.h	2009-09-02 22:13:05.000000000 +0200
+@@ -57,6 +57,8 @@
+ #define	MACH_MIKROTIK_RB532	0	/* Mikrotik RouterBoard 532 	*/
+ #define MACH_MIKROTIK_RB532A	1	/* Mikrotik RouterBoard 532A 	*/
+ 
++#define MACH_INFINEON_IFXMIPS  0
++
+ #define CL_SIZE			COMMAND_LINE_SIZE
+ 
+ extern char *system_type;
diff --git a/target/linux/ifxmips/patches-2.6.30/110-drivers.patch b/target/linux/ifxmips/patches-2.6.30/110-drivers.patch
new file mode 100644
index 000000000..5d5891d00
--- /dev/null
+++ b/target/linux/ifxmips/patches-2.6.30/110-drivers.patch
@@ -0,0 +1,162 @@
+Index: linux-2.6.30.5/drivers/char/Makefile
+===================================================================
+--- linux-2.6.30.5.orig/drivers/char/Makefile	2009-09-02 18:22:49.000000000 +0200
++++ linux-2.6.30.5/drivers/char/Makefile	2009-09-02 18:29:51.000000000 +0200
+@@ -112,6 +112,10 @@
+ obj-$(CONFIG_JS_RTC)		+= js-rtc.o
+ js-rtc-y = rtc.o
+ 
++obj-$(CONFIG_IFXMIPS_SSC)  += ifxmips_ssc.o
++obj-$(CONFIG_IFXMIPS_EEPROM)   += ifxmips_eeprom.o
++obj-$(CONFIG_IFXMIPS_MEI)  += ifxmips_mei_core.o
++
+ # Files generated that shall be removed upon make clean
+ clean-files := consolemap_deftbl.c defkeymap.c
+ 
+Index: linux-2.6.30.5/drivers/mtd/maps/Makefile
+===================================================================
+--- linux-2.6.30.5.orig/drivers/mtd/maps/Makefile	2009-08-16 23:19:38.000000000 +0200
++++ linux-2.6.30.5/drivers/mtd/maps/Makefile	2009-09-02 18:30:09.000000000 +0200
+@@ -62,3 +62,4 @@
+ obj-$(CONFIG_MTD_BFIN_ASYNC)	+= bfin-async-flash.o
+ obj-$(CONFIG_MTD_RBTX4939)	+= rbtx4939-flash.o
+ obj-$(CONFIG_MTD_VMU)		+= vmu-flash.o
++obj-$(CONFIG_MTD_IFXMIPS)  += ifxmips.o
+Index: linux-2.6.30.5/drivers/net/Kconfig
+===================================================================
+--- linux-2.6.30.5.orig/drivers/net/Kconfig	2009-09-02 18:22:49.000000000 +0200
++++ linux-2.6.30.5/drivers/net/Kconfig	2009-09-02 18:29:51.000000000 +0200
+@@ -353,6 +353,12 @@
+ 
+ source "drivers/net/arm/Kconfig"
+ 
++config IFXMIPS_MII0
++	tristate "Infineon IFXMips eth0 driver"
++	depends on IFXMIPS
++	help
++	  Support for the MII0 inside the IFXMips SOC
++
+ config AX88796
+ 	tristate "ASIX AX88796 NE2000 clone support"
+ 	depends on ARM || MIPS || SUPERH
+Index: linux-2.6.30.5/drivers/serial/Kconfig
+===================================================================
+--- linux-2.6.30.5.orig/drivers/serial/Kconfig	2009-08-16 23:19:38.000000000 +0200
++++ linux-2.6.30.5/drivers/serial/Kconfig	2009-09-02 18:29:51.000000000 +0200
+@@ -1365,6 +1365,14 @@
+ 	help
+ 	  Support for Console on the NWP serial ports.
+ 
++config SERIAL_IFXMIPS
++	bool "IFXMips serial driver"
++	depends on IFXMIPS
++	select SERIAL_CORE
++	select SERIAL_CORE_CONSOLE
++	help
++	  Driver for the ifxmipss built in ASC hardware
++
+ config SERIAL_QE
+ 	tristate "Freescale QUICC Engine serial port support"
+ 	depends on QUICC_ENGINE
+Index: linux-2.6.30.5/drivers/serial/Makefile
+===================================================================
+--- linux-2.6.30.5.orig/drivers/serial/Makefile	2009-08-16 23:19:38.000000000 +0200
++++ linux-2.6.30.5/drivers/serial/Makefile	2009-09-02 18:29:51.000000000 +0200
+@@ -77,3 +77,4 @@
+ obj-$(CONFIG_SERIAL_KS8695) += serial_ks8695.o
+ obj-$(CONFIG_KGDB_SERIAL_CONSOLE) += kgdboc.o
+ obj-$(CONFIG_SERIAL_QE) += ucc_uart.o
++obj-$(CONFIG_SERIAL_IFXMIPS) += ifxmips_asc.o
+Index: linux-2.6.30.5/drivers/watchdog/Makefile
+===================================================================
+--- linux-2.6.30.5.orig/drivers/watchdog/Makefile	2009-08-16 23:19:38.000000000 +0200
++++ linux-2.6.30.5/drivers/watchdog/Makefile	2009-09-02 18:29:51.000000000 +0200
+@@ -105,6 +105,7 @@
+ obj-$(CONFIG_SIBYTE_WDOG) += sb_wdog.o
+ obj-$(CONFIG_AR7_WDT) += ar7_wdt.o
+ obj-$(CONFIG_TXX9_WDT) += txx9wdt.o
++obj-$(CONFIG_IFXMIPS_WDT) += ifxmips_wdt.o
+ 
+ # PARISC Architecture
+ 
+Index: linux-2.6.30.5/drivers/net/Makefile
+===================================================================
+--- linux-2.6.30.5.orig/drivers/net/Makefile	2009-09-02 18:22:49.000000000 +0200
++++ linux-2.6.30.5/drivers/net/Makefile	2009-09-02 18:30:37.000000000 +0200
+@@ -234,6 +234,7 @@
+ obj-$(CONFIG_MLX4_CORE) += mlx4/
+ obj-$(CONFIG_ENC28J60) += enc28j60.o
+ obj-$(CONFIG_ETHOC) += ethoc.o
++obj-$(CONFIG_IFXMIPS_MII0) += ifxmips_mii0.o
+ 
+ obj-$(CONFIG_XTENSA_XT2000_SONIC) += xtsonic.o
+ 
+Index: linux-2.6.30.5/drivers/crypto/Kconfig
+===================================================================
+--- linux-2.6.30.5.orig/drivers/crypto/Kconfig	2009-08-16 23:19:38.000000000 +0200
++++ linux-2.6.30.5/drivers/crypto/Kconfig	2009-09-02 18:29:51.000000000 +0200
+@@ -9,6 +9,9 @@
+ 	  If you say N, all options in this submenu will be skipped and disabled.
+ 
+ if CRYPTO_HW
++config CRYPTO_DEV_IFXMIPS
++	tristate "Support for IFXMIPS Data Encryption Unit"
++	depends on IFXMIPS
+ 
+ config CRYPTO_DEV_PADLOCK
+ 	tristate "Support for VIA PadLock ACE"
+Index: linux-2.6.30.5/drivers/crypto/Makefile
+===================================================================
+--- linux-2.6.30.5.orig/drivers/crypto/Makefile	2009-08-16 23:19:38.000000000 +0200
++++ linux-2.6.30.5/drivers/crypto/Makefile	2009-09-02 18:30:55.000000000 +0200
+@@ -5,3 +5,4 @@
+ obj-$(CONFIG_CRYPTO_DEV_TALITOS) += talitos.o
+ obj-$(CONFIG_CRYPTO_DEV_IXP4XX) += ixp4xx_crypto.o
+ obj-$(CONFIG_CRYPTO_DEV_PPC4XX) += amcc/
++obj-$(CONFIG_CRYPTO_DEV_IFXMIPS) += ifxdeu-aes.o ifxdeu-des.o ifxdeu-dma.o ifxdeu-generic.o ifxdeu-md5.o ifxdeu-sha1.o
+Index: linux-2.6.30.5/drivers/leds/Kconfig
+===================================================================
+--- linux-2.6.30.5.orig/drivers/leds/Kconfig	2009-09-02 18:22:49.000000000 +0200
++++ linux-2.6.30.5/drivers/leds/Kconfig	2009-09-02 18:29:51.000000000 +0200
+@@ -227,6 +227,12 @@
+ 	  This option enables support for BD2802GU RGB LED driver chips
+ 	  accessed via the I2C bus.
+ 
++config LEDS_IFXMIPS
++	tristate "LED Support for IFXMIPS  LEDs"
++	depends on LEDS_CLASS && IFXMIPS
++	help
++	  This option enables support for the CM-X270 LEDs.
++
+ comment "LED Triggers"
+ 
+ config LEDS_TRIGGERS
+Index: linux-2.6.30.5/drivers/leds/Makefile
+===================================================================
+--- linux-2.6.30.5.orig/drivers/leds/Makefile	2009-09-02 18:22:49.000000000 +0200
++++ linux-2.6.30.5/drivers/leds/Makefile	2009-09-02 18:31:23.000000000 +0200
+@@ -27,6 +27,7 @@
+ obj-$(CONFIG_LEDS_DA903X)		+= leds-da903x.o
+ obj-$(CONFIG_LEDS_WM8350)		+= leds-wm8350.o
+ obj-$(CONFIG_LEDS_PWM)			+= leds-pwm.o
++obj-$(CONFIG_LEDS_IFXMIPS)		+= leds-ifxmips.o
+ 
+ # LED SPI Drivers
+ obj-$(CONFIG_LEDS_DAC124S085)		+= leds-dac124s085.o
+Index: linux-2.6.30.5/drivers/watchdog/Kconfig
+===================================================================
+--- linux-2.6.30.5.orig/drivers/watchdog/Kconfig	2009-08-16 23:19:38.000000000 +0200
++++ linux-2.6.30.5/drivers/watchdog/Kconfig	2009-09-02 18:29:51.000000000 +0200
+@@ -764,6 +764,12 @@
+ 	help
+ 	  Hardware driver for the built-in watchdog timer on TXx9 MIPS SoCs.
+ 
++config IFXMIPS_WDT
++	bool "IFXMips watchdog"
++	depends on IFXMIPS
++	help
++	  Hardware driver for the IFXMIPS Watchdog Timer.
++
+ # PARISC Architecture
+ 
+ # POWERPC Architecture
diff --git a/target/linux/ifxmips/patches-2.6.30/160-cfi-swap.patch b/target/linux/ifxmips/patches-2.6.30/160-cfi-swap.patch
new file mode 100644
index 000000000..109f958e7
--- /dev/null
+++ b/target/linux/ifxmips/patches-2.6.30/160-cfi-swap.patch
@@ -0,0 +1,15 @@
+Index: linux-2.6.30.5/drivers/mtd/chips/cfi_cmdset_0002.c
+===================================================================
+--- linux-2.6.30.5.orig/drivers/mtd/chips/cfi_cmdset_0002.c	2009-09-02 18:22:49.000000000 +0200
++++ linux-2.6.30.5/drivers/mtd/chips/cfi_cmdset_0002.c	2009-09-02 18:31:31.000000000 +0200
+@@ -1090,7 +1090,9 @@
+ 	int retry_cnt = 0;
+ 
+ 	adr += chip->start;
+-
++#ifdef CONFIG_IFXMIPS
++	adr ^= 2;
++#endif
+ 	spin_lock(chip->mutex);
+ 	ret = get_chip(map, chip, adr, FL_WRITING);
+ 	if (ret) {
diff --git a/target/linux/ifxmips/patches-2.6.30/170-dma_hack.patch b/target/linux/ifxmips/patches-2.6.30/170-dma_hack.patch
new file mode 100644
index 000000000..469dc7441
--- /dev/null
+++ b/target/linux/ifxmips/patches-2.6.30/170-dma_hack.patch
@@ -0,0 +1,13 @@
+Index: linux-2.6.30.5/arch/mips/mm/cache.c
+===================================================================
+--- linux-2.6.30.5.orig/arch/mips/mm/cache.c	2009-09-02 18:31:37.000000000 +0200
++++ linux-2.6.30.5/arch/mips/mm/cache.c	2009-09-02 18:31:42.000000000 +0200
+@@ -52,6 +52,8 @@
+ void (*_dma_cache_inv)(unsigned long start, unsigned long size);
+ 
+ EXPORT_SYMBOL(_dma_cache_wback_inv);
++EXPORT_SYMBOL(_dma_cache_wback);
++EXPORT_SYMBOL(_dma_cache_inv);
+ 
+ #endif /* CONFIG_DMA_NONCOHERENT */
+ 
diff --git a/target/linux/ifxmips/patches-2.6.30/200-genirq_fix.patch b/target/linux/ifxmips/patches-2.6.30/200-genirq_fix.patch
new file mode 100644
index 000000000..1fbd4c86e
--- /dev/null
+++ b/target/linux/ifxmips/patches-2.6.30/200-genirq_fix.patch
@@ -0,0 +1,14 @@
+Index: linux-2.6.30.5/kernel/irq/chip.c
+===================================================================
+--- linux-2.6.30.5.orig/kernel/irq/chip.c	2009-09-02 20:09:15.000000000 +0200
++++ linux-2.6.30.5/kernel/irq/chip.c	2009-09-02 20:09:25.000000000 +0200
+@@ -537,6 +537,9 @@
+ 
+ 	kstat_incr_irqs_this_cpu(irq, desc);
+ 
++	if (unlikely(!desc->action || (desc->status & IRQ_DISABLED)))
++		return;
++
+ 	if (desc->chip->ack)
+ 		desc->chip->ack(irq);
+ 
diff --git a/target/linux/ifxmips/patches-2.6.30/201-atm.patch b/target/linux/ifxmips/patches-2.6.30/201-atm.patch
new file mode 100644
index 000000000..bbf013dc3
--- /dev/null
+++ b/target/linux/ifxmips/patches-2.6.30/201-atm.patch
@@ -0,0 +1,26 @@
+Index: linux-2.6.28.10/include/linux/atm.h
+===================================================================
+--- linux-2.6.28.10.orig/include/linux/atm.h	2009-05-02 20:54:43.000000000 +0200
++++ linux-2.6.28.10/include/linux/atm.h	2009-09-02 15:00:30.000000000 +0200
+@@ -139,6 +139,9 @@
+ 	int		min_pcr;	/* minimum PCR in cells per second */
+ 	int		max_cdv;	/* maximum CDV in microseconds */
+ 	int		max_sdu;	/* maximum SDU in bytes */
++	int		scr;		/* sustained rate in cells per second */
++	int		mbs;		/* maximum burst size (MBS) in cells */
++	int		cdv;		/* Cell delay varition */
+         /* extra params for ABR */
+         unsigned int 	icr;         	/* Initial Cell Rate (24-bit) */
+         unsigned int	tbe;		/* Transient Buffer Exposure (24-bit) */ 
+Index: linux-2.6.28.10/kernel/time/timekeeping.c
+===================================================================
+--- linux-2.6.28.10.orig/kernel/time/timekeeping.c	2009-09-02 15:41:06.000000000 +0200
++++ linux-2.6.28.10/kernel/time/timekeeping.c	2009-09-02 15:41:23.000000000 +0200
+@@ -43,6 +43,7 @@
+  * used instead.
+  */
+ struct timespec xtime __attribute__ ((aligned (16)));
++EXPORT_SYMBOL(xtime);
+ struct timespec wall_to_monotonic __attribute__ ((aligned (16)));
+ static unsigned long total_sleep_time;		/* seconds */
+ 
diff --git a/target/linux/ifxmips/patches/000-mips-bad-intctl.patch b/target/linux/ifxmips/patches/000-mips-bad-intctl.patch
deleted file mode 100644
index 3b1c2dc7c..000000000
--- a/target/linux/ifxmips/patches/000-mips-bad-intctl.patch
+++ /dev/null
@@ -1,34 +0,0 @@
---- a/arch/mips/kernel/traps.c
-+++ b/arch/mips/kernel/traps.c
-@@ -1464,7 +1464,16 @@ void __cpuinit per_cpu_trap_init(void)
- 	 */
- 	if (cpu_has_mips_r2) {
- 		cp0_compare_irq = (read_c0_intctl() >> 29) & 7;
-+		if (!cp0_compare_irq)
-+			cp0_compare_irq = CP0_LEGACY_COMPARE_IRQ;
-+
- 		cp0_perfcount_irq = (read_c0_intctl() >> 26) & 7;
-+		if (!cp0_perfcount_irq)
-+			cp0_perfcount_irq = CP0_LEGACY_PERFCNT_IRQ;
-+
-+		if (arch_fixup_c0_irqs)
-+			arch_fixup_c0_irqs();
-+
- 		if (cp0_perfcount_irq == cp0_compare_irq)
- 			cp0_perfcount_irq = -1;
- 	} else {
---- a/include/asm-mips/irq.h
-+++ b/include/asm-mips/irq.h
-@@ -156,8 +156,12 @@ extern void free_irqno(unsigned int irq)
-  * IE7.  Since R2 their number has to be read from the c0_intctl register.
-  */
- #define CP0_LEGACY_COMPARE_IRQ 7
-+#define CP0_LEGACY_PERFCNT_IRQ 7
- 
- extern int cp0_compare_irq;
- extern int cp0_perfcount_irq;
- 
-+extern void __weak arch_fixup_c0_irqs(void);
-+
-+
- #endif /* _ASM_IRQ_H */
diff --git a/target/linux/ifxmips/patches/010-mips_clocksource_init_war.patch b/target/linux/ifxmips/patches/010-mips_clocksource_init_war.patch
deleted file mode 100644
index 61d9610cf..000000000
--- a/target/linux/ifxmips/patches/010-mips_clocksource_init_war.patch
+++ /dev/null
@@ -1,65 +0,0 @@
---- a/arch/mips/kernel/cevt-r4k.c
-+++ b/arch/mips/kernel/cevt-r4k.c
-@@ -13,6 +13,22 @@
- #include <asm/smtc_ipi.h>
- #include <asm/time.h>
- 
-+/*
-+ * Compare interrupt can be routed and latched outside the core,
-+ * so a single execution hazard barrier may not be enough to give
-+ * it time to clear as seen in the Cause register.  4 time the
-+ * pipeline depth seems reasonably conservative, and empirically
-+ * works better in configurations with high CPU/bus clock ratios.
-+ */
-+
-+#define compare_change_hazard() \
-+	do { \
-+		irq_disable_hazard(); \
-+		irq_disable_hazard(); \
-+		irq_disable_hazard(); \
-+		irq_disable_hazard(); \
-+	} while (0)
-+
- static int mips_next_event(unsigned long delta,
-                            struct clock_event_device *evt)
- {
-@@ -28,6 +44,7 @@ static int mips_next_event(unsigned long
- 	cnt = read_c0_count();
- 	cnt += delta;
- 	write_c0_compare(cnt);
-+	compare_change_hazard();
- 	res = ((int)(read_c0_count() - cnt) > 0) ? -ETIME : 0;
- #ifdef CONFIG_MIPS_MT_SMTC
- 	evpe(vpflags);
-@@ -187,7 +204,7 @@ static int c0_compare_int_usable(void)
- 	 */
- 	if (c0_compare_int_pending()) {
- 		write_c0_compare(read_c0_count());
--		irq_disable_hazard();
-+		compare_change_hazard();
- 		if (c0_compare_int_pending())
- 			return 0;
- 	}
-@@ -196,7 +213,7 @@ static int c0_compare_int_usable(void)
- 		cnt = read_c0_count();
- 		cnt += delta;
- 		write_c0_compare(cnt);
--		irq_disable_hazard();
-+		compare_change_hazard();
- 		if ((int)(read_c0_count() - cnt) < 0)
- 		    break;
- 		/* increase delta if the timer was already expired */
-@@ -205,11 +222,12 @@ static int c0_compare_int_usable(void)
- 	while ((int)(read_c0_count() - cnt) <= 0)
- 		;	/* Wait for expiry  */
- 
-+	compare_change_hazard();
- 	if (!c0_compare_int_pending())
- 		return 0;
- 
- 	write_c0_compare(read_c0_count());
--	irq_disable_hazard();
-+	compare_change_hazard();
- 	if (c0_compare_int_pending())
- 		return 0;
- 
diff --git a/target/linux/ifxmips/patches/100-board.patch b/target/linux/ifxmips/patches/100-board.patch
deleted file mode 100644
index 052a08a2c..000000000
--- a/target/linux/ifxmips/patches/100-board.patch
+++ /dev/null
@@ -1,72 +0,0 @@
---- a/arch/mips/Kconfig
-+++ b/arch/mips/Kconfig
-@@ -78,6 +78,23 @@ config MIPS_COBALT
- 	select SYS_SUPPORTS_LITTLE_ENDIAN
- 	select GENERIC_HARDIRQS_NO__DO_IRQ
- 
-+config IFXMIPS
-+	bool "Infineon Twinpass, Danube, Amazon-SE"
-+	select DMA_NONCOHERENT
-+	select IRQ_CPU
-+	select CEVT_R4K
-+	select CSRC_R4K
-+	select SYS_HAS_CPU_MIPS32_R1
-+	select SYS_HAS_CPU_MIPS32_R2
-+	select HAVE_STD_PC_SERIAL_PORT
-+	select SYS_SUPPORTS_BIG_ENDIAN
-+	select SYS_SUPPORTS_32BIT_KERNEL
-+	select SYS_SUPPORTS_MULTITHREADING
-+	select SYS_HAS_EARLY_PRINTK
-+	select HW_HAS_PCI
-+	select GENERIC_GPIO
-+	select SWAP_IO_SPACE
-+
- config MACH_DECSTATION
- 	bool "DECstations"
- 	select BOOT_ELF32
-@@ -697,6 +714,7 @@ source "arch/mips/sibyte/Kconfig"
- source "arch/mips/tx4927/Kconfig"
- source "arch/mips/tx4938/Kconfig"
- source "arch/mips/vr41xx/Kconfig"
-+source "arch/mips/ifxmips/Kconfig"
- 
- endmenu
- 
---- a/arch/mips/Makefile
-+++ b/arch/mips/Makefile
-@@ -283,6 +283,13 @@ cflags-$(CONFIG_MIPS_COBALT)	+= -Iinclud
- load-$(CONFIG_MIPS_COBALT)	+= 0xffffffff80080000
- 
- #
-+# Infineon IFXMIPS
-+#
-+core-$(CONFIG_IFXMIPS) += arch/mips/ifxmips/
-+cflags-$(CONFIG_IFXMIPS)   += -Iinclude/asm-mips/mach-ifxmips
-+load-$(CONFIG_IFXMIPS) += 0xffffffff80002000
-+
-+#
- # DECstation family
- #
- core-$(CONFIG_MACH_DECSTATION)	+= arch/mips/dec/
---- a/include/asm-mips/bootinfo.h
-+++ b/include/asm-mips/bootinfo.h
-@@ -94,6 +94,12 @@
- #define MACH_MSP7120_FPGA       5	/* PMC-Sierra MSP7120 Emulation */
- #define MACH_MSP_OTHER        255	/* PMC-Sierra unknown board type */
- 
-+/*
-+ * Valid machtype for group IFXMIPS
-+ */
-+#define MACH_GROUP_IFXMIPS     29
-+#define MACH_INFINEON_IFXMIPS  0
-+
- #define CL_SIZE			COMMAND_LINE_SIZE
- 
- extern char *system_type;
---- a/arch/mips/pci/Makefile
-+++ b/arch/mips/pci/Makefile
-@@ -48,3 +48,4 @@ obj-$(CONFIG_TOSHIBA_RBTX4938)	+= fixup-
- obj-$(CONFIG_VICTOR_MPC30X)	+= fixup-mpc30x.o
- obj-$(CONFIG_ZAO_CAPCELLA)	+= fixup-capcella.o
- obj-$(CONFIG_WR_PPMC)		+= fixup-wrppmc.o
-+obj-$(CONFIG_IFXMIPS)		+= pci-ifxmips.o ops-ifxmips.o
diff --git a/target/linux/ifxmips/patches/110-drivers.patch b/target/linux/ifxmips/patches/110-drivers.patch
deleted file mode 100644
index 931978fd9..000000000
--- a/target/linux/ifxmips/patches/110-drivers.patch
+++ /dev/null
@@ -1,149 +0,0 @@
---- a/drivers/char/Makefile
-+++ b/drivers/char/Makefile
-@@ -114,6 +114,10 @@ obj-$(CONFIG_PS3_FLASH)		+= ps3flash.o
- obj-$(CONFIG_JS_RTC)		+= js-rtc.o
- js-rtc-y = rtc.o
- 
-+obj-$(CONFIG_IFXMIPS_SSC)  += ifxmips_ssc.o
-+obj-$(CONFIG_IFXMIPS_EEPROM)   += ifxmips_eeprom.o
-+obj-$(CONFIG_IFXMIPS_MEI)  += ifxmips_mei_core.o
-+
- # Files generated that shall be removed upon make clean
- clean-files := consolemap_deftbl.c defkeymap.c
- 
---- a/drivers/mtd/maps/Makefile
-+++ b/drivers/mtd/maps/Makefile
-@@ -67,3 +67,4 @@ obj-$(CONFIG_MTD_PLATRAM)	+= plat-ram.o
- obj-$(CONFIG_MTD_OMAP_NOR)	+= omap_nor.o
- obj-$(CONFIG_MTD_MTX1)		+= mtx-1_flash.o
- obj-$(CONFIG_MTD_INTEL_VR_NOR)	+= intel_vr_nor.o
-+obj-$(CONFIG_MTD_IFXMIPS)  += ifxmips.o
---- a/drivers/net/Kconfig
-+++ b/drivers/net/Kconfig
-@@ -351,6 +351,12 @@ config MACB
- 
- source "drivers/net/arm/Kconfig"
- 
-+config IFXMIPS_MII0
-+	tristate "Infineon IFXMips eth0 driver"
-+	depends on IFXMIPS
-+	help
-+	  Support for the MII0 inside the IFXMips SOC
-+
- config AX88796
- 	tristate "ASIX AX88796 NE2000 clone support"
- 	depends on ARM || MIPS || SUPERH
---- a/drivers/serial/Kconfig
-+++ b/drivers/serial/Kconfig
-@@ -1334,6 +1334,14 @@ config SERIAL_OF_PLATFORM
- 	  Currently, only 8250 compatible ports are supported, but
- 	  others can easily be added.
- 
-+config SERIAL_IFXMIPS
-+	bool "IFXMips serial driver"
-+	depends on IFXMIPS
-+	select SERIAL_CORE
-+	select SERIAL_CORE_CONSOLE
-+	help
-+	  Driver for the ifxmipss built in ASC hardware
-+
- config SERIAL_QE
- 	tristate "Freescale QUICC Engine serial port support"
- 	depends on QUICC_ENGINE
---- a/drivers/serial/Makefile
-+++ b/drivers/serial/Makefile
-@@ -68,3 +68,4 @@ obj-$(CONFIG_SERIAL_OF_PLATFORM) += of_s
- obj-$(CONFIG_SERIAL_KS8695) += serial_ks8695.o
- obj-$(CONFIG_KGDB_SERIAL_CONSOLE) += kgdboc.o
- obj-$(CONFIG_SERIAL_QE) += ucc_uart.o
-+obj-$(CONFIG_SERIAL_IFXMIPS) += ifxmips_asc.o
---- a/drivers/watchdog/Makefile
-+++ b/drivers/watchdog/Makefile
-@@ -97,6 +97,7 @@ obj-$(CONFIG_WDT_RM9K_GPI) += rm9k_wdt.o
- obj-$(CONFIG_SIBYTE_WDOG) += sb_wdog.o
- obj-$(CONFIG_AR7_WDT) += ar7_wdt.o
- obj-$(CONFIG_TXX9_WDT) += txx9wdt.o
-+obj-$(CONFIG_IFXMIPS_WDT) += ifxmips_wdt.o
- 
- # PARISC Architecture
- 
---- a/drivers/net/Makefile
-+++ b/drivers/net/Makefile
-@@ -256,4 +256,4 @@ obj-$(CONFIG_NETXEN_NIC) += netxen/
- obj-$(CONFIG_NIU) += niu.o
- obj-$(CONFIG_VIRTIO_NET) += virtio_net.o
- obj-$(CONFIG_SFC) += sfc/
--
-+obj-$(CONFIG_IFXMIPS_MII0) += ifxmips_mii0.o
---- a/drivers/crypto/Kconfig
-+++ b/drivers/crypto/Kconfig
-@@ -9,6 +9,9 @@ menuconfig CRYPTO_HW
- 	  If you say N, all options in this submenu will be skipped and disabled.
- 
- if CRYPTO_HW
-+config CRYPTO_DEV_IFXMIPS
-+	tristate "Support for IFXMIPS Data Encryption Unit"
-+	depends on IFXMIPS
- 
- config CRYPTO_DEV_PADLOCK
- 	tristate "Support for VIA PadLock ACE"
---- a/drivers/crypto/Makefile
-+++ b/drivers/crypto/Makefile
-@@ -4,3 +4,4 @@ obj-$(CONFIG_CRYPTO_DEV_GEODE) += geode-
- obj-$(CONFIG_CRYPTO_DEV_HIFN_795X) += hifn_795x.o
- obj-$(CONFIG_CRYPTO_DEV_TALITOS) += talitos.o
- obj-$(CONFIG_CRYPTO_DEV_IXP4XX) += ixp4xx_crypto.o
-+obj-$(CONFIG_CRYPTO_DEV_IFXMIPS) += ifxdeu-aes.o ifxdeu-des.o ifxdeu-dma.o ifxdeu-generic.o ifxdeu-md5.o ifxdeu-sha1.o
---- a/drivers/usb/host/Kconfig
-+++ b/drivers/usb/host/Kconfig
-@@ -305,3 +305,10 @@ config SUPERH_ON_CHIP_R8A66597
- 	help
- 	   This driver enables support for the on-chip R8A66597 in the
- 	   SH7366 and SH7723 processors.
-+
-+config USB_DWC_HCD
-+	tristate "IFXMIPS USB Host Controller Driver"
-+	depends on USB && IFXMIPS 
-+	default y
-+	help
-+       Danube USB Host Controller
---- a/drivers/leds/Kconfig
-+++ b/drivers/leds/Kconfig
-@@ -153,6 +153,12 @@ config LEDS_CLEVO_MAIL
- 	  To compile this driver as a module, choose M here: the
- 	  module will be called leds-clevo-mail.
- 
-+config LEDS_IFXMIPS
-+	tristate "LED Support for IFXMIPS  LEDs"
-+	depends on LEDS_CLASS && IFXMIPS
-+	help
-+	  This option enables support for the CM-X270 LEDs.
-+
- comment "LED Triggers"
- 
- config LEDS_TRIGGERS
---- a/drivers/leds/Makefile
-+++ b/drivers/leds/Makefile
-@@ -22,6 +22,7 @@ obj-$(CONFIG_LEDS_CM_X270)              
- obj-$(CONFIG_LEDS_CLEVO_MAIL)		+= leds-clevo-mail.o
- obj-$(CONFIG_LEDS_HP6XX)		+= leds-hp6xx.o
- obj-$(CONFIG_LEDS_FSG)			+= leds-fsg.o
-+obj-$(CONFIG_LEDS_IFXMIPS)		+= leds-ifxmips.o
- 
- # LED Triggers
- obj-$(CONFIG_LEDS_TRIGGER_TIMER)	+= ledtrig-timer.o
---- a/drivers/watchdog/Kconfig
-+++ b/drivers/watchdog/Kconfig
-@@ -683,6 +683,12 @@ config TXX9_WDT
- 	help
- 	  Hardware driver for the built-in watchdog timer on TXx9 MIPS SoCs.
- 
-+config IFXMIPS_WDT
-+	bool "IFXMips watchdog"
-+	depends on IFXMIPS
-+	help
-+	  Hardware driver for the IFXMIPS Watchdog Timer.
-+
- # PARISC Architecture
- 
- # POWERPC Architecture
diff --git a/target/linux/ifxmips/patches/160-cfi-swap.patch b/target/linux/ifxmips/patches/160-cfi-swap.patch
deleted file mode 100644
index 5c98c3552..000000000
--- a/target/linux/ifxmips/patches/160-cfi-swap.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- a/drivers/mtd/chips/cfi_cmdset_0002.c
-+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
-@@ -1041,7 +1041,9 @@ static int __xipram do_write_oneword(str
- 	int retry_cnt = 0;
- 
- 	adr += chip->start;
--
-+#ifdef CONFIG_IFXMIPS
-+	adr ^= 2;
-+#endif
- 	spin_lock(chip->mutex);
- 	ret = get_chip(map, chip, adr, FL_WRITING);
- 	if (ret) {
diff --git a/target/linux/ifxmips/patches/170-dma_hack.patch b/target/linux/ifxmips/patches/170-dma_hack.patch
deleted file mode 100644
index 6175c3e8f..000000000
--- a/target/linux/ifxmips/patches/170-dma_hack.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/arch/mips/mm/cache.c
-+++ b/arch/mips/mm/cache.c
-@@ -50,6 +50,8 @@ void (*_dma_cache_wback)(unsigned long s
- void (*_dma_cache_inv)(unsigned long start, unsigned long size);
- 
- EXPORT_SYMBOL(_dma_cache_wback_inv);
-+EXPORT_SYMBOL(_dma_cache_wback);
-+EXPORT_SYMBOL(_dma_cache_inv);
- 
- #endif /* CONFIG_DMA_NONCOHERENT */
- 
-- 
2.20.1