[LEDE-DEV] [PATCH 1/3] firmware-utils: mktplinkfw2: replace "endian_swap" field with "flags"

Rafał Miłecki zajec5 at gmail.com
Sun Jul 23 13:19:19 PDT 2017


From: Rafał Miłecki <rafal at milecki.pl>

This will allow adding more similar tricks needed by other hardware.

Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
---
 tools/firmware-utils/src/mktplinkfw2.c | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/tools/firmware-utils/src/mktplinkfw2.c b/tools/firmware-utils/src/mktplinkfw2.c
index 0b7a15c996..905220538b 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);
-- 
2.11.0




More information about the Lede-dev mailing list