tools/firmware-utils: use UTC for image timestamps
[openwrt/openwrt.git] / tools / firmware-utils / src / tplink-safeloader.c
index c5d91c943365369320c9f8b510ecbadf128313d0..0af1fe4c6e2ecf215591e0476459fea226e89949 100644 (file)
@@ -204,8 +204,15 @@ static struct device_info boards[] = {
                        "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|US|N300-2|55530000):3.0\r\n"
                        "CPE210(TP-LINK|UN|N300-2):3.0\r\n"
-                       "CPE210(TP-LINK|EU|N300-2):3.0\r\n",
+                       "CPE210(TP-LINK|EU|N300-2):3.0\r\n"
+                       "CPE210(TP-LINK|EU|N300-2|45550000):3.1\r\n"
+                       "CPE210(TP-LINK|UN|N300-2|00000000):3.1\r\n"
+                       "CPE210(TP-LINK|US|N300-2|55530000):3.1\r\n"
+                       "CPE210(TP-LINK|EU|N300-2|45550000):3.20\r\n"
+                       "CPE210(TP-LINK|UN|N300-2|00000000):3.20\r\n"
+                       "CPE210(TP-LINK|US|N300-2|55530000):3.20\r\n",
                .support_trail = '\xff',
                .soft_ver = NULL,
 
@@ -474,6 +481,46 @@ static struct device_info boards[] = {
                .last_sysupgrade_partition = "support-list",
        },
 
+       /** Firmware layout for the CPE610V2 */
+       {
+               .id     = "CPE610V2",
+               .vendor = "CPE610(TP-LINK|UN|N300-5|00000000):2.0\r\n",
+               .support_list =
+                       "SupportList:\r\n"
+                       "CPE610(TP-LINK|EU|N300-5|00000000):2.0\r\n"
+                       "CPE610(TP-LINK|EU|N300-5|45550000):2.0\r\n"
+                       "CPE610(TP-LINK|EU|N300-5|55530000):2.0\r\n"
+                       "CPE610(TP-LINK|UN|N300-5|00000000):2.0\r\n"
+                       "CPE610(TP-LINK|UN|N300-5|45550000):2.0\r\n"
+                       "CPE610(TP-LINK|UN|N300-5|55530000):2.0\r\n"
+                       "CPE610(TP-LINK|US|N300-5|55530000):2.0\r\n"
+                       "CPE610(TP-LINK|UN|N300-5):2.0\r\n"
+                       "CPE610(TP-LINK|EU|N300-5):2.0\r\n"
+                       "CPE610(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",
+       },
+
        {
                .id     = "WBS210",
                .vendor = "CPE510(TP-LINK|UN|N300-5):1.0\r\n",
@@ -891,7 +938,7 @@ static struct device_info boards[] = {
                        "{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.1.1\n",
+               .soft_ver = "soft_ver:1.2.1\n",
 
                .partitions = {
                        {"fs-uboot", 0x00000, 0x20000},
@@ -1515,6 +1562,93 @@ static struct device_info boards[] = {
                .last_sysupgrade_partition = "file-system"
        },
 
+  /** Firmware layout for the RE200 v3 */
+       {
+               .id     = "RE200-V3",
+               .vendor = "",
+               .support_list =
+                       "SupportList:\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:00000000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:41520000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:41550000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:42520000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:43410000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:45470000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:45530000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:45550000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:49440000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:4A500000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:4B520000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:52550000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:54570000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:55530000}\n",
+               .support_trail = '\x00',
+               .soft_ver = NULL,
+
+               .partitions = {
+                       {"fs-uboot", 0x00000, 0x20000},
+                       {"firmware", 0x20000, 0x7a0000},
+                       {"partition-table", 0x7c0000, 0x02000},
+                       {"default-mac", 0x7c2000, 0x00020},
+                       {"pin", 0x7c2100, 0x00020},
+                       {"product-info", 0x7c3100, 0x01000},
+                       {"soft-version", 0x7c4200, 0x01000},
+                       {"support-list", 0x7c5200, 0x01000},
+                       {"profile", 0x7c6200, 0x08000},
+                       {"config-info", 0x7ce200, 0x00400},
+                       {"user-config", 0x7d0000, 0x10000},
+                       {"default-config", 0x7e0000, 0x10000},
+                       {"radio", 0x7f0000, 0x10000},
+                       {NULL, 0, 0}
+               },
+
+               .first_sysupgrade_partition = "os-image",
+               .last_sysupgrade_partition = "file-system"
+       },
+
+       /** Firmware layout for the RE220 v2 */
+       {
+               .id     = "RE220-V2",
+               .vendor = "",
+               .support_list =
+                       "SupportList:\n"
+                       "{product_name:RE220,product_ver:2.0.0,special_id:00000000}\n"
+                       "{product_name:RE220,product_ver:2.0.0,special_id:41520000}\n"
+                       "{product_name:RE220,product_ver:2.0.0,special_id:41550000}\n"
+                       "{product_name:RE220,product_ver:2.0.0,special_id:42520000}\n"
+                       "{product_name:RE220,product_ver:2.0.0,special_id:43410000}\n"
+                       "{product_name:RE220,product_ver:2.0.0,special_id:45530000}\n"
+                       "{product_name:RE220,product_ver:2.0.0,special_id:45550000}\n"
+                       "{product_name:RE220,product_ver:2.0.0,special_id:49440000}\n"
+                       "{product_name:RE220,product_ver:2.0.0,special_id:4a500000}\n"
+                       "{product_name:RE220,product_ver:2.0.0,special_id:4b520000}\n"
+                       "{product_name:RE220,product_ver:2.0.0,special_id:52550000}\n"
+                       "{product_name:RE220,product_ver:2.0.0,special_id:54570000}\n"
+                       "{product_name:RE220,product_ver:2.0.0,special_id:55530000}\n",
+               .support_trail = '\x00',
+               .soft_ver = NULL,
+
+               .partitions = {
+                       {"fs-uboot", 0x00000, 0x20000},
+                       {"firmware", 0x20000, 0x7a0000},
+                       {"partition-table", 0x7c0000, 0x02000},
+                       {"default-mac", 0x7c2000, 0x00020},
+                       {"pin", 0x7c2100, 0x00020},
+                       {"product-info", 0x7c3100, 0x01000},
+                       {"soft-version", 0x7c4200, 0x01000},
+                       {"support-list", 0x7c5200, 0x01000},
+                       {"profile", 0x7c6200, 0x08000},
+                       {"config-info", 0x7ce200, 0x00400},
+                       {"user-config", 0x7d0000, 0x10000},
+                       {"default-config", 0x7e0000, 0x10000},
+                       {"radio", 0x7f0000, 0x10000},
+                       {NULL, 0, 0}
+               },
+
+               .first_sysupgrade_partition = "os-image",
+               .last_sysupgrade_partition = "file-system"
+       },
+
   /** Firmware layout for the RE305 v1 */
        {
                .id     = "RE305-V1",
@@ -1728,7 +1862,83 @@ static struct device_info boards[] = {
                        {"user-config", 0x630000, 0x10000},
                        {"default-config", 0x640000, 0x10000},
                        {"radio", 0x7f0000, 0x10000},
+                       {NULL, 0, 0}
+               },
+
+               .first_sysupgrade_partition = "os-image",
+               .last_sysupgrade_partition = "file-system"
+       },
+
+       /** Firmware layout for the RE450 v3 */
+       {
+               .id     = "RE450-V3",
+               .vendor = "",
+               .support_list =
+                       "SupportList:\r\n"
+                       "{product_name:RE450,product_ver:3.0.0,special_id:00000000}\r\n"
+                       "{product_name:RE450,product_ver:3.0.0,special_id:55530000}\r\n"
+                       "{product_name:RE450,product_ver:3.0.0,special_id:45550000}\r\n"
+                       "{product_name:RE450,product_ver:3.0.0,special_id:4A500000}\r\n"
+                       "{product_name:RE450,product_ver:3.0.0,special_id:43410000}\r\n"
+                       "{product_name:RE450,product_ver:3.0.0,special_id:41550000}\r\n"
+                       "{product_name:RE450,product_ver:3.0.0,special_id:41530000}\r\n"
+                       "{product_name:RE450,product_ver:3.0.0,special_id:4B520000}\r\n"
+                       "{product_name:RE450,product_ver:3.0.0,special_id:42520000}\r\n",
+               .support_trail = '\x00',
+               .soft_ver = NULL,
+
+               /* We're using a dynamic kernel/rootfs split here */
+               .partitions = {
+                       {"fs-uboot", 0x00000, 0x20000},
+                       {"default-mac", 0x20000, 0x00020},
+                       {"pin", 0x20020, 0x00020},
+                       {"product-info", 0x21000, 0x01000},
+                       {"partition-table", 0x22000, 0x02000},
+                       {"soft-version", 0x24000, 0x01000},
+                       {"support-list", 0x25000, 0x01000},
+                       {"profile", 0x26000, 0x08000},
+                       {"user-config", 0x2e000, 0x10000},
+                       {"default-config", 0x3e000, 0x10000},
+                       {"config-info", 0x4e000, 0x00400},
+                       {"firmware", 0x50000, 0x7a0000},
+                       {"radio", 0x7f0000, 0x10000},
+                       {NULL, 0, 0}
+               },
+
+               .first_sysupgrade_partition = "os-image",
+               .last_sysupgrade_partition = "file-system"
+       },
+
+       /** Firmware layout for the RE500 */
+       {
+               .id     = "RE500-V1",
+               .vendor = "",
+               .support_list =
+                       "SupportList:\r\n"
+                       "{product_name:RE500,product_ver:1.0.0,special_id:00000000}\r\n"
+                       "{product_name:RE500,product_ver:1.0.0,special_id:55530000}\r\n"
+                       "{product_name:RE500,product_ver:1.0.0,special_id:45550000}\r\n"
+                       "{product_name:RE500,product_ver:1.0.0,special_id:4A500000}\r\n"
+                       "{product_name:RE500,product_ver:1.0.0,special_id:43410000}\r\n"
+                       "{product_name:RE500,product_ver:1.0.0,special_id:41550000}\r\n"
+                       "{product_name:RE500,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}
                },
 
@@ -1869,7 +2079,7 @@ static struct image_partition_entry make_soft_version(uint32_t rev) {
        else if (time(&t) == (time_t)(-1))
                error(1, errno, "time");
 
-       struct tm *tm = localtime(&t);
+       struct tm *tm = gmtime(&t);
 
        s->magic = htonl(0x0000000c);
        s->zero = 0;