From 854ab1b0453d49e68e51395833ef0933a51c471e Mon Sep 17 00:00:00 2001 From: Adrian Schmutzler Date: Sat, 20 Jul 2019 13:03:43 +0200 Subject: [PATCH] ath79: add support for TP-Link CPE220 v2 This seems to be identical to CPE210 v1 despite having removable antennas. Specifications: * SoC: Qualcomm Atheros AR9344 (560 MHz) * RAM: 64MB * Storage: 8 MB * Wireless: 2.4GHz N based built into SoC 2x2 * Ethernet: 2x 100/10 Mbps, integrated into SoC, 24V POE IN Installation: Flash factory image through stock firmware WEB UI or through TFTP: To get to TFTP recovery just hold reset button while powering on for around 4-5 seconds and release. Rename factory image to recovery.bin Stock TFTP server IP:192.168.0.100 Stock device TFTP address:192.168.0.254 Signed-off-by: Adrian Schmutzler --- .../ath79/base-files/etc/board.d/01_leds | 1 + .../ath79/base-files/etc/board.d/02_network | 1 + .../base-files/etc/board.d/03_gpio_switches | 1 + .../ath79/dts/ar9344_tplink_cpe220-v2.dts | 9 ++++ target/linux/ath79/image/generic-tp-link.mk | 11 +++++ tools/firmware-utils/src/tplink-safeloader.c | 42 ++++++++++++++++++- 6 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 target/linux/ath79/dts/ar9344_tplink_cpe220-v2.dts diff --git a/target/linux/ath79/base-files/etc/board.d/01_leds b/target/linux/ath79/base-files/etc/board.d/01_leds index 85d54aa708..35cb74db28 100755 --- a/target/linux/ath79/base-files/etc/board.d/01_leds +++ b/target/linux/ath79/base-files/etc/board.d/01_leds @@ -159,6 +159,7 @@ tplink,archer-d50-v1) ucidef_set_led_switch "wan_link" "WAN Link" "tp-link:white:wan" "switch0" "0x02" "" "link" ;; tplink,cpe210-v1|\ +tplink,cpe220-v2|\ tplink,cpe510-v1) ucidef_set_led_netdev "lan0" "LAN0" "tp-link:green:lan0" "eth1" ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x10" diff --git a/target/linux/ath79/base-files/etc/board.d/02_network b/target/linux/ath79/base-files/etc/board.d/02_network index e8846f38f3..9c6429984f 100755 --- a/target/linux/ath79/base-files/etc/board.d/02_network +++ b/target/linux/ath79/base-files/etc/board.d/02_network @@ -103,6 +103,7 @@ ath79_setup_interfaces() comfast,cf-e110n-v2|\ comfast,cf-e120a-v3|\ tplink,cpe210-v1|\ + tplink,cpe220-v2|\ tplink,cpe510-v1|\ ubnt,nanostation-m|\ ubnt,routerstation) diff --git a/target/linux/ath79/base-files/etc/board.d/03_gpio_switches b/target/linux/ath79/base-files/etc/board.d/03_gpio_switches index 9dc9feb70c..d84d6cfe85 100755 --- a/target/linux/ath79/base-files/etc/board.d/03_gpio_switches +++ b/target/linux/ath79/base-files/etc/board.d/03_gpio_switches @@ -43,6 +43,7 @@ tplink,archer-c25-v1) ucidef_add_gpio_switch "led_reset" "LED reset" "19" "1" ;; tplink,cpe210-v1|\ +tplink,cpe220-v2|\ tplink,cpe510-v1) ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "20" ;; diff --git a/target/linux/ath79/dts/ar9344_tplink_cpe220-v2.dts b/target/linux/ath79/dts/ar9344_tplink_cpe220-v2.dts new file mode 100644 index 0000000000..0981b4af07 --- /dev/null +++ b/target/linux/ath79/dts/ar9344_tplink_cpe220-v2.dts @@ -0,0 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include "ar9344_tplink_cpexxx-v1.dtsi" + +/ { + compatible = "tplink,cpe220-v2", "qca,ar9344"; + model = "TP-Link CPE220 v2"; +}; diff --git a/target/linux/ath79/image/generic-tp-link.mk b/target/linux/ath79/image/generic-tp-link.mk index ffbdfbc14f..71ea0acddf 100644 --- a/target/linux/ath79/image/generic-tp-link.mk +++ b/target/linux/ath79/image/generic-tp-link.mk @@ -195,6 +195,17 @@ define Device/tplink_cpe210-v3 endef TARGET_DEVICES += tplink_cpe210-v3 +define Device/tplink_cpe220-v2 + $(Device/tplink-loader-okli) + ATH_SOC := ar9344 + IMAGE_SIZE := 7680k + DEVICE_MODEL := CPE220 + DEVICE_VARIANT := v2 + DEVICE_PACKAGES := rssileds + TPLINK_BOARD_ID := CPE220V2 +endef +TARGET_DEVICES += tplink_cpe220-v2 + define Device/tplink_cpe510-v1 $(Device/tplink-loader-okli) ATH_SOC := ar9344 diff --git a/tools/firmware-utils/src/tplink-safeloader.c b/tools/firmware-utils/src/tplink-safeloader.c index 55f1ab9420..8dc72c9f43 100644 --- a/tools/firmware-utils/src/tplink-safeloader.c +++ b/tools/firmware-utils/src/tplink-safeloader.c @@ -118,7 +118,7 @@ static const uint8_t md5_salt[16] = { /** Firmware layout table */ static struct device_info boards[] = { - /** Firmware layout for the CPE210/220 */ + /** Firmware layout for the CPE210/220 V1 */ { .id = "CPE210", .vendor = "CPE510(TP-LINK|UN|N300-5):1.0\r\n", @@ -231,6 +231,46 @@ static struct device_info boards[] = { .last_sysupgrade_partition = "support-list", }, + /** Firmware layout for the CPE220 V2 */ + { + .id = "CPE220V2", + .vendor = "CPE510(TP-LINK|UN|N300-5):1.0\r\n", + .support_list = + "SupportList:\r\n" + "CPE220(TP-LINK|EU|N300-2|00000000):2.0\r\n" + "CPE220(TP-LINK|EU|N300-2|45550000):2.0\r\n" + "CPE220(TP-LINK|EU|N300-2|55530000):2.0\r\n" + "CPE220(TP-LINK|UN|N300-2|00000000):2.0\r\n" + "CPE220(TP-LINK|UN|N300-2|45550000):2.0\r\n" + "CPE220(TP-LINK|UN|N300-2|55530000):2.0\r\n" + "CPE220(TP-LINK|US|N300-2|55530000):2.0\r\n" + "CPE220(TP-LINK|UN|N300-2):2.0\r\n" + "CPE220(TP-LINK|EU|N300-2):2.0\r\n" + "CPE220(TP-LINK|US|N300-2):2.0\r\n", + .support_trail = '\xff', + .soft_ver = NULL, + + .partitions = { + {"fs-uboot", 0x00000, 0x20000}, + {"partition-table", 0x20000, 0x02000}, + {"default-mac", 0x30000, 0x00020}, + {"product-info", 0x31100, 0x00100}, + {"signature", 0x32000, 0x00400}, + {"os-image", 0x40000, 0x200000}, + {"file-system", 0x240000, 0x570000}, + {"soft-version", 0x7b0000, 0x00100}, + {"support-list", 0x7b1000, 0x00400}, + {"user-config", 0x7c0000, 0x10000}, + {"default-config", 0x7d0000, 0x10000}, + {"log", 0x7e0000, 0x10000}, + {"radio", 0x7f0000, 0x10000}, + {NULL, 0, 0} + }, + + .first_sysupgrade_partition = "os-image", + .last_sysupgrade_partition = "support-list", + }, + /** Firmware layout for the CPE510/520 */ { .id = "CPE510", -- 2.30.2