mtd: allow writing Seama files to "firmware" on Broadcom targets

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 48534
lede-17.01
Rafał Miłecki 2016-01-28 22:38:30 +00:00
parent 92443f7041
commit b4468a0d61
1 changed files with 6 additions and 0 deletions

View File

@ -44,6 +44,8 @@ struct trx_header {
uint32_t offsets[3]; /* Offsets of partitions from start of header */ uint32_t offsets[3]; /* Offsets of partitions from start of header */
}; };
#define SEAMA_MAGIC 0x17a4a35e
#if __BYTE_ORDER == __BIG_ENDIAN #if __BYTE_ORDER == __BIG_ENDIAN
#define STORE32_LE(X) ((((X) & 0x000000FF) << 24) | (((X) & 0x0000FF00) << 8) | (((X) & 0x00FF0000) >> 8) | (((X) & 0xFF000000) >> 24)) #define STORE32_LE(X) ((((X) & 0x000000FF) << 24) | (((X) & 0x0000FF00) << 8) | (((X) & 0x00FF0000) >> 8) | (((X) & 0xFF000000) >> 24))
#elif __BYTE_ORDER == __LITTLE_ENDIAN #elif __BYTE_ORDER == __LITTLE_ENDIAN
@ -118,6 +120,10 @@ trx_check(int imagefd, const char *mtd, char *buf, int *len)
return 0; return 0;
} }
/* Allow writing Seama files to firmware without an extra validation */
if (trx->magic == SEAMA_MAGIC)
return 1;
if (trx->magic != TRX_MAGIC || trx->len < sizeof(struct trx_header)) { if (trx->magic != TRX_MAGIC || trx->len < sizeof(struct trx_header)) {
if (quiet < 2) { if (quiet < 2) {
fprintf(stderr, "Bad trx header\n"); fprintf(stderr, "Bad trx header\n");