ar71xx: add support for TP-Link WBS210/510
authorMatthias Schiffer <mschiffer@universe-factory.net>
Thu, 5 Jan 2017 15:01:17 +0000 (16:01 +0100)
committerMatthias Schiffer <mschiffer@universe-factory.net>
Thu, 5 Jan 2017 15:01:17 +0000 (16:01 +0100)
The devices are mostly identical to the CPE210/510, but use external
antennas.

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
target/linux/ar71xx/base-files/etc/board.d/01_leds
target/linux/ar71xx/base-files/etc/board.d/02_network
target/linux/ar71xx/base-files/etc/board.d/03_gpio_switches
target/linux/ar71xx/base-files/lib/ar71xx.sh
target/linux/ar71xx/base-files/lib/upgrade/platform.sh
target/linux/ar71xx/files/arch/mips/ath79/mach-cpe510.c
target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
target/linux/ar71xx/image/tp-link.mk

index c6dcf36..5a2bf0c 100755 (executable)
@@ -152,7 +152,9 @@ cf-e530n)
        ucidef_set_led_netdev "wan" "WAN" "$board:blue:wan" "eth1"
        ;;
 cpe210|\
-cpe510)
+cpe510|\
+wbs210|\
+wbs510)
        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_rssimon "wlan0" "200000" "1"
index 8acd214..66274db 100755 (executable)
@@ -212,7 +212,9 @@ ar71xx_setup_interfaces()
                ucidef_set_interface_lan "eth0" "dhcp"
                ;;
        cpe210|\
-       cpe510)
+       cpe510|\
+       wbs210|\
+       wbs510)
                ucidef_add_switch "switch0" \
                        "0@eth0" "5:lan" "4:wan"
                ;;
index 5b95f15..da963bf 100755 (executable)
@@ -18,7 +18,9 @@ nanostation-m-xw)
        ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "2"
        ;;
 cpe210|\
-cpe510)
+cpe510|\
+wbs210|\
+wbs510)
        ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "20"
        ;;
 rb-912uag-2hpnd|\
index 3241100..1b30f4d 100755 (executable)
@@ -510,6 +510,14 @@ ar71xx_board_detect() {
        *CPE870)
                name="cpe870"
                ;;
+       *WBS210)
+               name="wbs210"
+               tplink_pharos_board_detect
+               ;;
+       *WBS510)
+               name="wbs510"
+               tplink_pharos_board_detect
+               ;;
        *CR3000)
                name="cr3000"
                ;;
index 570aa68..6341a31 100755 (executable)
@@ -453,7 +453,9 @@ platform_check_image() {
                ;;
        cpe210|\
        cpe510|\
-       eap120)
+       eap120|\
+       wbs210|\
+       wbs510)
                tplink_pharos_check_image "$1" && return 0
                return 1
                ;;
index 74daf43..d2dbed1 100644 (file)
@@ -30,6 +30,9 @@
 #define CPE510_GPIO_LED_L3     15
 #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_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 = {
        {
                .desc           = "Reset button",
@@ -85,9 +116,6 @@ static void __init cpe_setup(u8 *mac)
        ath79_gpio_function_setup(AR934X_GPIO_FUNC_JTAG_DISABLE,
                                  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,
                                        ARRAY_SIZE(cpe510_gpio_keys),
                                        cpe510_gpio_keys);
@@ -109,6 +137,9 @@ static void __init cpe210_setup(void)
        u8 *mac = (u8 *) KSEG1ADDR(0x1f830008);
        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);
@@ -119,6 +150,22 @@ static void __init cpe510_setup(void)
        u8 *mac = (u8 *) KSEG1ADDR(0x1f830008);
        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);
 
        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",
             cpe510_setup);
+
+MIPS_MACHINE(ATH79_MACH_WBS210, "WBS210", "TP-LINK WBS210",
+            wbs_setup);
+
+MIPS_MACHINE(ATH79_MACH_WBS510, "WBS510", "TP-LINK WBS510",
+            wbs_setup);
index d18a71c..9402185 100644 (file)
@@ -251,6 +251,8 @@ enum ath79_mach_type {
        ATH79_MACH_UBNT_UNIFI_OUTDOOR,          /* 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_WBS210,                      /* TP-LINK WBS210 */
+       ATH79_MACH_WBS510,                      /* TP-LINK WBS510 */
        ATH79_MACH_WEIO,                        /* WeIO board */
        ATH79_MACH_WHR_G301N,                   /* Buffalo WHR-G301N */
        ATH79_MACH_WHR_HP_G300N,                /* Buffalo WHR-HP-G300N */
index c6c9b50..480d9ad 100644 (file)
@@ -117,7 +117,23 @@ $(Device/cpe510-520)
   BOARDNAME := CPE210
   TPLINK_BOARD_NAME := CPE210
 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
   DEVICE_TITLE := TP-LINK RE450