+++ /dev/null
-CONFIG_ALIGNMENT_TRAP=y
-CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
-CONFIG_ARCH_NR_GPIO=0
-CONFIG_ARCH_ORION5X=y
-CONFIG_ARCH_REQUIRE_GPIOLIB=y
-# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
-# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
-# CONFIG_ARCH_USES_GETTIMEOFFSET is not set
-CONFIG_ARM=y
-# CONFIG_ARM_CPU_SUSPEND is not set
-CONFIG_ARM_L1_CACHE_SHIFT=5
-CONFIG_ARM_NR_BANKS=8
-CONFIG_ARM_PATCH_PHYS_VIRT=y
-# CONFIG_ARM_THUMB is not set
-# CONFIG_ARPD is not set
-# CONFIG_CACHE_L2X0 is not set
-CONFIG_CLKSRC_MMIO=y
-CONFIG_CMDLINE="rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200"
-CONFIG_CMDLINE_FORCE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_COPY_FEROCEON=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-CONFIG_CPU_FEROCEON=y
-CONFIG_CPU_FEROCEON_OLD_ID=y
-# CONFIG_CPU_ICACHE_DISABLE is not set
-CONFIG_CPU_PABRT_LEGACY=y
-CONFIG_CPU_TLB_FEROCEON=y
-CONFIG_CPU_USE_DOMAINS=y
-CONFIG_CRYPTO_AES=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_ALGAPI2=y
-CONFIG_CRYPTO_BLKCIPHER2=y
-CONFIG_CRYPTO_DEV_MV_CESA=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_HW=y
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_WORKQUEUE=y
-# CONFIG_DEBUG_USER is not set
-CONFIG_DECOMPRESS_LZMA=y
-CONFIG_DNOTIFY=y
-CONFIG_FRAME_POINTER=y
-CONFIG_GENERIC_ATOMIC64=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_PCI_IOMAP=y
-CONFIG_GPIOLIB=y
-CONFIG_GPIO_SYSFS=y
-# CONFIG_HAMRADIO is not set
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAVE_AOUT=y
-CONFIG_HAVE_ARCH_KGDB=y
-CONFIG_HAVE_ARCH_PFN_VALID=y
-CONFIG_HAVE_C_RECORDMCOUNT=y
-CONFIG_HAVE_DMA_API_DEBUG=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_GENERIC_DMA_COHERENT=y
-CONFIG_HAVE_GENERIC_HARDIRQS=y
-CONFIG_HAVE_IDE=y
-CONFIG_HAVE_IRQ_WORK=y
-CONFIG_HAVE_KERNEL_GZIP=y
-CONFIG_HAVE_KERNEL_LZMA=y
-CONFIG_HAVE_KERNEL_LZO=y
-CONFIG_HAVE_KERNEL_XZ=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_HAVE_MEMBLOCK=y
-CONFIG_HAVE_OPROFILE=y
-CONFIG_HAVE_PERF_EVENTS=y
-CONFIG_HAVE_PROC_CPU=y
-CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
-CONFIG_HAVE_SCHED_CLOCK=y
-CONFIG_HAVE_SPARSE_IRQ=y
-# CONFIG_HWMON is not set
-# CONFIG_I2C_BOARDINFO is not set
-CONFIG_INET_LRO=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_KTIME_SCALAR=y
-CONFIG_LEDS_GPIO=y
-# CONFIG_MACH_BIGDISK is not set
-# CONFIG_MACH_D2NET is not set
-# CONFIG_MACH_DB88F5281 is not set
-# CONFIG_MACH_DNS323 is not set
-# CONFIG_MACH_DT2 is not set
-# CONFIG_MACH_EDMINI_V2 is not set
-# CONFIG_MACH_KUROBOX_PRO is not set
-# CONFIG_MACH_LINKSTATION_LSCHL is not set
-# CONFIG_MACH_LINKSTATION_LS_HGL is not set
-# CONFIG_MACH_LINKSTATION_MINI is not set
-# CONFIG_MACH_LINKSTATION_PRO is not set
-# CONFIG_MACH_MSS2 is not set
-# CONFIG_MACH_MV2120 is not set
-# CONFIG_MACH_NET2BIG is not set
-# CONFIG_MACH_RD88F5181L_FXO is not set
-# CONFIG_MACH_RD88F5181L_GE is not set
-# CONFIG_MACH_RD88F5182 is not set
-# CONFIG_MACH_RD88F6183AP_GE is not set
-# CONFIG_MACH_TERASTATION_PRO2 is not set
-# CONFIG_MACH_TS209 is not set
-# CONFIG_MACH_TS409 is not set
-# CONFIG_MACH_TS78XX is not set
-CONFIG_MACH_WN802T=y
-CONFIG_MACH_WNR854T=y
-CONFIG_MACH_WRT350N_V2=y
-CONFIG_MDIO_BOARDINFO=y
-CONFIG_MTD_PHYSMAP=y
-CONFIG_MV643XX_ETH=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_NEED_PER_CPU_KM=y
-CONFIG_NET_DSA=y
-# CONFIG_NET_DSA_MV88E6060 is not set
-CONFIG_NET_DSA_MV88E6131=y
-CONFIG_NET_DSA_MV88E6XXX=y
-CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
-CONFIG_NET_DSA_TAG_DSA=y
-# CONFIG_NET_DSA_TAG_TRAILER is not set
-# CONFIG_NET_VENDOR_3COM is not set
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_PCI=y
-CONFIG_PERF_USE_VMALLOC=y
-CONFIG_PHYLIB=y
-CONFIG_PLAT_ORION=y
-# CONFIG_PREEMPT_RCU is not set
-# CONFIG_RTC_CLASS is not set
-# CONFIG_SCSI_DMA is not set
-CONFIG_SPLIT_PTLOCK_CPUS=999999
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_UID16=y
-CONFIG_USB_ARCH_HAS_XHCI=y
-CONFIG_USB_SUPPORT=y
-CONFIG_VECTORS_BASE=0xffff0000
-# CONFIG_VFP is not set
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_XZ_DEC_ARM=y
-CONFIG_XZ_DEC_BCJ=y
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZONE_DMA_FLAG=0
--- /dev/null
+CONFIG_ALIGNMENT_TRAP=y
+CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
+CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
+CONFIG_ARCH_NR_GPIO=0
+CONFIG_ARCH_ORION5X=y
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
+# CONFIG_ARCH_USES_GETTIMEOFFSET is not set
+CONFIG_ARM=y
+# CONFIG_ARM_CPU_SUSPEND is not set
+CONFIG_ARM_L1_CACHE_SHIFT=5
+CONFIG_ARM_NR_BANKS=8
+CONFIG_ARM_PATCH_PHYS_VIRT=y
+# CONFIG_ARM_THUMB is not set
+# CONFIG_ARPD is not set
+# CONFIG_CACHE_L2X0 is not set
+CONFIG_CLKSRC_MMIO=y
+CONFIG_CMDLINE="rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200"
+CONFIG_CMDLINE_FORCE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_FEROCEON=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+CONFIG_CPU_FEROCEON=y
+CONFIG_CPU_FEROCEON_OLD_ID=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+CONFIG_CPU_PABRT_LEGACY=y
+CONFIG_CPU_TLB_FEROCEON=y
+CONFIG_CPU_USE_DOMAINS=y
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_BLKCIPHER2=y
+CONFIG_CRYPTO_DEV_MV_CESA=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_HASH2=y
+CONFIG_CRYPTO_HW=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_WORKQUEUE=y
+# CONFIG_DEBUG_USER is not set
+CONFIG_DECOMPRESS_LZMA=y
+CONFIG_DNOTIFY=y
+CONFIG_FRAME_POINTER=y
+CONFIG_GENERIC_ATOMIC64=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_IRQ_CHIP=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GPIOLIB=y
+CONFIG_GPIO_SYSFS=y
+# CONFIG_HAMRADIO is not set
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_HAS_DMA=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAVE_AOUT=y
+CONFIG_HAVE_ARCH_KGDB=y
+CONFIG_HAVE_ARCH_PFN_VALID=y
+CONFIG_HAVE_C_RECORDMCOUNT=y
+CONFIG_HAVE_DMA_API_DEBUG=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_HAVE_GENERIC_HARDIRQS=y
+CONFIG_HAVE_IDE=y
+CONFIG_HAVE_IRQ_WORK=y
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_LZMA=y
+CONFIG_HAVE_KERNEL_LZO=y
+CONFIG_HAVE_KERNEL_XZ=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_HAVE_MEMBLOCK=y
+CONFIG_HAVE_OPROFILE=y
+CONFIG_HAVE_PERF_EVENTS=y
+CONFIG_HAVE_PROC_CPU=y
+CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
+CONFIG_HAVE_SCHED_CLOCK=y
+CONFIG_HAVE_SPARSE_IRQ=y
+# CONFIG_HWMON is not set
+# CONFIG_I2C_BOARDINFO is not set
+CONFIG_INET_LRO=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_KTIME_SCALAR=y
+CONFIG_LEDS_GPIO=y
+# CONFIG_MACH_BIGDISK is not set
+# CONFIG_MACH_D2NET is not set
+# CONFIG_MACH_DB88F5281 is not set
+# CONFIG_MACH_DNS323 is not set
+# CONFIG_MACH_DT2 is not set
+# CONFIG_MACH_EDMINI_V2 is not set
+# CONFIG_MACH_KUROBOX_PRO is not set
+# CONFIG_MACH_LINKSTATION_LSCHL is not set
+# CONFIG_MACH_LINKSTATION_LS_HGL is not set
+# CONFIG_MACH_LINKSTATION_MINI is not set
+# CONFIG_MACH_LINKSTATION_PRO is not set
+# CONFIG_MACH_MSS2 is not set
+# CONFIG_MACH_MV2120 is not set
+# CONFIG_MACH_NET2BIG is not set
+# CONFIG_MACH_RD88F5181L_FXO is not set
+# CONFIG_MACH_RD88F5181L_GE is not set
+# CONFIG_MACH_RD88F5182 is not set
+# CONFIG_MACH_RD88F6183AP_GE is not set
+# CONFIG_MACH_TERASTATION_PRO2 is not set
+# CONFIG_MACH_TS209 is not set
+# CONFIG_MACH_TS409 is not set
+# CONFIG_MACH_TS78XX is not set
+CONFIG_MACH_WN802T=y
+CONFIG_MACH_WNR854T=y
+CONFIG_MACH_WRT350N_V2=y
+CONFIG_MDIO_BOARDINFO=y
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MV643XX_ETH=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_NEED_PER_CPU_KM=y
+CONFIG_NET_DSA=y
+# CONFIG_NET_DSA_MV88E6060 is not set
+CONFIG_NET_DSA_MV88E6131=y
+CONFIG_NET_DSA_MV88E6XXX=y
+CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
+CONFIG_NET_DSA_TAG_DSA=y
+# CONFIG_NET_DSA_TAG_TRAILER is not set
+# CONFIG_NET_VENDOR_3COM is not set
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_PCI=y
+CONFIG_PERF_USE_VMALLOC=y
+CONFIG_PHYLIB=y
+CONFIG_PLAT_ORION=y
+# CONFIG_PREEMPT_RCU is not set
+# CONFIG_RTC_CLASS is not set
+# CONFIG_SCSI_DMA is not set
+CONFIG_SPLIT_PTLOCK_CPUS=999999
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_UID16=y
+CONFIG_USB_ARCH_HAS_XHCI=y
+CONFIG_USB_SUPPORT=y
+CONFIG_VECTORS_BASE=0xffff0000
+# CONFIG_VFP is not set
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_XZ_DEC_ARM=y
+CONFIG_XZ_DEC_BCJ=y
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZONE_DMA_FLAG=0
+++ /dev/null
-CONFIG_ATA=y
-CONFIG_BLK_DEV_DM=y
-CONFIG_BLK_DEV_MD=y
-CONFIG_BLK_DEV_SD=y
-CONFIG_CRC16=y
-# CONFIG_DM_CRYPT is not set
-# CONFIG_DM_MIRROR is not set
-# CONFIG_DM_SNAPSHOT is not set
-CONFIG_EXT4_FS=y
-CONFIG_FS_MBCACHE=y
-CONFIG_HWMON=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_JBD2=y
-CONFIG_MACH_DT2=y
-CONFIG_MD=y
-CONFIG_MD_AUTODETECT=y
-CONFIG_MD_LINEAR=y
-# CONFIG_MD_MULTIPATH is not set
-CONFIG_MD_RAID0=y
-CONFIG_MD_RAID1=y
-# CONFIG_MD_RAID10 is not set
-# CONFIG_MD_RAID456 is not set
-CONFIG_NLS=y
-CONFIG_RTC_CLASS=y
-CONFIG_SATA_MV=y
-CONFIG_SCSI=y
-CONFIG_SCSI_MOD=y
-CONFIG_USB=y
-CONFIG_USB_COMMON=y
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_TT_NEWSCHED=y
-CONFIG_USB_STORAGE=y
--- /dev/null
+CONFIG_ATA=y
+CONFIG_BLK_DEV_DM=y
+CONFIG_BLK_DEV_MD=y
+CONFIG_BLK_DEV_SD=y
+CONFIG_CRC16=y
+# CONFIG_DM_CRYPT is not set
+# CONFIG_DM_MIRROR is not set
+# CONFIG_DM_SNAPSHOT is not set
+CONFIG_EXT4_FS=y
+CONFIG_FS_MBCACHE=y
+CONFIG_HWMON=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_JBD2=y
+CONFIG_MACH_DT2=y
+CONFIG_MD=y
+CONFIG_MD_AUTODETECT=y
+CONFIG_MD_LINEAR=y
+# CONFIG_MD_MULTIPATH is not set
+CONFIG_MD_RAID0=y
+CONFIG_MD_RAID1=y
+# CONFIG_MD_RAID10 is not set
+# CONFIG_MD_RAID456 is not set
+CONFIG_NLS=y
+CONFIG_RTC_CLASS=y
+CONFIG_SATA_MV=y
+CONFIG_SCSI=y
+CONFIG_SCSI_MOD=y
+CONFIG_USB=y
+CONFIG_USB_COMMON=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+CONFIG_USB_STORAGE=y
+++ /dev/null
---- a/arch/arm/mach-orion5x/wrt350n-v2-setup.c
-+++ b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
-@@ -134,11 +134,11 @@ static struct mtd_partition wrt350n_v2_n
- {
- .name = "kernel",
- .offset = 0x00000000,
-- .size = 0x00760000,
-+ .size = 0x00100000, // change to kernel mtd size here (1/3)
- }, {
- .name = "rootfs",
-- .offset = 0x001a0000,
-- .size = 0x005c0000,
-+ .offset = 0x00100000, // change to kernel mtd size here (2/3)
-+ .size = 0x00650000, // adopt to kernel mtd size here (3/3) = 0x00750000 - <kernel mtd size>
- }, {
- .name = "lang",
- .offset = 0x00760000,
-@@ -151,6 +151,14 @@ static struct mtd_partition wrt350n_v2_n
- .name = "u-boot",
- .offset = 0x007c0000,
- .size = 0x00040000,
-+ }, {
-+ .name = "eRcOmM_do_not_touch",
-+ .offset = 0x00750000,
-+ .size = 0x00010000, // erasesize
-+ }, {
-+ .name = "image", // for sysupgrade
-+ .offset = 0x00000000,
-+ .size = 0x00750000,
- },
- };
-
+++ /dev/null
---- a/arch/arm/mach-orion5x/wnr854t-setup.c
-+++ b/arch/arm/mach-orion5x/wnr854t-setup.c
-@@ -66,6 +66,10 @@ static struct mtd_partition wnr854t_nor_
- .name = "uboot",
- .offset = 0x00760000,
- .size = 0x00040000,
-+ }, {
-+ .name = "image", // for sysupgrade
-+ .offset = 0x00000000,
-+ .size = 0x00760000,
- },
- };
-
+++ /dev/null
---- a/arch/arm/mach-orion5x/Kconfig
-+++ b/arch/arm/mach-orion5x/Kconfig
-@@ -16,6 +16,13 @@ config MACH_RD88F5182
- Say 'Y' here if you want your kernel to support the
- Marvell Orion-NAS (88F5182) RD2
-
-+config MACH_DT2
-+ bool "Freecom DataTank Gateway"
-+ select I2C_BOARDINFO
-+ help
-+ Say 'Y' here if you want your kernel to support the
-+ Freecom DataTank Gateway
-+
- config MACH_KUROBOX_PRO
- bool "KuroBox Pro"
- select I2C_BOARDINFO
---- a/arch/arm/mach-orion5x/Makefile
-+++ b/arch/arm/mach-orion5x/Makefile
-@@ -18,6 +18,7 @@ obj-$(CONFIG_MACH_BIGDISK) += d2net-setu
- obj-$(CONFIG_MACH_NET2BIG) += net2big-setup.o
- obj-$(CONFIG_MACH_MSS2) += mss2-setup.o
- obj-$(CONFIG_MACH_WNR854T) += wnr854t-setup.o
-+obj-$(CONFIG_MACH_DT2) += dt2-setup.o
- obj-$(CONFIG_MACH_RD88F5181L_GE) += rd88f5181l-ge-setup.o
- obj-$(CONFIG_MACH_RD88F5181L_FXO) += rd88f5181l-fxo-setup.o
- obj-$(CONFIG_MACH_RD88F6183AP_GE) += rd88f6183ap-ge-setup.o
+++ /dev/null
---- a/arch/arm/mach-orion5x/Kconfig
-+++ b/arch/arm/mach-orion5x/Kconfig
-@@ -139,10 +139,13 @@ config MACH_MSS2
- Maxtor Shared Storage II platform.
-
- config MACH_WNR854T
-- bool "Netgear WNR854T"
-+ bool "Netgear WNR854T / WN802T"
- help
- Say 'Y' here if you want your kernel to support the
-- Netgear WNR854T platform.
-+ Netgear WNR854T or WN802T platform.
-+
-+config MACH_WN802T
-+ def_bool MACH_WNR854T
-
- config MACH_RD88F5181L_GE
- bool "Marvell Orion-VoIP GE Reference Design"
---- a/arch/arm/mach-orion5x/wnr854t-setup.c
-+++ b/arch/arm/mach-orion5x/wnr854t-setup.c
-@@ -115,6 +115,15 @@ static struct dsa_platform_data wnr854t_
- .chip = &wnr854t_switch_chip_data,
- };
-
-+static struct dsa_chip_data wn802t_switch_chip_data = {
-+ .port_names[2] = "wan",
-+ .port_names[3] = "cpu",
-+};
-+
-+static struct dsa_platform_data wn802t_switch_plat_data = {
-+ .nr_chips = 1,
-+ .chip = &wn802t_switch_chip_data,
-+};
- static void __init wnr854t_init(void)
- {
- /*
-@@ -128,7 +137,12 @@ static void __init wnr854t_init(void)
- * Configure peripherals.
- */
- orion5x_eth_init(&wnr854t_eth_data);
-- orion5x_eth_switch_init(&wnr854t_switch_plat_data, NO_IRQ);
-+
-+ if (machine_is_wn802t())
-+ orion5x_eth_switch_init(&wn802t_switch_plat_data, NO_IRQ);
-+ else
-+ orion5x_eth_switch_init(&wnr854t_switch_plat_data, NO_IRQ);
-+
- orion5x_uart0_init();
-
- orion5x_setup_dev_boot_win(WNR854T_NOR_BOOT_BASE,
-@@ -167,7 +181,7 @@ static struct hw_pci wnr854t_pci __initd
-
- static int __init wnr854t_pci_init(void)
- {
-- if (machine_is_wnr854t())
-+ if (machine_is_wnr854t() || machine_is_wn802t())
- pci_common_init(&wnr854t_pci);
-
- return 0;
-@@ -178,6 +192,18 @@ MACHINE_START(WNR854T, "Netgear WNR854T"
- /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
- .atag_offset = 0x100,
- .init_machine = wnr854t_init,
-+ .map_io = orion5x_map_io,
-+ .init_early = orion5x_init_early,
-+ .init_irq = orion5x_init_irq,
-+ .timer = &orion5x_timer,
-+ .fixup = tag_fixup_mem32,
-+ .restart = orion5x_restart,
-+MACHINE_END
-+
-+MACHINE_START(WN802T, "Netgear WN802T")
-+ /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
-+ .atag_offset = 0x100,
-+ .init_machine = wnr854t_init,
- .map_io = orion5x_map_io,
- .init_early = orion5x_init_early,
- .init_irq = orion5x_init_irq,
+++ /dev/null
---- a/arch/arm/mach-orion5x/common.c
-+++ b/arch/arm/mach-orion5x/common.c
-@@ -192,7 +192,7 @@ void __init orion5x_init_early(void)
-
- int orion5x_tclk;
-
--int __init orion5x_find_tclk(void)
-+static __init int orion5x_find_tclk(void)
- {
- u32 dev, rev;
-
-@@ -204,7 +204,7 @@ int __init orion5x_find_tclk(void)
- return 166666667;
- }
-
--static void orion5x_timer_init(void)
-+static __init void orion5x_timer_init(void)
- {
- orion5x_tclk = orion5x_find_tclk();
-
---- a/arch/arm/mach-orion5x/addr-map.c
-+++ b/arch/arm/mach-orion5x/addr-map.c
-@@ -76,7 +76,7 @@ static int __init cpu_win_can_remap(cons
- /*
- * Description of the windows needed by the platform code
- */
--static struct __initdata orion_addr_map_cfg addr_map_cfg = {
-+static struct orion_addr_map_cfg addr_map_cfg __initdata = {
- .num_wins = 8,
- .cpu_win_can_remap = cpu_win_can_remap,
- .bridge_virt_base = ORION5X_BRIDGE_VIRT_BASE,
+++ /dev/null
---- a/arch/arm/mach-orion5x/dt2-setup.c
-+++ b/arch/arm/mach-orion5x/dt2-setup.c
-@@ -146,7 +146,7 @@ void __init dt2_pci_preinit(void)
- }
- }
-
--static int __init dt2_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
-+static int __init dt2_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
- {
- int irq;
-
-@@ -383,8 +383,7 @@ __tagtable(ATAG_MV_UBOOT, parse_tag_dt2_
- *
- * Vanilla kernel should use "tag_fixup_mem32" function.
- */
--void __init openwrt_fixup(struct machine_desc *mdesc, struct tag *t,
-- char **from, struct meminfo *meminfo)
-+void __init openwrt_fixup(struct tag *t, char **from, struct meminfo *meminfo)
- {
- char *p = NULL;
- static char openwrt_init_tag[] __initdata = " init=/etc/preinit";
-@@ -437,10 +436,11 @@ void __init openwrt_fixup(struct machine
- /* Warning: Freecom uses their own custom bootloader with mach-type (=1500) */
- MACHINE_START(DT2, "Freecom DataTank Gateway")
- /* Maintainer: Zintis Petersons <Zintis.Petersons@abcsolutions.lv> */
-- .boot_params = 0x00000100,
-+ .atag_offset = 0x100,
- .init_machine = dt2_init,
- .map_io = orion5x_map_io,
- .init_irq = orion5x_init_irq,
- .timer = &orion5x_timer,
- .fixup = openwrt_fixup, //tag_fixup_mem32,
-+ .restart = orion5x_restart,
- MACHINE_END
--- /dev/null
+--- a/arch/arm/mach-orion5x/wrt350n-v2-setup.c
++++ b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
+@@ -134,11 +134,11 @@ static struct mtd_partition wrt350n_v2_n
+ {
+ .name = "kernel",
+ .offset = 0x00000000,
+- .size = 0x00760000,
++ .size = 0x00100000, // change to kernel mtd size here (1/3)
+ }, {
+ .name = "rootfs",
+- .offset = 0x001a0000,
+- .size = 0x005c0000,
++ .offset = 0x00100000, // change to kernel mtd size here (2/3)
++ .size = 0x00650000, // adopt to kernel mtd size here (3/3) = 0x00750000 - <kernel mtd size>
+ }, {
+ .name = "lang",
+ .offset = 0x00760000,
+@@ -151,6 +151,14 @@ static struct mtd_partition wrt350n_v2_n
+ .name = "u-boot",
+ .offset = 0x007c0000,
+ .size = 0x00040000,
++ }, {
++ .name = "eRcOmM_do_not_touch",
++ .offset = 0x00750000,
++ .size = 0x00010000, // erasesize
++ }, {
++ .name = "image", // for sysupgrade
++ .offset = 0x00000000,
++ .size = 0x00750000,
+ },
+ };
+
--- /dev/null
+--- a/arch/arm/mach-orion5x/wnr854t-setup.c
++++ b/arch/arm/mach-orion5x/wnr854t-setup.c
+@@ -66,6 +66,10 @@ static struct mtd_partition wnr854t_nor_
+ .name = "uboot",
+ .offset = 0x00760000,
+ .size = 0x00040000,
++ }, {
++ .name = "image", // for sysupgrade
++ .offset = 0x00000000,
++ .size = 0x00760000,
+ },
+ };
+
--- /dev/null
+--- a/arch/arm/mach-orion5x/Kconfig
++++ b/arch/arm/mach-orion5x/Kconfig
+@@ -16,6 +16,13 @@ config MACH_RD88F5182
+ Say 'Y' here if you want your kernel to support the
+ Marvell Orion-NAS (88F5182) RD2
+
++config MACH_DT2
++ bool "Freecom DataTank Gateway"
++ select I2C_BOARDINFO
++ help
++ Say 'Y' here if you want your kernel to support the
++ Freecom DataTank Gateway
++
+ config MACH_KUROBOX_PRO
+ bool "KuroBox Pro"
+ select I2C_BOARDINFO
+--- a/arch/arm/mach-orion5x/Makefile
++++ b/arch/arm/mach-orion5x/Makefile
+@@ -18,6 +18,7 @@ obj-$(CONFIG_MACH_BIGDISK) += d2net-setu
+ obj-$(CONFIG_MACH_NET2BIG) += net2big-setup.o
+ obj-$(CONFIG_MACH_MSS2) += mss2-setup.o
+ obj-$(CONFIG_MACH_WNR854T) += wnr854t-setup.o
++obj-$(CONFIG_MACH_DT2) += dt2-setup.o
+ obj-$(CONFIG_MACH_RD88F5181L_GE) += rd88f5181l-ge-setup.o
+ obj-$(CONFIG_MACH_RD88F5181L_FXO) += rd88f5181l-fxo-setup.o
+ obj-$(CONFIG_MACH_RD88F6183AP_GE) += rd88f6183ap-ge-setup.o
--- /dev/null
+--- a/arch/arm/mach-orion5x/Kconfig
++++ b/arch/arm/mach-orion5x/Kconfig
+@@ -139,10 +139,13 @@ config MACH_MSS2
+ Maxtor Shared Storage II platform.
+
+ config MACH_WNR854T
+- bool "Netgear WNR854T"
++ bool "Netgear WNR854T / WN802T"
+ help
+ Say 'Y' here if you want your kernel to support the
+- Netgear WNR854T platform.
++ Netgear WNR854T or WN802T platform.
++
++config MACH_WN802T
++ def_bool MACH_WNR854T
+
+ config MACH_RD88F5181L_GE
+ bool "Marvell Orion-VoIP GE Reference Design"
+--- a/arch/arm/mach-orion5x/wnr854t-setup.c
++++ b/arch/arm/mach-orion5x/wnr854t-setup.c
+@@ -115,6 +115,15 @@ static struct dsa_platform_data wnr854t_
+ .chip = &wnr854t_switch_chip_data,
+ };
+
++static struct dsa_chip_data wn802t_switch_chip_data = {
++ .port_names[2] = "wan",
++ .port_names[3] = "cpu",
++};
++
++static struct dsa_platform_data wn802t_switch_plat_data = {
++ .nr_chips = 1,
++ .chip = &wn802t_switch_chip_data,
++};
+ static void __init wnr854t_init(void)
+ {
+ /*
+@@ -128,7 +137,12 @@ static void __init wnr854t_init(void)
+ * Configure peripherals.
+ */
+ orion5x_eth_init(&wnr854t_eth_data);
+- orion5x_eth_switch_init(&wnr854t_switch_plat_data, NO_IRQ);
++
++ if (machine_is_wn802t())
++ orion5x_eth_switch_init(&wn802t_switch_plat_data, NO_IRQ);
++ else
++ orion5x_eth_switch_init(&wnr854t_switch_plat_data, NO_IRQ);
++
+ orion5x_uart0_init();
+
+ orion5x_setup_dev_boot_win(WNR854T_NOR_BOOT_BASE,
+@@ -167,7 +181,7 @@ static struct hw_pci wnr854t_pci __initd
+
+ static int __init wnr854t_pci_init(void)
+ {
+- if (machine_is_wnr854t())
++ if (machine_is_wnr854t() || machine_is_wn802t())
+ pci_common_init(&wnr854t_pci);
+
+ return 0;
+@@ -178,6 +192,18 @@ MACHINE_START(WNR854T, "Netgear WNR854T"
+ /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
+ .atag_offset = 0x100,
+ .init_machine = wnr854t_init,
++ .map_io = orion5x_map_io,
++ .init_early = orion5x_init_early,
++ .init_irq = orion5x_init_irq,
++ .timer = &orion5x_timer,
++ .fixup = tag_fixup_mem32,
++ .restart = orion5x_restart,
++MACHINE_END
++
++MACHINE_START(WN802T, "Netgear WN802T")
++ /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
++ .atag_offset = 0x100,
++ .init_machine = wnr854t_init,
+ .map_io = orion5x_map_io,
+ .init_early = orion5x_init_early,
+ .init_irq = orion5x_init_irq,
--- /dev/null
+--- a/arch/arm/mach-orion5x/common.c
++++ b/arch/arm/mach-orion5x/common.c
+@@ -192,7 +192,7 @@ void __init orion5x_init_early(void)
+
+ int orion5x_tclk;
+
+-int __init orion5x_find_tclk(void)
++static __init int orion5x_find_tclk(void)
+ {
+ u32 dev, rev;
+
+@@ -204,7 +204,7 @@ int __init orion5x_find_tclk(void)
+ return 166666667;
+ }
+
+-static void orion5x_timer_init(void)
++static __init void orion5x_timer_init(void)
+ {
+ orion5x_tclk = orion5x_find_tclk();
+
+--- a/arch/arm/mach-orion5x/addr-map.c
++++ b/arch/arm/mach-orion5x/addr-map.c
+@@ -76,7 +76,7 @@ static int __init cpu_win_can_remap(cons
+ /*
+ * Description of the windows needed by the platform code
+ */
+-static struct __initdata orion_addr_map_cfg addr_map_cfg = {
++static struct orion_addr_map_cfg addr_map_cfg __initdata = {
+ .num_wins = 8,
+ .cpu_win_can_remap = cpu_win_can_remap,
+ .bridge_virt_base = ORION5X_BRIDGE_VIRT_BASE,
--- /dev/null
+--- a/arch/arm/mach-orion5x/dt2-setup.c
++++ b/arch/arm/mach-orion5x/dt2-setup.c
+@@ -146,7 +146,7 @@ void __init dt2_pci_preinit(void)
+ }
+ }
+
+-static int __init dt2_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
++static int __init dt2_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+ {
+ int irq;
+
+@@ -383,8 +383,7 @@ __tagtable(ATAG_MV_UBOOT, parse_tag_dt2_
+ *
+ * Vanilla kernel should use "tag_fixup_mem32" function.
+ */
+-void __init openwrt_fixup(struct machine_desc *mdesc, struct tag *t,
+- char **from, struct meminfo *meminfo)
++void __init openwrt_fixup(struct tag *t, char **from, struct meminfo *meminfo)
+ {
+ char *p = NULL;
+ static char openwrt_init_tag[] __initdata = " init=/etc/preinit";
+@@ -437,10 +436,11 @@ void __init openwrt_fixup(struct machine
+ /* Warning: Freecom uses their own custom bootloader with mach-type (=1500) */
+ MACHINE_START(DT2, "Freecom DataTank Gateway")
+ /* Maintainer: Zintis Petersons <Zintis.Petersons@abcsolutions.lv> */
+- .boot_params = 0x00000100,
++ .atag_offset = 0x100,
+ .init_machine = dt2_init,
+ .map_io = orion5x_map_io,
+ .init_irq = orion5x_init_irq,
+ .timer = &orion5x_timer,
+ .fixup = openwrt_fixup, //tag_fixup_mem32,
++ .restart = orion5x_restart,
+ MACHINE_END