diff --git a/package/kernel/broadcom-diag/src/diag.c b/package/kernel/broadcom-diag/src/diag.c
index f3f70504deb8569bb868b7b76f9bd3a9051075bf..3f58718ec9162027b81ca69869c7398b85de0366 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 163580af95cf66b13473192272dd08f98898a80b..f6739103476bea9f1aa10bc969f6b395c6a029fe 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 <linux/export.h>
 +#include <linux/string.h>
 +#include <bcm47xx_board.h>
@@ -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,