ath79: add support for TP-Link CPE510-v2/v3
[openwrt/openwrt.git] / tools / firmware-utils / src / tplink-safeloader.c
index 74ea6976348d5051ebaf18fc3e5fef5ebf3205cf..cfd36459509e0bffe6886a24924bc5e3ef24eb5e 100644 (file)
@@ -182,8 +182,42 @@ static struct device_info boards[] = {
                        {"device-info", 0x31400, 0x00400},
                        {"signature", 0x32000, 0x00400},
                        {"device-id", 0x33000, 0x00100},
-                       {"os-image", 0x40000, 0x1c0000},
-                       {"file-system", 0x200000, 0x5b0000},
+                       {"firmware", 0x40000, 0x770000},
+                       {"soft-version", 0x7b0000, 0x00100},
+                       {"support-list", 0x7b1000, 0x01000},
+                       {"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 CPE210 V3 */
+       {
+               .id     = "CPE210V3",
+               .vendor = "CPE210(TP-LINK|UN|N300-2|00000000):3.0\r\n",
+               .support_list =
+                       "SupportList:\r\n"
+                       "CPE210(TP-LINK|EU|N300-2|45550000):3.0\r\n"
+                       "CPE210(TP-LINK|UN|N300-2|00000000):3.0\r\n"
+                       "CPE210(TP-LINK|UN|N300-2):3.0\r\n"
+                       "CPE210(TP-LINK|EU|N300-2):3.0\r\n",
+               .support_trail = '\xff',
+               .soft_ver = NULL,
+
+               .partitions = {
+                       {"fs-uboot", 0x00000, 0x20000},
+                       {"partition-table", 0x20000, 0x01000},
+                       {"default-mac", 0x30000, 0x00020},
+                       {"product-info", 0x31100, 0x00100},
+                       {"device-info", 0x31400, 0x00400},
+                       {"signature", 0x32000, 0x00400},
+                       {"device-id", 0x33000, 0x00100},
+                       {"firmware", 0x40000, 0x770000},
                        {"soft-version", 0x7b0000, 0x00100},
                        {"support-list", 0x7b1000, 0x01000},
                        {"user-config", 0x7c0000, 0x10000},
@@ -245,6 +279,130 @@ static struct device_info boards[] = {
                .last_sysupgrade_partition = "support-list",
        },
 
+       /** Firmware layout for the CPE510 V2 */
+       {
+               .id     = "CPE510V2",
+               .vendor = "CPE510(TP-LINK|UN|N300-5):2.0\r\n",
+               .support_list =
+                       "SupportList:\r\n"
+                       "CPE510(TP-LINK|EU|N300-5|00000000):2.0\r\n"
+                       "CPE510(TP-LINK|EU|N300-5|45550000):2.0\r\n"
+                       "CPE510(TP-LINK|EU|N300-5|55530000):2.0\r\n"
+                       "CPE510(TP-LINK|UN|N300-5|00000000):2.0\r\n"
+                       "CPE510(TP-LINK|UN|N300-5|45550000):2.0\r\n"
+                       "CPE510(TP-LINK|UN|N300-5|55530000):2.0\r\n"
+                       "CPE510(TP-LINK|US|N300-5|00000000):2.0\r\n"
+                       "CPE510(TP-LINK|US|N300-5|45550000):2.0\r\n"
+                       "CPE510(TP-LINK|US|N300-5|55530000):2.0\r\n"
+                       "CPE510(TP-LINK|UN|N300-5):2.0\r\n"
+                       "CPE510(TP-LINK|EU|N300-5):2.0\r\n"
+                       "CPE510(TP-LINK|US|N300-5):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 V3 */
+       {
+               .id     = "CPE510V3",
+               .vendor = "CPE510(TP-LINK|UN|N300-5):3.0\r\n",
+               .support_list =
+                       "SupportList:\r\n"
+                       "CPE510(TP-LINK|EU|N300-5|00000000):3.0\r\n"
+                       "CPE510(TP-LINK|EU|N300-5|45550000):3.0\r\n"
+                       "CPE510(TP-LINK|EU|N300-5|55530000):3.0\r\n"
+                       "CPE510(TP-LINK|UN|N300-5|00000000):3.0\r\n"
+                       "CPE510(TP-LINK|UN|N300-5|45550000):3.0\r\n"
+                       "CPE510(TP-LINK|UN|N300-5|55530000):3.0\r\n"
+                       "CPE510(TP-LINK|US|N300-5|00000000):3.0\r\n"
+                       "CPE510(TP-LINK|US|N300-5|45550000):3.0\r\n"
+                       "CPE510(TP-LINK|US|N300-5|55530000):3.0\r\n"
+                       "CPE510(TP-LINK|UN|N300-5):3.0\r\n"
+                       "CPE510(TP-LINK|EU|N300-5):3.0\r\n"
+                       "CPE510(TP-LINK|US|N300-5):3.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 CPE610V1 */
+       {
+               .id     = "CPE610V1",
+               .vendor = "CPE610(TP-LINK|UN|N300-5|00000000):1.0\r\n",
+               .support_list =
+                       "SupportList:\r\n"
+                       "CPE610(TP-LINK|EU|N300-5|00000000):1.0\r\n"
+                       "CPE610(TP-LINK|EU|N300-5|45550000):1.0\r\n"
+                       "CPE610(TP-LINK|EU|N300-5|55530000):1.0\r\n"
+                       "CPE610(TP-LINK|UN|N300-5|00000000):1.0\r\n"
+                       "CPE610(TP-LINK|UN|N300-5|45550000):1.0\r\n"
+                       "CPE610(TP-LINK|UN|N300-5|55530000):1.0\r\n"
+                       "CPE610(TP-LINK|US|N300-5|55530000):1.0\r\n"
+                       "CPE610(TP-LINK|UN|N300-5):1.0\r\n"
+                       "CPE610(TP-LINK|EU|N300-5):1.0\r\n"
+                       "CPE610(TP-LINK|US|N300-5):1.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",
+       },
+
        {
                .id     = "WBS210",
                .vendor = "CPE510(TP-LINK|UN|N300-5):1.0\r\n",
@@ -397,6 +555,44 @@ static struct device_info boards[] = {
                .last_sysupgrade_partition = "file-system",
        },
 
+       /** Firmware layout for the C2v3 */
+       {
+               .id = "ARCHER-C2-V3",
+               .support_list =
+                       "SupportList:\n"
+                       "{product_name:ArcherC2,product_ver:3.0.0,special_id:00000000}\n"
+                       "{product_name:ArcherC2,product_ver:3.0.0,special_id:55530000}\n"
+                       "{product_name:ArcherC2,product_ver:3.0.0,special_id:45550000}\n",
+               .support_trail = '\x00',
+               .soft_ver = "soft_ver:3.0.1\n",
+
+               /** We're using a dynamic kernel/rootfs split here */
+
+               .partitions = {
+                       {"factory-boot", 0x00000, 0x20000},
+                       {"fs-uboot", 0x20000, 0x10000},
+                       {"firmware", 0x30000, 0x7a0000},
+                       {"user-config", 0x7d0000, 0x04000},
+                       {"default-mac", 0x7e0000, 0x00100},
+                       {"device-id", 0x7e0100, 0x00100},
+                       {"extra-para", 0x7e0200, 0x00100},
+                       {"pin", 0x7e0300, 0x00100},
+                       {"support-list", 0x7e0400, 0x00400},
+                       {"soft-version", 0x7e0800, 0x00400},
+                       {"product-info", 0x7e0c00, 0x01400},
+                       {"partition-table", 0x7e2000, 0x01000},
+                       {"profile", 0x7e3000, 0x01000},
+                       {"default-config", 0x7e4000, 0x04000},
+                       {"merge-config", 0x7ec000, 0x02000},
+                       {"qos-db", 0x7ee000, 0x02000},
+                       {"radio", 0x7f0000, 0x10000},
+                       {NULL, 0, 0}
+               },
+
+               .first_sysupgrade_partition = "os-image",
+               .last_sysupgrade_partition = "file-system",
+       },
+
        /** Firmware layout for the C25v1 */
        {
                .id = "ARCHER-C25-V1",
@@ -745,7 +941,9 @@ static struct device_info boards[] = {
                        "{product_name:Archer C7,product_ver:5.0.0,special_id:55530000}\n"
                        "{product_name:Archer C7,product_ver:5.0.0,special_id:43410000}\n"
                        "{product_name:Archer C7,product_ver:5.0.0,special_id:4A500000}\n"
-                       "{product_name:Archer C7,product_ver:5.0.0,special_id:54570000}\n",
+                       "{product_name:Archer C7,product_ver:5.0.0,special_id:54570000}\n"
+                       "{product_name:Archer C7,product_ver:5.0.0,special_id:52550000}\n"
+                       "{product_name:Archer C7,product_ver:5.0.0,special_id:4B520000}\n",
 
                .support_trail = '\x00',
                .soft_ver = "soft_ver:1.0.0\n",
@@ -1105,6 +1303,38 @@ static struct device_info boards[] = {
                .last_sysupgrade_partition = "file-system"
        },
 
+       /** Firmware layout for the RE350K v1 */
+       {
+               .id = "RE350K-V1",
+               .vendor = "",
+               .support_list =
+                       "SupportList:\n"
+                       "{product_name:RE350K,product_ver:1.0.0,special_id:00000000,product_region:US}\n",
+               .support_trail = '\x00',
+               .soft_ver = NULL,
+
+               /** We're using a dynamic kernel/rootfs split here */
+               .partitions = {
+                       {"fs-uboot", 0x00000, 0x20000},
+                       {"firmware", 0x20000, 0xd70000},
+                       {"partition-table", 0xd90000, 0x02000},
+                       {"default-mac", 0xda0000, 0x00020},
+                       {"pin", 0xda0100, 0x00020},
+                       {"product-info", 0xda1100, 0x01000},
+                       {"soft-version", 0xdb0000, 0x01000},
+                       {"support-list", 0xdb1000, 0x01000},
+                       {"profile", 0xdb2000, 0x08000},
+                       {"user-config", 0xdc0000, 0x10000},
+                       {"default-config", 0xdd0000, 0x10000},
+                       {"device-id", 0xde0000, 0x00108},
+                       {"radio", 0xff0000, 0x10000},
+                       {NULL, 0, 0}
+               },
+
+               .first_sysupgrade_partition = "os-image",
+               .last_sysupgrade_partition = "file-system"
+       },
+
        /** Firmware layout for the RE355 */
        {
                .id = "RE355",
@@ -1221,6 +1451,43 @@ static struct device_info boards[] = {
                .last_sysupgrade_partition = "file-system"
        },
 
+       /** Firmware layout for the RE650 */
+       {
+               .id = "RE650-V1",
+               .vendor = "",
+               .support_list =
+                       "SupportList:\r\n"
+                       "{product_name:RE650,product_ver:1.0.0,special_id:00000000}\r\n"
+                       "{product_name:RE650,product_ver:1.0.0,special_id:55530000}\r\n"
+                       "{product_name:RE650,product_ver:1.0.0,special_id:45550000}\r\n"
+                       "{product_name:RE650,product_ver:1.0.0,special_id:4A500000}\r\n"
+                       "{product_name:RE650,product_ver:1.0.0,special_id:43410000}\r\n"
+                       "{product_name:RE650,product_ver:1.0.0,special_id:41550000}\r\n"
+                       "{product_name:RE650,product_ver:1.0.0,special_id:41530000}\r\n",
+               .support_trail = '\x00',
+               .soft_ver = NULL,
+
+               /* We're using a dynamic kernel/rootfs split here */
+               .partitions = {
+                       {"fs-uboot", 0x00000, 0x20000},
+                       {"firmware", 0x20000, 0xde0000},
+                       {"partition-table", 0xe00000, 0x02000},
+                       {"default-mac", 0xe10000, 0x00020},
+                       {"pin", 0xe10100, 0x00020},
+                       {"product-info", 0xe11100, 0x01000},
+                       {"soft-version", 0xe20000, 0x01000},
+                       {"support-list", 0xe21000, 0x01000},
+                       {"profile", 0xe22000, 0x08000},
+                       {"user-config", 0xe30000, 0x10000},
+                       {"default-config", 0xe40000, 0x10000},
+                       {"radio", 0xff0000, 0x10000},
+                       {NULL, 0, 0}
+               },
+
+               .first_sysupgrade_partition = "os-image",
+               .last_sysupgrade_partition = "file-system"
+       },
+
        {}
 };
 
@@ -1651,7 +1918,8 @@ static void build_image(const char *output,
        parts[4] = read_file("file-system", rootfs_image, add_jffs2_eof, file_system_partition);
 
        /* Some devices need the extra-para partition to accept the firmware */
-       if (strcasecmp(info->id, "ARCHER-C25-V1") == 0 ||
+       if (strcasecmp(info->id, "ARCHER-C2-V3") == 0 ||
+           strcasecmp(info->id, "ARCHER-C25-V1") == 0 ||
            strcasecmp(info->id, "ARCHER-C59-V2") == 0 ||
            strcasecmp(info->id, "ARCHER-C60-V2") == 0 ||
            strcasecmp(info->id, "TLWR1043NV5") == 0) {