From b05c7193fd289ff697324caccf77adf9ffa76373 Mon Sep 17 00:00:00 2001 From: Henryk Heisig Date: Fri, 16 Jun 2017 15:26:30 +0200 Subject: ar71xx: add support for TP-Link Archer C58 v1 TP-Link Archer C58 v1 is a dual-band AC1350 router, based on Qualcomm QCA9561 + QCA9886. It looks like Archer C59 v1 without USB port. Specification: - 775/650/258 MHz (CPU/DDR/AHB) - 64 MB of RAM (DDR2) - 8 MB of FLASH (SPI NOR) - 3T3R 2.4 GHz - 2T2R 5 GHz - 5x 10/100 Mbps Ethernet - 6x LED, 3x button - UART header on PCB, RX, TX at TP4+5 (backside) QCA9886 wlan needs pre_cal_data file and enable ieee80211 phy hotplug to patch macaddress. Flash instruction: Use "factory" image directly in vendor GUI. Recovery method: 1. Set PC to fixed ip address 192.168.0.66/24. 2. Download "lede-ar71xx-generic-archer-c58-v1-squashfs-factory.bin" and rename it to "tp_recovery.bin". 3. Start a tftp server with the file "tp_recovery.bin" in its root directory. 4. Turn off the router. 5. Press and hold Reset button. 6. Turn on router with the reset button pressed and wait ~15 seconds. 7. Release the reset button and after a short time the firmware should be transferred from the tftp server. 8. Wait ~30 second to complete recovery. Flash instruction under U-Boot, using UART: tftp 0x81000000 lede-ar71xx-...-sysupgrade.bin erase 0x9f020000 +$filesize cp.b $fileaddr 0x9f020000 $filesize reset This commit is based on GitHub PR#1112 Signed-off-by: Henryk Heisig --- target/linux/ar71xx/base-files/etc/board.d/01_leds | 1 + .../linux/ar71xx/base-files/etc/board.d/02_network | 1 + target/linux/ar71xx/base-files/etc/diag.sh | 1 + .../etc/hotplug.d/firmware/11-ath10k-caldata | 7 +++++++ .../etc/hotplug.d/ieee80211/10_fix_wifi_mac | 21 +++++++++++++++++++++ target/linux/ar71xx/base-files/lib/ar71xx.sh | 3 +++ .../linux/ar71xx/base-files/lib/upgrade/platform.sh | 1 + 7 files changed, 35 insertions(+) create mode 100644 target/linux/ar71xx/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac (limited to 'target/linux/ar71xx/base-files') 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 d80efef..de9072e 100755 --- a/target/linux/ar71xx/base-files/etc/board.d/01_leds +++ b/target/linux/ar71xx/base-files/etc/board.d/01_leds @@ -63,6 +63,7 @@ archer-c25-v1) ucidef_set_led_switch "lan3" "LAN3" "$board:green:lan3" "switch0" "0x04" ucidef_set_led_switch "lan4" "LAN4" "$board:green:lan4" "switch0" "0x02" ;; +archer-c58-v1|\ archer-c59-v1|\ archer-c60-v1) ucidef_set_led_switch "lan" "LAN" "$board:green:lan" "switch0" "0x1E" 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 a7a9921..311e091 100755 --- a/target/linux/ar71xx/base-files/etc/board.d/02_network +++ b/target/linux/ar71xx/base-files/etc/board.d/02_network @@ -217,6 +217,7 @@ ar71xx_setup_interfaces() ucidef_add_switch "switch0" \ "0@eth1" "2:lan" "3:lan" "4:lan" "5:lan" "6@eth0" "1:wan" ;; + archer-c58-v1|\ archer-c59-v1|\ rb-450g) ucidef_set_interfaces_lan_wan "eth1.1" "eth0" diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh index 0bb338a..2d2a678 100644 --- a/target/linux/ar71xx/base-files/etc/diag.sh +++ b/target/linux/ar71xx/base-files/etc/diag.sh @@ -52,6 +52,7 @@ get_status_led() { status_led="ap135:green:status" ;; archer-c25-v1|\ + archer-c58-v1|\ archer-c59-v1|\ archer-c60-v1|\ fritz300e|\ diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata index 91db049..ecbc9b8 100644 --- a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata +++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata @@ -134,6 +134,13 @@ case "$FIRMWARE" in ;; esac ;; +"ath10k/pre-cal-pci-0000:00:00.0.bin") + case $board in + archer-c58-v1) + ath10kcal_extract "art" 20480 12064 + ;; + esac + ;; *) exit 1 ;; diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac b/target/linux/ar71xx/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac new file mode 100644 index 0000000..7d2eca5 --- /dev/null +++ b/target/linux/ar71xx/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac @@ -0,0 +1,21 @@ +#!/bin/ash + +[ "$ACTION" == "add" ] || exit 0 + +PHYNBR=${DEVPATH##*/phy} + +[ -n $PHYNBR ] || exit 0 + +. /lib/ar71xx.sh +. /lib/functions/system.sh + +board=$(ar71xx_board_name) + +case "$board" in + archer-c58-v1) + echo $(macaddr_add $(mtd_get_mac_binary mac 8) $(($PHYNBR - 1)) ) > /sys${DEVPATH}/macaddress + ;; + *) + ;; +esac + diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh index 3f781a8..df8c6d7 100755 --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh @@ -449,6 +449,9 @@ ar71xx_board_detect() { *"Archer C5") name="archer-c5" ;; + *"Archer C58 v1") + name="archer-c58-v1" + ;; *"Archer C59 v1") name="archer-c59-v1" ;; diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh index 454af2c..85fc1e9 100755 --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh @@ -207,6 +207,7 @@ platform_check_image() { ap531b0|\ ap90q|\ archer-c25-v1|\ + archer-c58-v1|\ archer-c59-v1|\ archer-c60-v1|\ bullet-m|\ -- cgit v1.1