From d03aae1a09fce5a5d5747855bc07ee1f54388e03 Mon Sep 17 00:00:00 2001 From: Georgi Vlaev Date: Fri, 28 Dec 2018 10:24:01 +0200 Subject: ath79: add support for TP-Link Archer C6 v2 This patch adds support for TP-Link Archer C6 v2 (EU) Hardware specification: - SOC: Qualcomm QCA9563 @ 775MHz - Flash: GigaDevice GD25Q64CSIG (8MiB) - RAM: Zentel A3R1GE40JBF (128 MiB DDR2) - Ethernet: Qualcomm QCA8337N: 4x 1Gbps LAN + 1x 1Gbps WAN - Wireless: - 2.4GHz (bgn) QCA9563 integrated (3x3) - 5GHz (ac) Qualcomm QCA9886 (2x2) - Button: 1x power, 1x reset, 1x wps - LED: 6x LEDs: power, wlan2g, wlan5g, lan, wan, wps - UART: There's no UART header on the board Flash instructions: Upload openwrt-ath79-generic-tplink_archer-c6-v2-squashfs-factory.bin via the router Web interface. Flash instruction using tftp recovery: 1. Connect the computer to one of the LAN ports of the router 2. Set the computer IP to 192.168.0.66 3. Start a tftp server with the OpenWrt factory image in the tftp root directory renamed to ArcherC6v2_tp_recovery.bin. 4. Connect power cable to router, press and hold the reset button and turn the router on 5. Keep the reset button pressed until the WPS LED lights up 6. Wait ~150 seconds to complete flashing According to the GPL source the non-EU variant has different GPIOs assigned to some of the LEDs and buttons. The flash layout might be different as well. The wikidevi entry for Archer A6/C6 assumes they are identical. Signed-off-by: Georgi Vlaev --- tools/firmware-utils/src/tplink-safeloader.c | 39 ++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'tools/firmware-utils/src') diff --git a/tools/firmware-utils/src/tplink-safeloader.c b/tools/firmware-utils/src/tplink-safeloader.c index 358247e626..74ea697634 100644 --- a/tools/firmware-utils/src/tplink-safeloader.c +++ b/tools/firmware-utils/src/tplink-safeloader.c @@ -548,6 +548,42 @@ static struct device_info boards[] = { .last_sysupgrade_partition = "file-system", }, + /** Firmware layout for the C6v2 */ + { + .id = "ARCHER-C6-V2", + .vendor = "", + .support_list = + "SupportList:\r\n" + "{product_name:Archer C6,product_ver:2.0.0,special_id:45550000}\r\n" + "{product_name:Archer C6,product_ver:2.0.0,special_id:52550000}\r\n" + "{product_name:Archer C6,product_ver:2.0.0,special_id:4A500000}\r\n", + .support_trail = '\x00', + .soft_ver = "soft_ver:1.0.0\n", + + .partitions = { + {"fs-uboot", 0x00000, 0x20000}, + {"default-mac", 0x20000, 0x00200}, + {"pin", 0x20200, 0x00100}, + {"product-info", 0x20300, 0x00200}, + {"device-id", 0x20500, 0x0fb00}, + {"firmware", 0x30000, 0x7a9400}, + {"soft-version", 0x7d9400, 0x00100}, + {"extra-para", 0x7d9500, 0x00100}, + {"support-list", 0x7d9600, 0x00200}, + {"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 C60v1 */ { .id = "ARCHER-C60-V1", @@ -1624,6 +1660,9 @@ static void build_image(const char *output, } else if (strcasecmp(info->id, "ARCHER-A7-V5") == 0 || strcasecmp(info->id, "ARCHER-C7-V4") == 0 || strcasecmp(info->id, "ARCHER-C7-V5") == 0) { const char mdat[11] = {0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0xca, 0x00, 0x01, 0x00, 0x00}; parts[5] = put_data("extra-para", mdat, 11); + } else if (strcasecmp(info->id, "ARCHER-C6-V2") == 0) { + const char mdat[11] = {0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00}; + parts[5] = put_data("extra-para", mdat, 11); } size_t len; -- cgit v1.2.3