From 2083bb5e6ffcbda2a1544d8009ad638c8ea24c2b Mon Sep 17 00:00:00 2001 From: Gabor Juhos Date: Tue, 30 Dec 2008 13:46:43 +0000 Subject: [PATCH] add experimental support for the NETGEAR WNR2000 board SVN-Revision: 13775 --- target/linux/ar71xx/config-2.6.26 | 1 + target/linux/ar71xx/config-2.6.27 | 1 + target/linux/ar71xx/config-2.6.28 | 1 + .../mips/include/asm/mach-ar71xx/ar71xx.h | 1 + .../ar71xx/files/arch/mips/ar71xx/Kconfig | 4 + .../ar71xx/files/arch/mips/ar71xx/Makefile | 1 + .../files/arch/mips/ar71xx/mach-wnr2000.c | 86 +++++++++++++++++++ .../ar71xx/files/arch/mips/ar71xx/prom.c | 3 + .../include/asm-mips/mach-ar71xx/ar71xx.h | 1 + 9 files changed, 99 insertions(+) create mode 100644 target/linux/ar71xx/files/arch/mips/ar71xx/mach-wnr2000.c diff --git a/target/linux/ar71xx/config-2.6.26 b/target/linux/ar71xx/config-2.6.26 index 6fe9333963..4f6340581f 100644 --- a/target/linux/ar71xx/config-2.6.26 +++ b/target/linux/ar71xx/config-2.6.26 @@ -11,6 +11,7 @@ CONFIG_AR71XX_MACH_RB_4XX=y CONFIG_AR71XX_MACH_TEW_632BRP=y CONFIG_AR71XX_MACH_UBNT=y CONFIG_AR71XX_MACH_WP543=y +CONFIG_AR71XX_MACH_WNR2000=y CONFIG_AR71XX_WDT=y # CONFIG_ARCH_HAS_ILOG2_U32 is not set # CONFIG_ARCH_HAS_ILOG2_U64 is not set diff --git a/target/linux/ar71xx/config-2.6.27 b/target/linux/ar71xx/config-2.6.27 index 830a837c72..15fb517b7b 100644 --- a/target/linux/ar71xx/config-2.6.27 +++ b/target/linux/ar71xx/config-2.6.27 @@ -11,6 +11,7 @@ CONFIG_AR71XX_MACH_RB_4XX=y CONFIG_AR71XX_MACH_TEW_632BRP=y CONFIG_AR71XX_MACH_UBNT=y CONFIG_AR71XX_MACH_WP543=y +CONFIG_AR71XX_MACH_WNR2000=y CONFIG_AR71XX_WDT=y # CONFIG_ARCH_HAS_ILOG2_U32 is not set # CONFIG_ARCH_HAS_ILOG2_U64 is not set diff --git a/target/linux/ar71xx/config-2.6.28 b/target/linux/ar71xx/config-2.6.28 index b0984ddad1..ef6b85272d 100644 --- a/target/linux/ar71xx/config-2.6.28 +++ b/target/linux/ar71xx/config-2.6.28 @@ -11,6 +11,7 @@ CONFIG_AR71XX_MACH_RB_4XX=y CONFIG_AR71XX_MACH_TEW_632BRP=y CONFIG_AR71XX_MACH_UBNT=y CONFIG_AR71XX_MACH_WP543=y +CONFIG_AR71XX_MACH_WNR2000=y CONFIG_AR71XX_WDT=y # CONFIG_ARCH_HAS_ILOG2_U32 is not set # CONFIG_ARCH_HAS_ILOG2_U64 is not set diff --git a/target/linux/ar71xx/files-2.6.28/arch/mips/include/asm/mach-ar71xx/ar71xx.h b/target/linux/ar71xx/files-2.6.28/arch/mips/include/asm/mach-ar71xx/ar71xx.h index 9b423abd8e..64fe5555c7 100644 --- a/target/linux/ar71xx/files-2.6.28/arch/mips/include/asm/mach-ar71xx/ar71xx.h +++ b/target/linux/ar71xx/files-2.6.28/arch/mips/include/asm/mach-ar71xx/ar71xx.h @@ -119,6 +119,7 @@ extern unsigned long ar71xx_mach_type; #define AR71XX_MACH_TEW_632BRP 8 /* TRENDnet TEW-632BRP */ #define AR71XX_MACH_UBNT_RS 9 /* Ubiquiti RouterStation */ #define AR71XX_MACH_UBNT_LSX 10 /* Ubiquiti LSX */ +#define AR71XX_MACH_WNR2000 11 /* NETGEAR WNR2000 */ /* * PLL block diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig b/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig index 66500a94bd..e10a7c9572 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig @@ -27,6 +27,10 @@ config AR71XX_MACH_RB_4XX bool "MikroTik RouterBOARD 4xx series support" default y +config AR71XX_MACH_WNR2000 + bool "NETGEAR WNR2000 board support" + default y + config AR71XX_MACH_TEW_632BRP bool "TRENDnet TEW-632BRP support" default y diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/Makefile b/target/linux/ar71xx/files/arch/mips/ar71xx/Makefile index 902cbc353f..588d23f6a9 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/Makefile +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/Makefile @@ -17,3 +17,4 @@ obj-$(CONFIG_AR71XX_MACH_RB_4XX) += mach-rb-4xx.o obj-$(CONFIG_AR71XX_MACH_TEW_632BRP) += mach-tew-632brp.o obj-$(CONFIG_AR71XX_MACH_UBNT) += mach-ubnt.o obj-$(CONFIG_AR71XX_MACH_WP543) += mach-wp543.o +obj-$(CONFIG_AR71XX_MACH_WNR2000) += mach-wnr2000.o diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wnr2000.c b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wnr2000.c new file mode 100644 index 0000000000..70053deb02 --- /dev/null +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wnr2000.c @@ -0,0 +1,86 @@ +/* + * NETGEAR WNR2000 board support + * + * Copyright (C) 2008 Gabor Juhos + * Copyright (C) 2008 Imre Kaloz + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation. + */ + +#include +#include +#include +#include +#include + +#include + +#include +#include + +#ifdef CONFIG_MTD_PARTITIONS +static struct mtd_partition wnr2000_partitions[] = { + { + .name = "u-boot", + .offset = 0, + .size = 0x040000, + .mask_flags = MTD_WRITEABLE, + } , { + .name = "u-boot-env", + .offset = 0x040000, + .size = 0x010000, + } , { + .name = "rootfs", + .offset = 0x050000, + .size = 0x240000, + } , { + .name = "user-config", + .offset = 0x290000, + .size = 0x010000, + } , { + .name = "uImage", + .offset = 0x2a0000, + .size = 0x120000, + } , { + .name = "language_table", + .offset = 0x3c0000, + .size = 0x020000, + } , { + .name = "rootfs_checksum", + .offset = 0x3e0000, + .size = 0x010000, + } , { + .name = "art", + .offset = 0x3f0000, + .size = 0x010000, + .mask_flags = MTD_WRITEABLE, + } +}; +#endif /* CONFIG_MTD_PARTITIONS */ + +static struct flash_platform_data wnr2000_flash_data = { +#ifdef CONFIG_MTD_PARTITIONS + .parts = wnr2000_partitions, + .nr_parts = ARRAY_SIZE(wnr2000_partitions), +#endif +}; + +static struct spi_board_info wnr2000_spi_info[] = { + { + .bus_num = 0, + .chip_select = 0, + .max_speed_hz = 25000000, + .modalias = "m25p80", + .platform_data = &wnr2000_flash_data, + } +}; + +static void __init wnr2000_setup(void) +{ + ar71xx_add_device_spi(NULL, wnr2000_spi_info, + ARRAY_SIZE(wnr2000_spi_info)); +} + +MIPS_MACHINE(AR71XX_MACH_TEW_632BRP, "NETGEAR WNR2000", wnr2000_setup); diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/prom.c b/target/linux/ar71xx/files/arch/mips/ar71xx/prom.c index 005d84acf9..f9984ca1c4 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/prom.c +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/prom.c @@ -58,6 +58,9 @@ static struct board_rec boards[] __initdata = { }, { .name = "UBNT-LSX", .mach_type = AR71XX_MACH_UBNT_LSX, + }, { + .name = "WNR2000", + .mach_type = AR71XX_MACH_WNR2000, } }; diff --git a/target/linux/ar71xx/files/include/asm-mips/mach-ar71xx/ar71xx.h b/target/linux/ar71xx/files/include/asm-mips/mach-ar71xx/ar71xx.h index 9b423abd8e..64fe5555c7 100644 --- a/target/linux/ar71xx/files/include/asm-mips/mach-ar71xx/ar71xx.h +++ b/target/linux/ar71xx/files/include/asm-mips/mach-ar71xx/ar71xx.h @@ -119,6 +119,7 @@ extern unsigned long ar71xx_mach_type; #define AR71XX_MACH_TEW_632BRP 8 /* TRENDnet TEW-632BRP */ #define AR71XX_MACH_UBNT_RS 9 /* Ubiquiti RouterStation */ #define AR71XX_MACH_UBNT_LSX 10 /* Ubiquiti LSX */ +#define AR71XX_MACH_WNR2000 11 /* NETGEAR WNR2000 */ /* * PLL block