[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