[OpenWrt-Devel] [PATCH] [tools] firmware-utils: Add Archer C2600 support to tplink-safeloader
John Crispin
blogic at openwrt.org
Fri Dec 11 05:34:57 EST 2015
Hi,
the patch is whitespace broken. please fix an resend
John
On 05/12/2015 02:18, Josh Bendavid wrote:
> From: Josh Bendavid <joshbendavid at gmail.com <mailto:joshbendavid at gmail.com>>
>
> Add support for Archer C2600 to tplink-safeloader by adding needed
> partition table, and vendor information plus support list strings.
> Additional string C2600 is enabled for the -B option.
>
> Signed-off-by: Josh Bendavid <joshbendavid at gmail.com
> <mailto:joshbendavid at gmail.com>>
> ---
>
> diff --git a/tools/firmware-utils/src/tplink-safeloader.c
> b/tools/firmware-utils/src/tplink-safeloader.c
> index 77a894b..9bc2bcb 100644
> --- a/tools/firmware-utils/src/tplink-safeloader.c
> +++ b/tools/firmware-utils/src/tplink-safeloader.c
> @@ -105,6 +105,8 @@ static const uint8_t md5_salt[16] = {
> /** Vendor information for CPE210/220/510/520 */
> static const char cpe510_vendor[] = "CPE510(TP-LINK|UN|N300-5):1.0\r\n";
>
> +/** Vendor information for C2600 */
> +static const char c2600_vendor[] = "";
>
> /**
> The flash partition table for CPE210/220/510/520;
> @@ -128,6 +130,39 @@ static const struct flash_partition_entry
> cpe510_partitions[] = {
> };
>
> /**
> + The flash partition table for C2600;
> + it is the same as the one used by the stock images.
> +*/
> +static const struct flash_partition_entry c2600_partitions[] = {
> + {"SBL1", 0x00000, 0x20000},
> + {"MIBIB", 0x20000, 0x20000},
> + {"SBL2", 0x40000, 0x20000},
> + {"SBL3", 0x60000, 0x30000},
> + {"DDRCONFIG", 0x90000, 0x10000},
> + {"SSD", 0xa0000, 0x10000},
> + {"TZ", 0xb0000, 0x30000},
> + {"RPM", 0xe0000, 0x20000},
> + {"fs-uboot", 0x100000, 0x70000},
> + {"uboot-env", 0x170000, 0x40000},
> + {"radio", 0x1b0000, 0x40000},
> + {"os-image", 0x1f0000, 0x200000},
> + {"file-system", 0x3f0000, 0x1b00000},
> + {"default-mac", 0x1ef0000, 0x00200},
> + {"pin", 0x1ef0200, 0x00200},
> + {"product-info", 0x1ef0400, 0x0fc00},
> + {"partition-table", 0x1f00000, 0x10000},
> + {"soft-version", 0x1f10000, 0x10000},
> + {"support-list", 0x1f20000, 0x10000},
> + {"profile", 0x1f30000, 0x10000},
> + {"default-config", 0x1f40000, 0x10000},
> + {"user-config", 0x1f50000, 0x40000},
> + {"qos-db", 0x1f90000, 0x40000},
> + {"usb-config", 0x1fd0000, 0x10000},
> + {"log", 0x1fe0000, 0x20000},
> +{NULL, 0, 0}
> +};
> +
> +/**
> The support list for CPE210/220/510/520
> */
> static const char cpe510_support_list[] =
> @@ -141,6 +176,13 @@ static const char cpe510_support_list[] =
> "CPE220(TP-LINK|UN|N300-2):1.0\r\n"
> "CPE220(TP-LINK|UN|N300-2):1.1\r\n";
>
> +/**
> + The support list for C2600
> +*/
> +static const char c2600_support_list[] =
> +"SupportList:\r\n"
> +"{product_name:Archer C2600,product_ver:1.0.0,special_id:00000000}\r\n";
> +
> #define error(_ret, _errno, _str, ...)\
> do {\
> fprintf(stderr, _str ": %s\n", ## __VA_ARGS__,\
> @@ -470,6 +512,39 @@ static void do_cpe510(const char *output, const
> char *kernel_image, const char *
> free_image_partition(parts[i]);
> }
>
> +/** Generates an image for C2600 and writes it to a file */
> +static void do_c2600(const char *output, const char *kernel_image,
> const char *rootfs_image, uint32_t rev, bool add_jffs2_eof, bool
> sysupgrade) {
> +struct image_partition_entry parts[6] = {};
> +
> +parts[0] = make_partition_table(c2600_partitions);
> +parts[1] = make_soft_version(rev);
> +parts[2] = make_support_list(c2600_support_list);
> +parts[3] = read_file("os-image", kernel_image, false);
> +parts[4] = read_file("file-system", rootfs_image, add_jffs2_eof);
> +
> +size_t len;
> +void *image;
> +if (sysupgrade)
> +image = generate_sysupgrade_image(c2600_partitions, parts, &len);
> +else
> +image = generate_factory_image(c2600_vendor, parts, &len);
> +
> +FILE *file = fopen(output, "wb");
> +if (!file)
> +error(1, errno, "unable to open output file");
> +
> +if (fwrite(image, len, 1, file) != 1)
> +error(1, 0, "unable to write output file");
> +
> +fclose(file);
> +
> +free(image);
> +
> +size_t i;
> +for (i = 0; parts[i].name; i++)
> +free_image_partition(parts[i]);
> +}
> +
>
> /** Usage output */
> static void usage(const char *argv0) {
> @@ -552,6 +627,8 @@ int main(int argc, char *argv[]) {
>
> if (strcmp(board, "CPE510") == 0)
> do_cpe510(output, kernel_image, rootfs_image, rev, add_jffs2_eof,
> sysupgrade);
> +else if (strcmp(board, "C2600") == 0)
> +do_c2600(output, kernel_image, rootfs_image, rev, add_jffs2_eof,
> sysupgrade);
> else
> error(1, 0, "unsupported board %s", board);
>
>
>
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
>
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list