diff --git a/package/kernel/broadcom-diag/src/diag.c b/package/kernel/broadcom-diag/src/diag.c
index 3f58718ec9..c0ef6ac567 100644
--- a/package/kernel/broadcom-diag/src/diag.c
+++ b/package/kernel/broadcom-diag/src/diag.c
@@ -181,6 +181,9 @@ enum {
 
 	/* Edimax */
 	PS1208MFG,
+
+	/* Huawei */
+	HUAWEI_E970,
 };
 
 static void __init bcm4780_init(void) {
@@ -1159,6 +1162,16 @@ static struct platform_t __initdata platforms[] = {
 			{ .name = "wlan",	.gpio = 1 << 0, .polarity = NORMAL },
 		},
 	},
+	/* Huawei */
+	[HUAWEI_E970] = {
+		.name	 	= "Huawei E970",
+		.buttons 	= {
+			{ .name = "reset",	.gpio = 1 << 6 },
+		},
+		.leds		= {
+			{ .name = "wlan",	.gpio = 1 << 0, .polarity = NORMAL },
+		},
+	},
 };
 
 static struct platform_t __init *platform_detect_legacy(void)
@@ -1362,6 +1375,8 @@ static struct platform_t __init *platform_detect(void)
 		return &platforms[DIR130];
 	case BCM47XX_BOARD_DLINK_DIR330:
 		return &platforms[DIR330];
+	case BCM47XX_BOARD_HUAWEI_E970:
+		return &platforms[HUAWEI_E970];
 	case BCM47XX_BOARD_LINKSYS_E1000V1:
 		return &platforms[E1000V1];
 	case BCM47XX_BOARD_LINKSYS_E1000V21:
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 aa63f45357..b172797bfc 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,285 @@
+@@ -0,0 +1,286 @@
 +#include <linux/export.h>
 +#include <linux/string.h>
 +#include <bcm47xx_board.h>
@@ -164,6 +164,7 @@
 +/* boardtype, boardnum, boardrev */
 +static const struct bcm47xx_board_type_list3 bcm47xx_board_list_board[] = {
 +	{{BCM47XX_BOARD_ZTE_H218N, "ZTE H218N"}, "0x053d", "1234", "0x1305"},
++	{{BCM47XX_BOARD_HUAWEI_E970, "Huawei E970"}, "0x048e", "0x5347", "0x11"},
 +	{ {0}, 0},
 +};
 +
@@ -296,7 +297,7 @@
 +EXPORT_SYMBOL(bcm47xx_board_get_name);
 --- /dev/null
 +++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h
-@@ -0,0 +1,102 @@
+@@ -0,0 +1,104 @@
 +#ifndef __BCM47XX_BOARD_H
 +#define __BCM47XX_BOARD_H
 +
@@ -346,6 +347,8 @@
 +	BCM47XX_BOARD_DLINK_DIR130,
 +	BCM47XX_BOARD_DLINK_DIR330,
 +
++	BCM47XX_BOARD_HUAWEI_E970,
++
 +	BCM47XX_BOARD_LINKSYS_E1000V1,
 +	BCM47XX_BOARD_LINKSYS_E1000V2,
 +	BCM47XX_BOARD_LINKSYS_E1000V21,