Переглянути джерело

ar71xx: add support for TP-Link WBS210/510

The devices are mostly identical to the CPE210/510, but use external
antennas.

Signed-off-by: Matthias Schiffer <[email protected]>
Matthias Schiffer 8 роки тому
батько
коміт
1fef80f29c

+ 3 - 1
target/linux/ar71xx/base-files/etc/board.d/01_leds

@@ -152,7 +152,9 @@ cf-e530n)
 	ucidef_set_led_netdev "wan" "WAN" "$board:blue:wan" "eth1"
 	ucidef_set_led_netdev "wan" "WAN" "$board:blue:wan" "eth1"
 	;;
 	;;
 cpe210|\
 cpe210|\
-cpe510)
+cpe510|\
+wbs210|\
+wbs510)
 	ucidef_set_led_switch "lan0" "LAN0" "tp-link:green:lan0" "switch0" "0x20"
 	ucidef_set_led_switch "lan0" "LAN0" "tp-link:green:lan0" "switch0" "0x20"
 	ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x10"
 	ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x10"
 	ucidef_set_rssimon "wlan0" "200000" "1"
 	ucidef_set_rssimon "wlan0" "200000" "1"

+ 3 - 1
target/linux/ar71xx/base-files/etc/board.d/02_network

@@ -212,7 +212,9 @@ ar71xx_setup_interfaces()
 		ucidef_set_interface_lan "eth0" "dhcp"
 		ucidef_set_interface_lan "eth0" "dhcp"
 		;;
 		;;
 	cpe210|\
 	cpe210|\
-	cpe510)
+	cpe510|\
+	wbs210|\
+	wbs510)
 		ucidef_add_switch "switch0" \
 		ucidef_add_switch "switch0" \
 			"0@eth0" "5:lan" "4:wan"
 			"0@eth0" "5:lan" "4:wan"
 		;;
 		;;

+ 3 - 1
target/linux/ar71xx/base-files/etc/board.d/03_gpio_switches

@@ -18,7 +18,9 @@ nanostation-m-xw)
 	ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "2"
 	ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "2"
 	;;
 	;;
 cpe210|\
 cpe210|\
-cpe510)
+cpe510|\
+wbs210|\
+wbs510)
 	ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "20"
 	ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "20"
 	;;
 	;;
 rb-912uag-2hpnd|\
 rb-912uag-2hpnd|\

+ 8 - 0
target/linux/ar71xx/base-files/lib/ar71xx.sh

@@ -510,6 +510,14 @@ ar71xx_board_detect() {
 	*CPE870)
 	*CPE870)
 		name="cpe870"
 		name="cpe870"
 		;;
 		;;
+	*WBS210)
+		name="wbs210"
+		tplink_pharos_board_detect
+		;;
+	*WBS510)
+		name="wbs510"
+		tplink_pharos_board_detect
+		;;
 	*CR3000)
 	*CR3000)
 		name="cr3000"
 		name="cr3000"
 		;;
 		;;

+ 3 - 1
target/linux/ar71xx/base-files/lib/upgrade/platform.sh

@@ -453,7 +453,9 @@ platform_check_image() {
 		;;
 		;;
 	cpe210|\
 	cpe210|\
 	cpe510|\
 	cpe510|\
-	eap120)
+	eap120|\
+	wbs210|\
+	wbs510)
 		tplink_pharos_check_image "$1" && return 0
 		tplink_pharos_check_image "$1" && return 0
 		return 1
 		return 1
 		;;
 		;;

+ 56 - 3
target/linux/ar71xx/files/arch/mips/ath79/mach-cpe510.c

@@ -30,6 +30,9 @@
 #define CPE510_GPIO_LED_L3	15
 #define CPE510_GPIO_LED_L3	15
 #define CPE510_GPIO_LED_L4	16
 #define CPE510_GPIO_LED_L4	16
 
 
+/* All LEDs/button except for link4 are the same for CPE and WBS series */
+#define WBS510_GPIO_LED_L4	2
+
 #define CPE510_GPIO_EXTERNAL_LNA0	18
 #define CPE510_GPIO_EXTERNAL_LNA0	18
 #define CPE510_GPIO_EXTERNAL_LNA1	19
 #define CPE510_GPIO_EXTERNAL_LNA1	19
 
 
@@ -67,6 +70,34 @@ static struct gpio_led cpe510_leds_gpio[] __initdata = {
 	},
 	},
 };
 };
 
 
