From 9fd3f30934eb41aa00d2c7ce6b83135d4229c087 Mon Sep 17 00:00:00 2001 From: apcameron Date: Tue, 15 May 2018 21:34:32 -0500 Subject: [PATCH] ar71xx: Add Support for the TP-LINK CPE210 V2.0 Device Once Support for the TP-LINK CPE210 V2.0 gets added to the OpenWrt code we will need to drop the patch 001-add_support_for_TP-Link_CPE210_v2.patch --- configs/ar71xx-generic.config | 1 + files/etc/init.d/local | 29 +- files/etc/uci-defaults/99_setup_aredn_include | 17 +- files/www/cgi-bin/perlfunc.pm | 10 + ...01-add_support_for_TP-Link_CPE210_v2.patch | 435 ++++++++++++++++++ patches/700-cpe210.patch | 21 + patches/series | 2 + scripts/tests/postbuild/700-imagename.sh | 2 +- 8 files changed, 497 insertions(+), 20 deletions(-) create mode 100644 patches/001-add_support_for_TP-Link_CPE210_v2.patch create mode 100644 patches/700-cpe210.patch diff --git a/configs/ar71xx-generic.config b/configs/ar71xx-generic.config index 73713ca9..7b45942b 100644 --- a/configs/ar71xx-generic.config +++ b/configs/ar71xx-generic.config @@ -1,6 +1,7 @@ CONFIG_TARGET_ar71xx=y CONFIG_TARGET_ar71xx_generic=y CONFIG_TARGET_MULTI_PROFILE=y +CONFIG_TARGET_DEVICE_ar71xx_generic_DEVICE_cpe210-v2=y CONFIG_TARGET_DEVICE_ar71xx_generic_DEVICE_cpe210-220-v1=y CONFIG_TARGET_DEVICE_ar71xx_generic_DEVICE_cpe510-520-v1=y CONFIG_TARGET_DEVICE_ar71xx_generic_DEVICE_ubnt-airrouter=y diff --git a/files/etc/init.d/local b/files/etc/init.d/local index 36166803..a6c9b892 100755 --- a/files/etc/init.d/local +++ b/files/etc/init.d/local @@ -26,24 +26,17 @@ boot() { wifimacdigitplusone=`printf "%02X\n" $((0x$wifimacdigit + 1))` newmac=`echo "$wifimac:$wifimacdigitplusone" | awk 'BEGIN { FS = ":" } ;{print $1":"$2":"$3":"$7":"$5":"$6}'` fi - case $lanintf in - *.*) - echo "" > /etc/aredn_include/ethmacfixup - echo "config interface 'setethmac'" >> /etc/aredn_include/ethmacfixup - echo -e "\toption\tifname\t'eth0'" >> /etc/aredn_include/ethmacfixup - echo -e "\toption\tproto\t'none'" >> /etc/aredn_include/ethmacfixup - echo -e "\toption\tmacaddr\t$newmac" >> /etc/aredn_include/ethmacfixup - uci set "network.setethmac=interface" - uci set "network.setethmac.ifname=eth0" - uci set "network.setethmac.proto=none" - uci set "network.setethmac.macaddr=$newmac" - ;; - *) - uci -q set "network.lan.macaddr=$newmac" - echo -e "\toption\tmacaddr\t$newmac" > /etc/aredn_include/ethmacfixup - ;; - esac - uci commit + lanintf=${lanintf%%.*} + echo "" > /etc/aredn_include/ethmacfixup + echo "config interface 'setethmac'" >> /etc/aredn_include/ethmacfixup + echo -e "\toption\tifname\t'$lanintf'" >> /etc/aredn_include/ethmacfixup + echo -e "\toption\tproto\t'none'" >> /etc/aredn_include/ethmacfixup + echo -e "\toption\tmacaddr\t$newmac" >> /etc/aredn_include/ethmacfixup + uci set "network.setethmac=interface" + uci set "network.setethmac.ifname=$lanintf" + uci set "network.setethmac.proto=none" + uci set "network.setethmac.macaddr=$newmac" + uci commit /etc/init.d/network reload /etc/init.d/network restart fi diff --git a/files/etc/uci-defaults/99_setup_aredn_include b/files/etc/uci-defaults/99_setup_aredn_include index dbe2c190..bf7308f8 100755 --- a/files/etc/uci-defaults/99_setup_aredn_include +++ b/files/etc/uci-defaults/99_setup_aredn_include @@ -68,7 +68,6 @@ else fi # Save system NET LED settings -# Updated with logic from \bin\config_generate if [ ! -f /etc/aredn_include/system_netled ] then mkdir -p /etc/aredn_include @@ -98,6 +97,13 @@ generate_led() { netdev) local device mode json_get_vars device mode + echo "config led 'led_$1'" >> /etc/aredn_include/system_netled + echo " option name '$name'" >> /etc/aredn_include/system_netled + echo " option sysfs '$sysfs'" >> /etc/aredn_include/system_netled + echo " option trigger 'netdev'" >> /etc/aredn_include/system_netled + echo " option mode '$mode'" >> /etc/aredn_include/system_netled + echo " option dev '$device'" >> /etc/aredn_include/system_netled + echo "" >> /etc/aredn_include/system_netled ;; usb) @@ -113,6 +119,15 @@ generate_led() { rssi) local iface minq maxq offset factor json_get_vars iface minq maxq offset factor + echo "config led 'led_$1'" >> /etc/aredn_include/system_netled + echo " option sysfs '$sysfs'" >> /etc/aredn_include/system_netled + echo " option trigger 'rssi'" >> /etc/aredn_include/system_netled + echo " option iface 'rssid_$iface'" >> /etc/aredn_include/system_netled + echo " option minq '$minq'" >> /etc/aredn_include/system_netled + echo " option maxq '$maxq'" >> /etc/aredn_include/system_netled + echo " option offset '$offset'" >> /etc/aredn_include/system_netled + echo " option factor '$factor'" >> /etc/aredn_include/system_netled + echo "" >> /etc/aredn_include/system_netled ;; switch) diff --git a/files/www/cgi-bin/perlfunc.pm b/files/www/cgi-bin/perlfunc.pm index 28dafa60..f9b7a7ef 100644 --- a/files/www/cgi-bin/perlfunc.pm +++ b/files/www/cgi-bin/perlfunc.pm @@ -982,6 +982,16 @@ sub hardware_info 'rfband' => '2400', 'chanpower' => { 1 => '22', 14 => '23' }, }, + 'TP-Link CPE210 v2.0' => { + 'name' => 'TP-Link CPE210 v2.0', + 'comment' => 'Testing support for CPE210 v2.0', + 'supported' => '-1', + 'maxpower' => '29', + 'pwroffset' => '0', + 'usechains' => 1, + 'rfband' => '2400', + 'chanpower' => { 1 => '27', 2 => '28', 9 => '29', 14 => '27' }, + }, 'TP-Link CPE510 v1.0' => { 'name' => 'TP-Link CPE510 v1.0', 'comment' => '', diff --git a/patches/001-add_support_for_TP-Link_CPE210_v2.patch b/patches/001-add_support_for_TP-Link_CPE210_v2.patch new file mode 100644 index 00000000..ed82d271 --- /dev/null +++ b/patches/001-add_support_for_TP-Link_CPE210_v2.patch @@ -0,0 +1,435 @@ + +commit 251906597f5aa3d06b96ae7368d11a4959e64c96 +Author: Robert Marko +Date: Fri Jan 19 12:58:40 2018 +0100 + + ar71xx: Add TP-Link Pharos v2 board detection + + Add support for detecting TP-Link Pharos v2 boards. + They use different format in product-info partition than v1 boards. + + Code for this patch was written by Alexander Couzens + + Signed-off-by: Robert Marko + +diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh +index b6642495de..c40c83f5dd 100755 +--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh ++++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh +@@ -361,6 +361,25 @@ tplink_pharos_board_detect() { + AR71XX_MODEL="TP-Link $model v$2" + } + ++tplink_pharos_v2_get_model_string() { ++ local part ++ part=$(find_mtd_part 'product-info') ++ [ -z "$part" ] && return 1 ++ ++ # The returned string will end with \r\n, but we don't remove it here ++ # to simplify matching against it in the sysupgrade image check ++ dd if=$part bs=1 skip=4360 count=64 2>/dev/null | tr -d '\r\0' | head -n 1 ++} ++ ++tplink_pharos_v2_board_detect() { ++ local model_string="$(tplink_pharos_v2_get_model_string)" ++ local oIFS="$IFS"; IFS=":"; set -- $model_string; IFS="$oIFS" ++ ++ local model="${1%%\(*}" ++ ++ AR71XX_MODEL="TP-Link $model v$2" ++} ++ + ar71xx_board_detect() { + local machine + local name +@@ -532,6 +551,10 @@ ar71xx_board_detect() { + name="cpe210" + tplink_pharos_board_detect + ;; ++ *"CPE210 v2") ++ name="cpe210-v2" ++ tplink_pharos_v2_board_detect ++ ;; + *"CPE505N") + name="cpe505n" + ;; +diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +index 3d7b1593e1..1ed6882741 100755 +--- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh ++++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +@@ -120,6 +120,34 @@ tplink_pharos_check_image() { + return 0 + } + ++tplink_pharos_v2_check_image() { ++ local image_magic="$(get_magic_long "$1")" ++ local board_magic="$2" ++ [ "$image_magic" != "$board_magic" ] && { ++ echo "Invalid image magic '$image_magic'. Expected '$board_magic'." ++ return 1 ++ } ++ ++ local model_string="$(tplink_pharos_v2_get_model_string)" ++ local line ++ ++ # Here $1 is given to dd directly instead of get_image as otherwise the skip ++ # will take almost a second (as dd can't seek then) ++ # ++ # This will fail if the image isn't local, but that's fine: as the ++ # read loop won't be executed at all, it will return true, so the image ++ # is accepted (loading the first 1.5M of a remote image for this check seems ++ # a bit extreme) ++ dd if="$1" bs=1 skip=1511432 count=1024 2>/dev/null | tr -d '\0\xff\r' | while read line; do ++ [ "$line" = "$model_string" ] && break ++ done || { ++ echo "Unsupported image (model not in support-list)" ++ return 1 ++ } ++ ++ return 0 ++} ++ + seama_get_type_magic() { + get_image "$@" | dd bs=1 count=4 skip=53 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' + } +@@ -550,6 +578,10 @@ platform_check_image() { + tplink_pharos_check_image "$1" && return 0 + return 1 + ;; ++ cpe210-v2) ++ tplink_pharos_v2_check_image "$1" "01000000" && return 0 ++ return 1 ++ ;; + a40|\ + a60|\ + mr1750|\ + + +commit 7b711ff801d4c0f4740056481b156f96b5a0fbc8 +Author: Robert Marko +Date: Fri Jan 19 14:45:42 2018 +0100 + + ar71xx: add support for TP-Link CPE210 v2 + + This PR adds support for a popular low-cost 2.4GHz N based AP + + Specifications: + - SoC: Qualcomm Atheros QCA9533 (650MHz) + - RAM: 64MB + - Storage: 8 MB SPI NOR + - Wireless: 2.4GHz N based built into SoC 2x2 + - Ethernet: 1x 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 adress:192.168.0.254 + + Notes: + TP-Link does not use bootstrap registers so without this patch reference + clock detects as 40MHz while it is actually 25MHz. + This is due to messed up bootstrap resistor configuration on the PCB. + Provided GPL code just forces 25MHz reference clock. + That causes booting with completely wrong clocks, for example, CPU tries + to boot at 1040MHz while the stock is 650MHz. + So this PR depends on PR #672 to remove 40MHz reference clock. + Thanks to Sven Eckelmann for properly patching that. + + Signed-off-by: Robert Marko + +diff --git a/target/linux/ar71xx/base-files/etc/board.d/01_leds b/target/linux/ar71xx/base-files/etc/board.d/01_leds +index fb1f29dcfa..5ea9c3ee73 100755 +--- a/target/linux/ar71xx/base-files/etc/board.d/01_leds ++++ b/target/linux/ar71xx/base-files/etc/board.d/01_leds +@@ -213,16 +213,25 @@ cf-e530n) + ucidef_set_led_netdev "wan" "WAN" "$board:blue:wan" "eth1" + ;; + cpe210|\ ++cpe210-v2|\ + 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" + ucidef_set_led_rssi "rssilow" "RSSILOW" "tp-link:green:link1" "wlan0" "1" "100" "0" "13" + ucidef_set_led_rssi "rssimediumlow" "RSSIMEDIUMLOW" "tp-link:green:link2" "wlan0" "26" "100" "-25" "13" + ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "tp-link:green:link3" "wlan0" "51" "100" "-50" "13" + ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "tp-link:green:link4" "wlan0" "76" "100" "-75" "13" ++ ++ case "$board" in ++ cpe210-v2) ++ ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan0" "eth0" ++ ;; ++ *) ++ ucidef_set_led_switch "lan0" "LAN0" "tp-link:green:lan0" "switch0" "0x20" ++ ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x10" ++ ;; ++ esac + ;; + cr3000) + ucidef_set_led_netdev "wan" "WAN" "pcs:blue:wan" "eth1" +diff --git a/target/linux/ar71xx/base-files/etc/board.d/02_network b/target/linux/ar71xx/base-files/etc/board.d/02_network +index 5a10a9f486..bab99bb852 100755 +--- a/target/linux/ar71xx/base-files/etc/board.d/02_network ++++ b/target/linux/ar71xx/base-files/etc/board.d/02_network +@@ -71,6 +71,7 @@ ar71xx_setup_interfaces() + cap4200ag|\ + cf-e380ac-v1|\ + cf-e380ac-v2|\ ++ cpe210-v2|\ + dr342|\ + eap120|\ + eap300v2|\ +diff --git a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt +index 3ca77550bc..ed19fa8ba4 100644 +--- a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt ++++ b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt +@@ -1467,6 +1467,7 @@ config ATH79_MACH_CPE505N + config ATH79_MACH_CPE510 + bool "TP-LINK CPE510 support" + select SOC_AR934X ++ select SOC_QCA953X + select ATH79_DEV_ETH + select ATH79_DEV_GPIO_BUTTONS + select ATH79_DEV_LEDS_GPIO +diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-cpe510.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-cpe510.c +index d2dbed1fe2..64805938c4 100644 +--- a/target/linux/ar71xx/files/arch/mips/ath79/mach-cpe510.c ++++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-cpe510.c +@@ -1,7 +1,8 @@ + /* +- * TP-LINK CPE210/220/510/520 board support ++ * TP-LINK CPE210/210 v2/220/510/520 board support + * + * Copyright (C) 2014 Matthias Schiffer ++ * Copyright (C) 2017 Robert Marko + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published +@@ -41,6 +42,8 @@ + #define CPE510_KEYS_POLL_INTERVAL 20 /* msecs */ + #define CPE510_KEYS_DEBOUNCE_INTERVAL (3 * CPE510_KEYS_POLL_INTERVAL) + ++/* CPE210 v2 reset GPIO */ ++#define CPE210_V2_GPIO_BTN_RESET 17 + + static struct gpio_led cpe510_leds_gpio[] __initdata = { + { +@@ -98,6 +101,30 @@ static struct gpio_led wbs510_leds_gpio[] __initdata = { + }, + }; + ++static struct gpio_led cpe210_v2_leds_gpio[] __initdata = { ++ { ++ .name = "tp-link:green:lan0", ++ .gpio = CPE510_GPIO_LED_LAN0, ++ .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 = CPE510_GPIO_LED_L4, ++ .active_low = 1, ++ }, ++}; ++ + static struct gpio_keys_button cpe510_gpio_keys[] __initdata = { + { + .desc = "Reset button", +@@ -109,6 +136,17 @@ static struct gpio_keys_button cpe510_gpio_keys[] __initdata = { + } + }; + ++static struct gpio_keys_button cpe210_v2_gpio_keys[] __initdata = { ++ { ++ .desc = "Reset button", ++ .type = EV_KEY, ++ .code = KEY_RESTART, ++ .debounce_interval = CPE510_KEYS_DEBOUNCE_INTERVAL, ++ .gpio = CPE210_V2_GPIO_BTN_RESET, ++ .active_low = 1, ++ } ++}; ++ + static void __init cpe_setup(u8 *mac) + { + /* Disable JTAG, enabling GPIOs 0-3 */ +@@ -171,9 +209,33 @@ static void __init wbs_setup(void) + ath79_register_wmac(ee, mac); + } + ++static void __init cpe210_v2_setup(void) ++{ ++ u8 *mac = (u8 *) KSEG1ADDR(0x1f830008); ++ u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000); ++ ++ ath79_register_leds_gpio(-1, ARRAY_SIZE(cpe210_v2_leds_gpio), ++ cpe210_v2_leds_gpio); ++ ath79_register_gpio_keys_polled(-1, CPE510_KEYS_POLL_INTERVAL, ++ ARRAY_SIZE(cpe210_v2_gpio_keys), ++ cpe210_v2_gpio_keys); ++ ath79_register_m25p80(NULL); ++ ath79_register_mdio(0, 0x0); ++ ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0); ++ ath79_eth0_data.duplex = DUPLEX_FULL; ++ ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII; ++ ath79_eth0_data.speed = SPEED_100; ++ ath79_eth0_data.phy_mask = BIT(4); ++ ath79_register_eth(0); ++ ath79_register_wmac(ee, mac); ++} ++ + MIPS_MACHINE(ATH79_MACH_CPE210, "CPE210", "TP-LINK CPE210/220", + cpe210_setup); + ++MIPS_MACHINE(ATH79_MACH_CPE210_V2, "CPE210V2", "TP-LINK CPE210 v2", ++ cpe210_v2_setup); ++ + MIPS_MACHINE(ATH79_MACH_CPE510, "CPE510", "TP-LINK CPE510/520", + cpe510_setup); + +diff --git a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h +index a621fe2c90..9b1d83beb9 100644 +--- a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h ++++ b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h +@@ -68,7 +68,8 @@ enum ath79_mach_type { + ATH79_MACH_CF_E380AC_V2, /* COMFAST CF-E380AC v2 */ + ATH79_MACH_CF_E520N, /* COMFAST CF-E520N */ + ATH79_MACH_CF_E530N, /* COMFAST CF-E530N */ +- ATH79_MACH_CPE210, /* TP-LINK CPE210 */ ++ ATH79_MACH_CPE210, /* TP-LINK CPE210 v1 */ ++ ATH79_MACH_CPE210_V2, /* TP-LINK CPE210 v2 */ + ATH79_MACH_CPE505N, /* P&W CPE505N */ + ATH79_MACH_CPE510, /* TP-LINK CPE510 */ + ATH79_MACH_CPE830, /* YunCore CPE830 */ +diff --git a/target/linux/ar71xx/image/generic-tp-link.mk b/target/linux/ar71xx/image/generic-tp-link.mk +index b0d99e2599..efa8718417 100644 +--- a/target/linux/ar71xx/image/generic-tp-link.mk ++++ b/target/linux/ar71xx/image/generic-tp-link.mk +@@ -153,6 +153,18 @@ define Device/cpe210-220-v1 + endef + TARGET_DEVICES += cpe210-220-v1 + ++define Device/cpe210-v2 ++ $(Device/cpe510-520-v1) ++ DEVICE_TITLE := TP-LINK CPE210 v2 ++ BOARDNAME := CPE210V2 ++ TPLINK_BOARD_ID := CPE210V2 ++ KERNEL := kernel-bin | patch-cmdline | lzma | tplink-v1-header ++ TPLINK_HWID := 0x0 ++ TPLINK_HWREV := 0 ++ TPLINK_HEADER_VERSION := 1 ++endef ++TARGET_DEVICES += cpe210-v2 ++ + define Device/wbs210-v1 + $(Device/cpe510-520-v1) + DEVICE_TITLE := TP-LINK WBS210 v1 +diff --git a/tools/firmware-utils/src/tplink-safeloader.c b/tools/firmware-utils/src/tplink-safeloader.c +index 88e2e88bdf..05009a3800 100644 +--- a/tools/firmware-utils/src/tplink-safeloader.c ++++ b/tools/firmware-utils/src/tplink-safeloader.c +@@ -153,6 +153,48 @@ static struct device_info boards[] = { + .first_sysupgrade_partition = "os-image", + .last_sysupgrade_partition = "file-system", + }, ++ ++ /** Firmware layout for the CPE210 V2 */ ++ { ++ .id = "CPE210V2", ++ .vendor = "CPE210(TP-LINK|UN|N300-2|00000000):2.0\r\n", ++ .support_list = ++ "SupportList:\r\n" ++ "CPE210(TP-LINK|EU|N300-2|00000000):2.0\r\n" ++ "CPE210(TP-LINK|EU|N300-2|45550000):2.0\r\n" ++ "CPE210(TP-LINK|EU|N300-2|55530000):2.0\r\n" ++ "CPE210(TP-LINK|UN|N300-2|00000000):2.0\r\n" ++ "CPE210(TP-LINK|UN|N300-2|45550000):2.0\r\n" ++ "CPE210(TP-LINK|UN|N300-2|55530000):2.0\r\n" ++ "CPE210(TP-LINK|US|N300-2|55530000):2.0\r\n" ++ "CPE210(TP-LINK|UN|N300-2):2.0\r\n" ++ "CPE210(TP-LINK|EU|N300-2):2.0\r\n" ++ "CPE210(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}, ++ {"device-info", 0x31400, 0x00400}, ++ {"signature", 0x32000, 0x00400}, ++ {"device-id", 0x33000, 0x00100}, ++ {"os-image", 0x40000, 0x170000}, ++ {"soft-version", 0x1b0000, 0x00100}, ++ {"support-list", 0x1b1000, 0x01000}, ++ {"file-system", 0x1c0000, 0x600000}, ++ {"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 = "file-system", ++ }, + + /** Firmware layout for the CPE510/520 */ + { + + +From 9a70c537d768e767a682cb4c4fa4607d9236560b Mon Sep 17 00:00:00 2001 +From: Adrian Schmutzler +Date: Wed, 2 May 2018 23:10:06 +0200 +Subject: [PATCH] ar71xx: Fix kernel partition size for CPE210 v2 + +The changed partition for the CPE210/510 v1 is linked in +generic-tp-link.mk, but has not been changed in +tplink-safeloader.c so far. + +Signed-off-by: Adrian Schmutzler + +Tested-by: Adrian Schmutzler +--- + tools/firmware-utils/src/tplink-safeloader.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/tools/firmware-utils/src/tplink-safeloader.c b/tools/firmware-utils/src/tplink-safeloader.c +index 5e88653ac2..a7667a7a16 100644 +--- a/tools/firmware-utils/src/tplink-safeloader.c ++++ b/tools/firmware-utils/src/tplink-safeloader.c +@@ -182,10 +182,10 @@ static struct device_info boards[] = { + {"device-info", 0x31400, 0x00400}, + {"signature", 0x32000, 0x00400}, + {"device-id", 0x33000, 0x00100}, +- {"os-image", 0x40000, 0x170000}, +- {"soft-version", 0x1b0000, 0x00100}, +- {"support-list", 0x1b1000, 0x01000}, +- {"file-system", 0x1c0000, 0x600000}, ++ {"os-image", 0x40000, 0x1c0000}, ++ {"file-system", 0x200000, 0x5b0000}, ++ {"soft-version", 0x7b0000, 0x00100}, ++ {"support-list", 0x7b1000, 0x01000}, + {"user-config", 0x7c0000, 0x10000}, + {"default-config", 0x7d0000, 0x10000}, + {"log", 0x7e0000, 0x10000}, +-- +2.11.0 + diff --git a/patches/700-cpe210.patch b/patches/700-cpe210.patch new file mode 100644 index 00000000..6b42fcdb --- /dev/null +++ b/patches/700-cpe210.patch @@ -0,0 +1,21 @@ + +--- a/target/linux/ar71xx/base-files/etc/diag.sh ++++ b/target/linux/ar71xx/base-files/etc/diag.sh +@@ -155,6 +155,7 @@ get_status_led() { + cf-e385ac) + status_led="$board:blue:wlan2g" + ;; ++ cpe210|\ + cpe510) + status_led="tp-link:green:link4" + ;; +--- a/target/linux/ar71xx/base-files/etc/diag.sh ++++ b/target/linux/ar71xx/base-files/etc/diag.sh +@@ -155,6 +155,7 @@ get_status_led() { + cf-e385ac) + status_led="$board:blue:wlan2g" + ;; ++ cpe210-v2|\ + cpe210|\ + cpe510) + status_led="tp-link:green:link4" diff --git a/patches/series b/patches/series index 658b0a70..bae39c56 100644 --- a/patches/series +++ b/patches/series @@ -1,3 +1,5 @@ +001-add_support_for_TP-Link_CPE210_v2.patch +700-cpe210.patch 002-firmware-check-fix.patch 701-extended-spectrum.patch 702-enable-country-hx.patch diff --git a/scripts/tests/postbuild/700-imagename.sh b/scripts/tests/postbuild/700-imagename.sh index b37758b4..243cb447 100755 --- a/scripts/tests/postbuild/700-imagename.sh +++ b/scripts/tests/postbuild/700-imagename.sh @@ -38,7 +38,7 @@ LICENSE ## Values for count of final images ### This value should be updated as we add/remove device image types -NUMBEROFIMAGESCOUNT=11 +NUMBEROFIMAGESCOUNT=12 ### Static Files, only when buildroot changes adjust output files types. ### These are files such as vmlinux, uimage, etc. STATICFILESCOUNT=0