This patch adds support for Linksys WUMC710 AC Media Bridge https://wikidevi.com/wiki/Linksys_WUMC710

What works:
- leds
- buttons
- 4.1 and 4.4 kernel (320-MIPS-BCM47XX-Devices-database-update-for-4.x.patch needs no change) - switch (top 3 sockets as configured as LAN, socket next to power socket is WAN)
- wan/lan performance is ~100mbit/s

Known issues:
- BCM4360 is not supported so it works like router/switch when compiled with "no wifi" profile. Otherwise it segfaults at boot (wifi related) but is accessible over ethernet

- There is non critical issue when booting
[    0.149029] bcma: core 0x050e, irq : 2(S)  3  4  5  6  D* I
[    0.149105] bcma: core 0x0534, irq : 2(S)  3  4  5  6  D* I
[    0.149136] ------------[ cut here ]------------
[ 0.149178] WARNING: CPU: 0 PID: 1 at drivers/bcma/host_soc.c:140 bcma_host_soc_aread32+0x40/0x70()
[    0.149189] Accessed core has no wrapper/agent
[    0.149198] Modules linked in:
[    0.149219] CPU: 0 PID: 1 Comm: swapper Not tainted 4.4.0 #1
[ 0.149229] Stack : 80319938 00000000 00000001 80360000 83828280 80356fe3 802fb1c0 00000001 [ 0.149229] 803a379c 00000007 00000005 80300000 80300000 80048b00 80300778 80350000 [ 0.149229] 00000003 00000007 802feb7c 8381bc94 80300000 80046adc 00000002 00000000 [ 0.149229] 00000000 00000001 00000000 00000000 00000000 00000000 00000000 00000000 [ 0.149229] 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[    0.149229]    ...
[    0.149375] Call Trace:
[    0.149411] [<80014004>] show_stack+0x50/0x84
[    0.149448] [<8002396c>] warn_slowpath_common+0xa0/0xd0
[    0.149470] [<800239c8>] warn_slowpath_fmt+0x2c/0x38
[    0.149492] [<801d3cf4>] bcma_host_soc_aread32+0x40/0x70
[    0.149513] [<801d2210>] bcma_core_mips_irqflag+0x78/0x94
[    0.149532] [<801d229c>] bcma_core_mips_irq+0x28/0x98
[    0.149553] [<801d2b94>] bcma_core_mips_init+0x3cc/0x480
[    0.149572] [<801cc584>] bcma_bus_register+0x194/0x420
[    0.149597] [<80371cb8>] bcm47xx_register_bus_complete+0x20/0x94
[    0.149619] [<8000a07c>] do_one_initcall+0x1f0/0x218
[    0.149640] [<8036fd68>] kernel_init_freeable+0x164/0x224
[    0.149670] [<80005824>] kernel_init+0x14/0x118
[    0.149689] [<80001078>] ret_from_kernel_thread+0x14/0x1c
[    0.149700]
[    0.149740] ---[ end trace b0bb05bbb14c3a7e ]---
[    0.149753] bcma: core 0x05dc, irq : 2(S)  3  4  5  6  D* I

Signed-off-by: Michał Osowiecki <[email protected]>




diff --git a/target/linux/brcm47xx/image/Makefile b/target/linux/brcm47xx/image/Makefile
index c290f9a..eafb92d 100644
--- a/target/linux/brcm47xx/image/Makefile
+++ b/target/linux/brcm47xx/image/Makefile
@@ -320,6 +320,7 @@ ifeq ($(SUBTARGET),mips74k)
   $(eval $(call LinksysDevice,e2500-v2.1,25RU,2.1.0))
   $(eval $(call LinksysDevice,e2500-v3,25V3,3.0.0))
   $(eval $(call LinksysDevice,e3200-v1,3200,1.0.1))
+  $(eval $(call AsusDevice,wumc710))
   $(eval $(call LinksysDevice,e4200-v1,4200,1.0.5))
   $(eval $(call NetgearDevice,wgr614-v10_north-america,U12H139T01_NETGEAR,2))
   $(eval $(call NetgearDevice,wgr614-v10_other-regions,U12H139T01_NETGEAR,1))
diff --git a/target/linux/brcm47xx/patches-4.1/320-MIPS-BCM47XX-Devices-database-update-for-4.x.patch b/target/linux/brcm47xx/patches-4.1/320-MIPS-BCM47XX-Devices-database-update-for-4.x.patch
index 68214c8..ca59bd1 100644
--- a/target/linux/brcm47xx/patches-4.1/320-MIPS-BCM47XX-Devices-database-update-for-4.x.patch
+++ b/target/linux/brcm47xx/patches-4.1/320-MIPS-BCM47XX-Devices-database-update-for-4.x.patch
@@ -29,6 +29,14 @@
  	{{BCM47XX_BOARD_NETGEAR_WNR2000, "Netgear WNR2000"}, "U12H114T00_NETGEAR"},
  	{{BCM47XX_BOARD_NETGEAR_WNR3500L, "Netgear WNR3500L"}, "U12H136T99_NETGEAR"},
  	{{BCM47XX_BOARD_NETGEAR_WNR3500U, "Netgear WNR3500U"}, "U12H136T00_NETGEAR"},