+static struct gpio_led wbs510_leds_gpio[] __initdata = {
+	{
+		.name		= "tp-link:green:lan0",
+		.gpio		= CPE510_GPIO_LED_LAN0,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:green:lan1",
+		.gpio		= CPE510_GPIO_LED_LAN1,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:green:link1",
+		.gpio		= CPE510_GPIO_LED_L1,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:green:link2",
+		.gpio		= CPE510_GPIO_LED_L2,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:green:link3",
+		.gpio		= CPE510_GPIO_LED_L3,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:green:link4",
+		.gpio		= WBS510_GPIO_LED_L4,
+		.active_low	= 1,
+	},
+};
+
 static struct gpio_keys_button cpe510_gpio_keys[] __initdata = {
 static struct gpio_keys_button cpe510_gpio_keys[] __initdata = {
 	{
 	{
 		.desc		= "Reset button",
 		.desc		= "Reset button",
@@ -85,9 +116,6 @@ static void __init cpe_setup(u8 *mac)
 	ath79_gpio_function_setup(AR934X_GPIO_FUNC_JTAG_DISABLE,
 	ath79_gpio_function_setup(AR934X_GPIO_FUNC_JTAG_DISABLE,
 				  AR934X_GPIO_FUNC_CLK_OBS4_EN);
 				  AR934X_GPIO_FUNC_CLK_OBS4_EN);
 
 
-	ath79_register_leds_gpio(-1, ARRAY_SIZE(cpe510_leds_gpio),
-				 cpe510_leds_gpio);
-
 	ath79_register_gpio_keys_polled(1, CPE510_KEYS_POLL_INTERVAL,
 	ath79_register_gpio_keys_polled(1, CPE510_KEYS_POLL_INTERVAL,
 					ARRAY_SIZE(cpe510_gpio_keys),
 					ARRAY_SIZE(cpe510_gpio_keys),
 					cpe510_gpio_keys);
 					cpe510_gpio_keys);
@@ -109,6 +137,9 @@ static void __init cpe210_setup(void)
 	u8 *mac = (u8 *) KSEG1ADDR(0x1f830008);
 	u8 *mac = (u8 *) KSEG1ADDR(0x1f830008);
 	u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
 	u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
 
 
+	ath79_register_leds_gpio(-1, ARRAY_SIZE(cpe510_leds_gpio),
+				 cpe510_leds_gpio);
+
 	cpe_setup(mac);
 	cpe_setup(mac);
 
 
 	ath79_register_wmac(ee, mac);
 	ath79_register_wmac(ee, mac);
@@ -119,6 +150,22 @@ static void __init cpe510_setup(void)
 	u8 *mac = (u8 *) KSEG1ADDR(0x1f830008);
 	u8 *mac = (u8 *) KSEG1ADDR(0x1f830008);
 	u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
 	u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
 
 
+	ath79_register_leds_gpio(-1, ARRAY_SIZE(cpe510_leds_gpio),
+				 cpe510_leds_gpio);
+
+	cpe_setup(mac);
+
+	ath79_register_wmac(ee, mac);
+}
+
+static void __init wbs_setup(void)
+{
+	u8 *mac = (u8 *) KSEG1ADDR(0x1f830008);
+	u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
+
+	ath79_register_leds_gpio(-1, ARRAY_SIZE(wbs510_leds_gpio),
+				 wbs510_leds_gpio);
+
 	cpe_setup(mac);
 	cpe_setup(mac);
 
 
 	ath79_register_wmac(ee, mac);
 	ath79_register_wmac(ee, mac);
@@ -129,3 +176,9 @@ MIPS_MACHINE(ATH79_MACH_CPE210, "CPE210", "TP-LINK CPE210/220",
 
 
 MIPS_MACHINE(ATH79_MACH_CPE510, "CPE510", "TP-LINK CPE510/520",
 MIPS_MACHINE(ATH79_MACH_CPE510, "CPE510", "TP-LINK CPE510/520",
 	     cpe510_setup);
 	     cpe510_setup);
+
+MIPS_MACHINE(ATH79_MACH_WBS210, "WBS210", "TP-LINK WBS210",
+	     wbs_setup);
+
+MIPS_MACHINE(ATH79_MACH_WBS510, "WBS510", "TP-LINK WBS510",
+	     wbs_setup);

+ 2 - 0
target/linux/ar71xx/files/arch/mips/ath79/machtypes.h

@@ -251,6 +251,8 @@ enum ath79_mach_type {
 	ATH79_MACH_UBNT_UNIFI_OUTDOOR,		/* Ubiquiti UnifiAP Outdoor */
 	ATH79_MACH_UBNT_UNIFI_OUTDOOR,		/* Ubiquiti UnifiAP Outdoor */
 	ATH79_MACH_UBNT_UNIFI_OUTDOOR_PLUS,	/* Ubiquiti UnifiAP Outdoor+ */
 	ATH79_MACH_UBNT_UNIFI_OUTDOOR_PLUS,	/* Ubiquiti UnifiAP Outdoor+ */
 	ATH79_MACH_UBNT_XM,			/* Ubiquiti Networks XM board rev 1.0 */
 	ATH79_MACH_UBNT_XM,			/* Ubiquiti Networks XM board rev 1.0 */
+	ATH79_MACH_WBS210,			/* TP-LINK WBS210 */
+	ATH79_MACH_WBS510,			/* TP-LINK WBS510 */
 	ATH79_MACH_WEIO,			/* WeIO board */
 	ATH79_MACH_WEIO,			/* WeIO board */
 	ATH79_MACH_WHR_G301N,			/* Buffalo WHR-G301N */
 	ATH79_MACH_WHR_G301N,			/* Buffalo WHR-G301N */
 	ATH79_MACH_WHR_HP_G300N,		/* Buffalo WHR-HP-G300N */
 	ATH79_MACH_WHR_HP_G300N,		/* Buffalo WHR-HP-G300N */

+ 17 - 1
target/linux/ar71xx/image/tp-link.mk

@@ -117,7 +117,23 @@ $(Device/cpe510-520)
   BOARDNAME := CPE210
   BOARDNAME := CPE210
   TPLINK_BOARD_NAME := CPE210
   TPLINK_BOARD_NAME := CPE210
 endef
 endef
-TARGET_DEVICES += cpe210-220 cpe510-520
+
+define Device/wbs210
+$(Device/cpe510-520)
+  DEVICE_TITLE := TP-LINK WBS210
+  DEVICE_PACKAGES := rssileds
+  BOARDNAME := WBS210
+  TPLINK_BOARD_NAME := WBS210
+endef
+
+define Device/wbs510
+$(Device/cpe510-520)
+  DEVICE_TITLE := TP-LINK WBS510
+  DEVICE_PACKAGES := rssileds
+  BOARDNAME := WBS510
+  TPLINK_BOARD_NAME := WBS510
+endef
+TARGET_DEVICES += cpe210-220 cpe510-520 wbs210 wbs510
 
 
 define Device/re450
 define Device/re450
   DEVICE_TITLE := TP-LINK RE450
   DEVICE_TITLE := TP-LINK RE450