firmware-utils: mktplinkfw2: replace "endian_swap" field with "flags"
authorRafał Miłecki <rafal@milecki.pl>
Sun, 23 Jul 2017 20:19:19 +0000 (22:19 +0200)
committerRafał Miłecki <rafal@milecki.pl>
Mon, 31 Jul 2017 09:43:41 +0000 (11:43 +0200)
This will allow adding more similar tricks needed by other hardware.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
tools/firmware-utils/src/mktplinkfw2.c

index 0b7a15c..9052205 100644 (file)
@@ -76,6 +76,8 @@ struct flash_layout {
        uint32_t        rootfs_ofs;
 };
 
+#define FLAG_LE_KERNEL_LA_EP                   0x00000001      /* Little-endian used for kernel load address & entry point */
+
 struct board_info {
        char            *id;
        uint32_t        hw_id;
@@ -83,7 +85,7 @@ struct board_info {
        uint32_t        hw_ver_add;
        char            *layout_id;
        uint32_t        hdr_ver;
-       bool            endian_swap;
+       uint32_t        flags;
 };
 
 /*
@@ -184,7 +186,7 @@ static struct board_info boards[] = {
                .hw_rev         = 58,
                .layout_id      = "8Mmtk",
                .hdr_ver        = 3,
-               .endian_swap    = true,
+               .flags          = FLAG_LE_KERNEL_LA_EP,
        }, {
                .id             = "ArcherVR200V",
                .hw_id          = 0x73b70801,
@@ -197,14 +199,14 @@ static struct board_info boards[] = {
                .hw_rev         = 69,
                .layout_id      = "8Mmtk",
                .hdr_ver        = 3,
-               .endian_swap    = true,
+               .flags          = FLAG_LE_KERNEL_LA_EP,
        }, {
                .id             = "ArcherMR200",
                .hw_id          = 0xd7500001,
                .hw_rev         = 0x4a,
                .layout_id      = "8MLmtk",
                .hdr_ver        = 3,
-               .endian_swap    = true,
+               .flags          = FLAG_LE_KERNEL_LA_EP,
        }, {
                .id             = "TL-WR840NV4",
                .hw_id          = 0x08400004,
@@ -212,7 +214,7 @@ static struct board_info boards[] = {
                .hw_ver_add     = 0x4,
                .layout_id      = "8Mmtk",
                .hdr_ver        = 3,
-               .endian_swap    = true,
+               .flags          = FLAG_LE_KERNEL_LA_EP,
        }, {
                .id             = "TL-WR841NV13",
                .hw_id          = 0x08410013,
@@ -220,7 +222,7 @@ static struct board_info boards[] = {
                .hw_ver_add     = 0x13,
                .layout_id      = "8Mmtk",
                .hdr_ver        = 3,
-               .endian_swap    = true,
+               .flags          = FLAG_LE_KERNEL_LA_EP,
        }, {
                /* terminating entry */
        }
@@ -574,7 +576,7 @@ static void fill_header(char *buf, int len)
        hdr->ver_mid = fw_ver_mid;
        hdr->ver_lo = fw_ver_lo;
 
-       if (board->endian_swap) {
+       if (board->flags & FLAG_LE_KERNEL_LA_EP) {
                hdr->kernel_la = bswap_32(hdr->kernel_la);
                hdr->kernel_ep = bswap_32(hdr->kernel_ep);
        }
@@ -1018,7 +1020,7 @@ int main(int argc, char *argv[])
                        hdr_ver = atoi(optarg);
                        break;
                case 'e':
-                       custom_board.endian_swap = true;
+                       custom_board.flags = FLAG_LE_KERNEL_LA_EP;
                        break;
                case 'h':
                        usage(EXIT_SUCCESS);