diff options
author | Rafał Miłecki <rafal@milecki.pl> | 2017-07-23 22:19:19 +0200 |
---|---|---|
committer | Rafał Miłecki <rafal@milecki.pl> | 2017-07-31 11:43:41 +0200 |
commit | d181cbbfb078cfb2db3b00091dbfc4de357ce4f3 (patch) | |
tree | f48d2b7e7ab5687602d7193c08f818609caa7228 | |
parent | a6f6f8df23a06739d062ff4cf3e996b2aea200ae (diff) | |
download | mtk-20170518-d181cbbfb078cfb2db3b00091dbfc4de357ce4f3.zip mtk-20170518-d181cbbfb078cfb2db3b00091dbfc4de357ce4f3.tar.gz mtk-20170518-d181cbbfb078cfb2db3b00091dbfc4de357ce4f3.tar.bz2 |
firmware-utils: mktplinkfw2: replace "endian_swap" field with "flags"
This will allow adding more similar tricks needed by other hardware.
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
-rw-r--r-- | tools/firmware-utils/src/mktplinkfw2.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/tools/firmware-utils/src/mktplinkfw2.c b/tools/firmware-utils/src/mktplinkfw2.c index 0b7a15c..9052205 100644 --- a/tools/firmware-utils/src/mktplinkfw2.c +++ b/tools/firmware-utils/src/mktplinkfw2.c @@ -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); |