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 592d2cb504..91d5b0d80d 100755 --- a/target/linux/ath79/base-files/etc/board.d/01_leds +++ b/target/linux/ath79/base-files/etc/board.d/01_leds @@ -141,7 +141,8 @@ tplink,tl-wr842n-v3) tplink,archer-c58-v1|\ tplink,archer-c59-v1|\ tplink,archer-c60-v1|\ -tplink,archer-c60-v2) +tplink,archer-c60-v2|\ +tplink,archer-c60-v3) ucidef_set_led_switch "lan" "LAN" "tp-link:green:lan" "switch0" "0x1E" ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth1" ;; 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 25c39aa3ff..5ca7315d40 100755 --- a/target/linux/ath79/base-files/etc/board.d/02_network +++ b/target/linux/ath79/base-files/etc/board.d/02_network @@ -76,6 +76,7 @@ ath79_setup_interfaces() tplink,archer-c25-v1|\ tplink,archer-c60-v1|\ tplink,archer-c60-v2|\ + tplink,archer-c60-v3|\ tplink,tl-mr3220-v1|\ tplink,tl-mr3420-v1|\ tplink,tl-wr841-v7|\ diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata index cbb50a8fc4..d93e6dcd71 100644 --- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata +++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata @@ -202,6 +202,7 @@ case "$FIRMWARE" in tplink,archer-c59-v1|\ tplink,archer-c60-v1|\ tplink,archer-c60-v2|\ + tplink,archer-c60-v3|\ tplink,archer-c6-v2) ath10kcal_extract "art" 20480 12064 ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_binary mac 8) -1) diff --git a/target/linux/ath79/dts/qca9561_tplink_archer-c60-v1.dts b/target/linux/ath79/dts/qca9561_tplink_archer-c60-v1.dts index 85e456bb44..a83b5881d4 100644 --- a/target/linux/ath79/dts/qca9561_tplink_archer-c60-v1.dts +++ b/target/linux/ath79/dts/qca9561_tplink_archer-c60-v1.dts @@ -8,6 +8,18 @@ model = "TP-Link Archer C60 v1"; }; +&leds { + wan_amber { + label = "tp-link:amber:wan"; + gpios = <&gpio 22 GPIO_ACTIVE_LOW>; + }; + + wps { + label = "tp-link:green:wps"; + gpios = <&gpio 19 GPIO_ACTIVE_LOW>; + }; +}; + &spi { status = "okay"; num-cs = <1>; diff --git a/target/linux/ath79/dts/qca9561_tplink_archer-c60-v2.dts b/target/linux/ath79/dts/qca9561_tplink_archer-c60-v2.dts index 29f916734e..c19e4e973d 100644 --- a/target/linux/ath79/dts/qca9561_tplink_archer-c60-v2.dts +++ b/target/linux/ath79/dts/qca9561_tplink_archer-c60-v2.dts @@ -8,6 +8,18 @@ model = "TP-Link Archer C60 v2"; }; +&leds { + wan_amber { + label = "tp-link:amber:wan"; + gpios = <&gpio 22 GPIO_ACTIVE_LOW>; + }; + + wps { + label = "tp-link:green:wps"; + gpios = <&gpio 19 GPIO_ACTIVE_LOW>; + }; +}; + &spi { status = "okay"; num-cs = <1>; diff --git a/target/linux/ath79/dts/qca9561_tplink_archer-c60-v3.dts b/target/linux/ath79/dts/qca9561_tplink_archer-c60-v3.dts new file mode 100644 index 0000000000..444d54b000 --- /dev/null +++ b/target/linux/ath79/dts/qca9561_tplink_archer-c60-v3.dts @@ -0,0 +1,69 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include "qca9561_tplink_archer-c6x.dtsi" + +/ { + compatible = "tplink,archer-c60-v3", "qca,qca9561"; + model = "TP-Link Archer C60 v3"; +}; + +&leds { + wan_amber { + label = "tp-link:amber:wan"; + gpios = <&gpio 19 GPIO_ACTIVE_LOW>; + }; +}; +&spi { + status = "okay"; + + num-cs = <1>; + + flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <25000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "factory-boot"; + reg = <0x000000 0x01fb00>; + read-only; + }; + + mac: partition@1fb00 { + label = "mac"; + reg = <0x01fb00 0x000500>; + read-only; + }; + + partition@20000 { + label = "u-boot"; + reg = <0x020000 0x010000>; + read-only; + }; + + partition@30000 { + compatible = "denx,uimage"; + label = "firmware"; + reg = <0x030000 0x7a0000>; + }; + + partition@7d0000 { + label = "tplink"; + reg = <0x7d0000 0x020000>; + read-only; + }; + + art: partition@7f0000 { + label = "art"; + reg = <0x7f0000 0x010000>; + read-only; + }; + }; + }; +}; diff --git a/target/linux/ath79/dts/qca9561_tplink_archer-c6x.dtsi b/target/linux/ath79/dts/qca9561_tplink_archer-c6x.dtsi index 23ef0cdcbf..6c015fcdd9 100644 --- a/target/linux/ath79/dts/qca9561_tplink_archer-c6x.dtsi +++ b/target/linux/ath79/dts/qca9561_tplink_archer-c6x.dtsi @@ -33,7 +33,7 @@ }; }; - leds { + leds: leds { compatible = "gpio-leds"; led_power: power { @@ -59,20 +59,10 @@ gpios = <&gpio 20 GPIO_ACTIVE_LOW>; }; - wan_amber { - label = "tp-link:amber:wan"; - gpios = <&gpio 22 GPIO_ACTIVE_LOW>; - }; - lan { label = "tp-link:green:lan"; gpios = <&gpio 2 GPIO_ACTIVE_LOW>; }; - - wps { - label = "tp-link:green:wps"; - gpios = <&gpio 19 GPIO_ACTIVE_LOW>; - }; }; }; diff --git a/target/linux/ath79/image/generic-tp-link.mk b/target/linux/ath79/image/generic-tp-link.mk index 01d3c42acc..b252101a76 100644 --- a/target/linux/ath79/image/generic-tp-link.mk +++ b/target/linux/ath79/image/generic-tp-link.mk @@ -76,6 +76,16 @@ define Device/tplink_archer-c60-v2 endef TARGET_DEVICES += tplink_archer-c60-v2 +define Device/tplink_archer-c60-v3 + $(Device/tplink-safeloader-uimage) + ATH_SOC := qca9561 + IMAGE_SIZE := 7808k + DEVICE_TITLE := TP-Link Archer C60 v3 + TPLINK_BOARD_ID := ARCHER-C60-V3 + DEVICE_PACKAGES := kmod-ath10k-ct-smallbuffers ath10k-firmware-qca9888-ct +endef +TARGET_DEVICES += tplink_archer-c60-v3 + define Device/tplink_archer-c6-v2 $(Device/tplink-safeloader-uimage) ATH_SOC := qca9563 diff --git a/tools/firmware-utils/src/tplink-safeloader.c b/tools/firmware-utils/src/tplink-safeloader.c index 1c5792f70b..b6ad5c0869 100644 --- a/tools/firmware-utils/src/tplink-safeloader.c +++ b/tools/firmware-utils/src/tplink-safeloader.c @@ -799,6 +799,42 @@ static struct device_info boards[] = { .last_sysupgrade_partition = "file-system", }, + /** Firmware layout for the C60v3 */ + { + .id = "ARCHER-C60-V3", + .vendor = "", + .support_list = + "SupportList:\r\n" + "{product_name:Archer C60,product_ver:3.0.0,special_id:42520000}\r\n" + "{product_name:Archer C60,product_ver:3.0.0,special_id:45550000}\r\n" + "{product_name:Archer C60,product_ver:3.0.0,special_id:55530000}\r\n", + .support_trail = '\x00', + .soft_ver = "soft_ver:3.0.0\n", + + .partitions = { + {"factory-boot", 0x00000, 0x1fb00}, + {"default-mac", 0x1fb00, 0x00200}, + {"pin", 0x1fd00, 0x00100}, + {"product-info", 0x1fe00, 0x00100}, + {"device-id", 0x1ff00, 0x00100}, + {"fs-uboot", 0x20000, 0x10000}, + {"firmware", 0x30000, 0x7a0000}, + {"soft-version", 0x7d9500, 0x00100}, + {"support-list", 0x7d9600, 0x00100}, + {"extra-para", 0x7d9700, 0x00100}, + {"profile", 0x7d9800, 0x03000}, + {"default-config", 0x7dc800, 0x03000}, + {"partition-table", 0x7df800, 0x00800}, + {"user-config", 0x7e0000, 0x0c000}, + {"certificate", 0x7ec000, 0x04000}, + {"radio", 0x7f0000, 0x10000}, + {NULL, 0, 0} + }, + + .first_sysupgrade_partition = "os-image", + .last_sysupgrade_partition = "file-system", + }, + /** Firmware layout for the C5 */ { .id = "ARCHER-C5-V2", @@ -1835,6 +1871,7 @@ static void build_image(const char *output, strcasecmp(info->id, "ARCHER-C25-V1") == 0 || strcasecmp(info->id, "ARCHER-C59-V2") == 0 || strcasecmp(info->id, "ARCHER-C60-V2") == 0 || + strcasecmp(info->id, "ARCHER-C60-V3") == 0 || strcasecmp(info->id, "TLWR1043NV5") == 0) { const char mdat[11] = {0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00}; parts[5] = put_data("extra-para", mdat, 11);