[ar71xx] create firmware image for the Ubiquiti LS-SR71 board
[openwrt/svn-archive/archive.git] / tools / firmware-utils / src / mkfwimage.c
index 0a2f74ee9a2b3be70e4f862c192ca12d6b6b4369..fc1c6ce6a6622c0a4820f7af898f5bb938535ffd 100644 (file)
@@ -34,9 +34,6 @@
 typedef struct fw_layout_data {
        char            name[PATH_MAX];
        u_int32_t       kern_start;
-       u_int32_t       kern_len;
-       u_int32_t       root_start;
-       u_int32_t       root_len;
        u_int32_t       kern_entry;
        u_int32_t       firmware_max_length;
 } fw_layout_t;
@@ -45,29 +42,26 @@ fw_layout_t fw_layout_data[] = {
        {
                .name           =       "XS2",
                .kern_start     =       0xbfc30000,
-               .kern_len       =       0x00140000,
-               .root_start     =       0xbfc30000 + 0x00140000,
-               .root_len       =       0x002C0000,
                .kern_entry     =       0x80041000,
                .firmware_max_length=   0x00390000,
        },
        {
                .name           =       "XS5",
                .kern_start     =       0xbe030000,
-               .kern_len       =       0x00140000,
-               .root_start     =       0xbe030000 + 0x00140000,
-               .root_len       =       0x002C0000,
                .kern_entry     =       0x80041000,
                .firmware_max_length=   0x00390000,
        },
        {
                .name           =       "RS",
-               .kern_start     =       0x00000000,
-               .kern_len       =       0x00140000,
-               .root_start     =       0x00000000,
-               .root_len       =       0x002C0000,
+               .kern_start     =       0xbf030000,
                .kern_entry     =       0x80060000,
-               .firmware_max_length=   0x00140000 + 0x002C0000,
+               .firmware_max_length=   0x00640000,
+       },
+       {
+               .name           =       "LS-SR71",
+               .kern_start     =       0xbf030000,
+               .kern_entry     =       0x80060000,
+               .firmware_max_length=   0x00640000,
        },
        {       .name           =       "",
        },
@@ -243,14 +237,14 @@ static int create_image_layout(const char* kernelfile, const char* rootfsfile, c
 
        strcpy(rootfs->partition_name, "rootfs");
        rootfs->partition_index = 2;
-       rootfs->partition_baseaddr = p->root_start;
+       rootfs->partition_baseaddr = kernel->partition_baseaddr + kernel->partition_length;
        rootfs->partition_length = p->firmware_max_length - kernel->partition_length;
        rootfs->partition_memaddr = 0x00000000;
        rootfs->partition_entryaddr = 0x00000000;
        strncpy(rootfs->filename, rootfsfile, sizeof(rootfs->filename));
 
-printf("kernel: %d %d\n", kernel->partition_length, kernel->partition_baseaddr);
-printf("root: %d %d\n", rootfs->partition_length, rootfs->partition_baseaddr);
+printf("kernel: %d 0x%08x\n", kernel->partition_length, kernel->partition_baseaddr);
+printf("root: %d 0x%08x\n", rootfs->partition_length, rootfs->partition_baseaddr);
        im->part_count = 2;
 
        return 0;