From b73b915c549cadd8717c986447676240b553563c Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Fri, 13 Sep 2013 19:24:08 +0000 Subject: [PATCH] brcm47xx: board detection, GPIO for Linksys E1000 V2.1 This patch adds board detection for the Linksys E1000 V2.1 router, as well as GPIO support for same. This fixes bug #14135. Currently, wired networking isn't working on the router, and I haven't tried the wireless, but with this patch, OpenWRT successfully boots, and all the LEDs and buttons work properly. Signed-off-by: Zachary Catlin Signed-off-by: Hauke Mehrtens SVN-Revision: 37977 --- package/kernel/broadcom-diag/src/diag.c | 16 ++++++++++++++++ .../260-MIPS-BCM47XX-add-board-detection.patch | 6 ++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/package/kernel/broadcom-diag/src/diag.c b/package/kernel/broadcom-diag/src/diag.c index f3f70504de..3f58718ec9 100644 --- a/package/kernel/broadcom-diag/src/diag.c +++ b/package/kernel/broadcom-diag/src/diag.c @@ -89,6 +89,7 @@ enum { WRT610N, WRT610NV2, E1000V1, + E1000V21, E3000V1, E3200V1, E4200V1, @@ -471,6 +472,19 @@ static struct platform_t __initdata platforms[] = { { .name = "ses_orange", .gpio = 1 << 2, .polarity = REVERSE }, /* nvram get gpio2=wps_status_led */ }, }, + [E1000V21] = { + .name = "Linksys E1000 V2.1", + .buttons = { + { .name = "reset", .gpio = 1 << 10 }, /* nvram get reset_gpio=10 */ + { .name = "wps", .gpio = 1 << 9 }, /* nvram get gpio9=wps_button */ + }, + .leds = { + { .name = "power", .gpio = 1 << 6, .polarity = REVERSE }, + { .name = "wlan", .gpio = 1 << 5, .polarity = NORMAL }, + { .name = "ses_blue", .gpio = 1 << 8, .polarity = NORMAL }, /* nvram get gpio8=wps_led */ + { .name = "ses_orange", .gpio = 1 << 7, .polarity = NORMAL }, /* nvram get gpio7=wps_status_led */ + }, + }, [E3000V1] = { .name = "Linksys E3000 V1", .buttons = { @@ -1350,6 +1364,8 @@ static struct platform_t __init *platform_detect(void) return &platforms[DIR330]; case BCM47XX_BOARD_LINKSYS_E1000V1: return &platforms[E1000V1]; + case BCM47XX_BOARD_LINKSYS_E1000V21: + return &platforms[E1000V21]; case BCM47XX_BOARD_LINKSYS_E3000V1: return &platforms[E3000V1]; case BCM47XX_BOARD_LINKSYS_E3200V1: diff --git a/target/linux/brcm47xx/patches-3.10/260-MIPS-BCM47XX-add-board-detection.patch b/target/linux/brcm47xx/patches-3.10/260-MIPS-BCM47XX-add-board-detection.patch index 163580af95..f673910347 100644 --- a/target/linux/brcm47xx/patches-3.10/260-MIPS-BCM47XX-add-board-detection.patch +++ b/target/linux/brcm47xx/patches-3.10/260-MIPS-BCM47XX-add-board-detection.patch @@ -8,7 +8,7 @@ obj-$(CONFIG_BCM47XX_SSB) += wgt634u.o --- /dev/null +++ b/arch/mips/bcm47xx/board.c -@@ -0,0 +1,241 @@ +@@ -0,0 +1,242 @@ +#include +#include +#include @@ -101,6 +101,7 @@ + {{BCM47XX_BOARD_CISCO_M20V1, "Cisco M20"}, "M20", "1.0"}, /* like WRT310N v2.0 */ + {{BCM47XX_BOARD_LINKSYS_E1000V1, "Linksys E1000 V1"}, "E100", "1.0"}, /* like WRT160N v3.0 */ + {{BCM47XX_BOARD_LINKSYS_E1000V2, "Linksys E1000 V2"}, "E1000", "2.0"}, ++ {{BCM47XX_BOARD_LINKSYS_E1000V21, "Linksys E1000 V2.1"}, "E1000", "2.1"}, + {{BCM47XX_BOARD_LINKSYS_E2000V1, "Linksys E2000 V1"}, "Linksys E2000", "1.0"}, + {{BCM47XX_BOARD_LINKSYS_E3000V1, "Linksys E3000 V1"}, "E300", "1.0"}, /* like WRT610N v2.0 */ + {{BCM47XX_BOARD_LINKSYS_E3200V1, "Linksys E3200 V1"}, "E3200", "1.0"}, @@ -252,7 +253,7 @@ +EXPORT_SYMBOL(bcm47xx_board_get_name); --- /dev/null +++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -@@ -0,0 +1,98 @@ +@@ -0,0 +1,99 @@ +#ifndef __BCM47XX_BOARD_H +#define __BCM47XX_BOARD_H + @@ -303,6 +304,7 @@ + + BCM47XX_BOARD_LINKSYS_E1000V1, + BCM47XX_BOARD_LINKSYS_E1000V2, ++ BCM47XX_BOARD_LINKSYS_E1000V21, + BCM47XX_BOARD_LINKSYS_E2000V1, + BCM47XX_BOARD_LINKSYS_E3000V1, + BCM47XX_BOARD_LINKSYS_E3200V1, -- 2.30.2