+@@ -178,6 +178,7 @@
+ 	{{BCM47XX_BOARD_PHICOMM_M1, "Phicomm M1"}, "0x0590", "80", "0x1104"},
+ 	{{BCM47XX_BOARD_ZTE_H218N, "ZTE H218N"}, "0x053d", "1234", "0x1305"},
+ 	{{BCM47XX_BOARD_NETGEAR_WNR3500L, "Netgear WNR3500L"}, "0x04CF", "3500", "02"},
++       {{BCM47XX_BOARD_LINKSYS_WUMC710, "Linksys WUMC710"}, "0x0617", "1234", "0x1402"},
+ 	{{BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0101, "Linksys WRT54G/GS/GL"}, "0x0101", "42", "0x10"},
+ 	{{BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0467, "Linksys WRT54G/GS/GL"}, "0x0467", "42", "0x10"},
+ 	{{BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0708, "Linksys WRT54G/GS/GL"}, "0x0708", "42", "0x10"},
 --- a/arch/mips/bcm47xx/buttons.c
 +++ b/arch/mips/bcm47xx/buttons.c
 @@ -20,6 +20,12 @@
@@ -63,6 +71,19 @@
  bcm47xx_buttons_linksys_wrt54g3gv2[] __initconst = {
  	BCM47XX_GPIO_KEY(5, KEY_WIMAX),
  	BCM47XX_GPIO_KEY(6, KEY_RESTART),
+@@ -299,6 +299,12 @@
+ 	BCM47XX_GPIO_KEY(6, KEY_RESTART),
+ };
+ 
++static const struct gpio_keys_button
++bcm47xx_buttons_linksys_wumc710[] __initconst = {
++	BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON),
++	BCM47XX_GPIO_KEY(6, KEY_RESTART),
++};
++
+ /* Luxul */
+ 
+ static const struct gpio_keys_button
 @@ -333,6 +351,17 @@ bcm47xx_buttons_motorola_wr850gv2v3[] __
  /* Netgear */
  
@@ -116,6 +137,16 @@
  	case BCM47XX_BOARD_LINKSYS_WRT54G3GV2:
  		err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt54g3gv2);
  		break;
+@@ -560,6 +563,9 @@
+ 	case BCM47XX_BOARD_LINKSYS_WRTSL54GS:
+ 		err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrtsl54gs);
+ 		break;
++	case BCM47XX_BOARD_LINKSYS_WUMC710:
++		err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wumc710);
++		break;
+ 
+ 	case BCM47XX_BOARD_LUXUL_XWR_1750_V1:
+ 		err = bcm47xx_copy_bdata(bcm47xx_buttons_luxul_xwr_1750_v1);
 @@ -579,6 +622,12 @@ int __init bcm47xx_buttons_register(void
  		err = bcm47xx_copy_bdata(bcm47xx_buttons_motorola_wr850gv2v3);
  		break;
@@ -149,6 +180,14 @@
  	BCM47XX_BOARD_LINKSYS_WRT54G3GV2,
  	BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0101,
  	BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0467,
+@@ -79,6 +79,7 @@
+ 	BCM47XX_BOARD_LINKSYS_WRT610NV1,
+ 	BCM47XX_BOARD_LINKSYS_WRT610NV2,
+ 	BCM47XX_BOARD_LINKSYS_WRTSL54GS,
++	BCM47XX_BOARD_LINKSYS_WUMC710,
+ 
+ 	BCM47XX_BOARD_LUXUL_XWR_1750_V1,
+ 
 @@ -88,9 +89,12 @@ enum bcm47xx_board {
  	BCM47XX_BOARD_MOTOROLA_WR850GP,
  	BCM47XX_BOARD_MOTOROLA_WR850GV2V3,
@@ -201,6 +240,22 @@
  bcm47xx_leds_linksys_wrt54g_generic[] __initconst = {
  	BCM47XX_GPIO_LED(0, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF),
  	BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON),
+@@ -370,6 +370,15 @@
+ 	BCM47XX_GPIO_LED(7, "orange", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
+ };
+ 
++static const struct gpio_led
++bcm47xx_leds_linksys_wumc710[] __initconst = {
++	BCM47XX_GPIO_LED(8, "blue", "power", 1, LEDS_GPIO_DEFSTATE_ON),
++	BCM47XX_GPIO_LED(10, "blue", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF),
++	BCM47XX_GPIO_LED(11, "blue", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
++	BCM47XX_GPIO_LED(12, "red", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
++};
++
++
+ /* Luxul */
+ 
+ static const struct gpio_led
 @@ -478,6 +493,9 @@ void __init bcm47xx_leds_register(void)
  	enum bcm47xx_board board = bcm47xx_board_get();
  
@@ -221,3 +276,15 @@
  	case BCM47XX_BOARD_LINKSYS_WRT54G3GV2:
  		bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g3gv2);
  		break;
+@@ -632,6 +640,10 @@
+ 	case BCM47XX_BOARD_LINKSYS_WRTSL54GS:
+ 		bcm47xx_set_pdata(bcm47xx_leds_linksys_wrtsl54gs);
+ 		break;
++	case BCM47XX_BOARD_LINKSYS_WUMC710:
++		bcm47xx_set_pdata(bcm47xx_leds_linksys_wumc710);
++		break;
++
+ 
+ 	case BCM47XX_BOARD_LUXUL_XWR_1750_V1:
+ 		bcm47xx_set_pdata(bcm47xx_leds_luxul_xwr_1750_v1);
+
diff --git a/target/linux/brcm47xx/base-files/etc/board.d/01_detect b/target/linux/brcm47xx/base-files/etc/board.d/01_detect
index 91ac16e..5867365 100755
--- a/target/linux/brcm47xx/base-files/etc/board.d/01_detect
+++ b/target/linux/brcm47xx/base-files/etc/board.d/01_detect
@@ -70,6 +70,11 @@ detect_by_boardtype() {
 		ucidef_set_interfaces_lan_wan "eth0" "eth1"
 		;;
 
+	"0x0617")
+		ucidef_add_switch "switch0" \
+                        "1:lan" "2:lan" "3:lan" "4:wan" "8@eth0"
+                ;;
+
 	"0x0467")
 		ucidef_add_switch "switch0" \
 			"0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "5@eth0"
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to