firmware-utils: remove v2 support
we will use gabors patch instead Signed-off-by: John Crispin <blogic@openwrt.org> SVN-Revision: 37725
This commit is contained in:
parent
815d9334e2
commit
1af56d7c46
@ -30,7 +30,6 @@
|
|||||||
#define ALIGN(x,a) ({ typeof(a) __a = (a); (((x) + __a - 1) & ~(__a - 1)); })
|
#define ALIGN(x,a) ({ typeof(a) __a = (a); (((x) + __a - 1) & ~(__a - 1)); })
|
||||||
|
|
||||||
#define HEADER_VERSION_V1 0x01000000
|
#define HEADER_VERSION_V1 0x01000000
|
||||||
#define HEADER_VERSION_V2 0x02000000
|
|
||||||
#define HWID_TL_MR10U_V1 0x00100101
|
#define HWID_TL_MR10U_V1 0x00100101
|
||||||
#define HWID_TL_MR3020_V1 0x30200001
|
#define HWID_TL_MR3020_V1 0x30200001
|
||||||
#define HWID_TL_MR3220_V1 0x32200001
|
#define HWID_TL_MR3220_V1 0x32200001
|
||||||
@ -62,7 +61,6 @@
|
|||||||
#define HWID_TL_WR1043ND_V1 0x10430001
|
#define HWID_TL_WR1043ND_V1 0x10430001
|
||||||
#define HWID_TL_WR1041N_V2 0x10410002
|
#define HWID_TL_WR1041N_V2 0x10410002
|
||||||
#define HWID_TL_WR2543N_V1 0x25430001
|
#define HWID_TL_WR2543N_V1 0x25430001
|
||||||
#define HWID_TD_W8970_V1 0x89700001
|
|
||||||
|
|
||||||
#define MD5SUM_LEN 16
|
#define MD5SUM_LEN 16
|
||||||
|
|
||||||
@ -97,31 +95,6 @@ struct fw_header {
|
|||||||
uint8_t pad[354];
|
uint8_t pad[354];
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
struct fw_header_v2 {
|
|
||||||
uint32_t version; /* header version */
|
|
||||||
char fw_version[48];
|
|
||||||
uint32_t hw_id; /* hardware id */
|
|
||||||
uint32_t hw_rev; /* hardware revision */
|
|
||||||
uint32_t unk1;
|
|
||||||
uint8_t md5sum1[MD5SUM_LEN];
|
|
||||||
uint32_t unk2;
|
|
||||||
uint8_t md5sum2[MD5SUM_LEN];
|
|
||||||
uint32_t unk3;
|
|
||||||
uint32_t kernel_la; /* kernel load address */
|
|
||||||
uint32_t kernel_ep; /* kernel entry point */
|
|
||||||
uint32_t fw_length; /* total length of the firmware */
|
|
||||||
uint32_t kernel_ofs; /* kernel data offset */
|
|
||||||
uint32_t kernel_len; /* kernel data length */
|
|
||||||
uint32_t rootfs_ofs; /* rootfs data offset */
|
|
||||||
uint32_t rootfs_len; /* rootfs data length */
|
|
||||||
uint32_t boot_ofs; /* bootloader data offset */
|
|
||||||
uint32_t boot_len; /* bootloader data length */
|
|
||||||
uint16_t ver_hi;
|
|
||||||
uint16_t ver_mid;
|
|
||||||
uint16_t ver_lo;
|
|
||||||
uint8_t pad[366];
|
|
||||||
} __attribute__ ((packed));
|
|
||||||
|
|
||||||
struct flash_layout {
|
struct flash_layout {
|
||||||
char *id;
|
char *id;
|
||||||
uint32_t fw_max_len;
|
uint32_t fw_max_len;
|
||||||
@ -135,7 +108,6 @@ struct board_info {
|
|||||||
uint32_t hw_id;
|
uint32_t hw_id;
|
||||||
uint32_t hw_rev;
|
uint32_t hw_rev;
|
||||||
char *layout_id;
|
char *layout_id;
|
||||||
uint32_t hdr_version
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -209,12 +181,6 @@ static struct flash_layout layouts[] = {
|
|||||||
.kernel_la = 0x80060000,
|
.kernel_la = 0x80060000,
|
||||||
.kernel_ep = 0x80060000,
|
.kernel_ep = 0x80060000,
|
||||||
.rootfs_ofs = 0x100000,
|
.rootfs_ofs = 0x100000,
|
||||||
}, {
|
|
||||||
.id = "8Mltq",
|
|
||||||
.fw_max_len = 0x7a0000,
|
|
||||||
.kernel_la = 0x80002000,
|
|
||||||
.kernel_ep = 0x80002000,
|
|
||||||
.rootfs_ofs = 0x140000,
|
|
||||||
}, {
|
}, {
|
||||||
.id = "16Mppc",
|
.id = "16Mppc",
|
||||||
.fw_max_len = 0xf80000,
|
.fw_max_len = 0xf80000,
|
||||||
@ -382,12 +348,6 @@ static struct board_info boards[] = {
|
|||||||
.hw_id = HWID_TL_WR720N_V3,
|
.hw_id = HWID_TL_WR720N_V3,
|
||||||
.hw_rev = 1,
|
.hw_rev = 1,
|
||||||
.layout_id = "4Mlzma",
|
.layout_id = "4Mlzma",
|
||||||
}, {
|
|
||||||
.id = "TD-W8970v1",
|
|
||||||
.hw_id = HWID_TD_W8970_V1,
|
|
||||||
.hw_rev = 1,
|
|
||||||
.layout_id = "8Mltq",
|
|
||||||
.hdr_version = HEADER_VERSION_V2
|
|
||||||
}, {
|
}, {
|
||||||
/* terminating entry */
|
/* terminating entry */
|
||||||
}
|
}
|
||||||
@ -703,40 +663,6 @@ static void fill_header(char *buf, int len)
|
|||||||
get_md5(buf, len, hdr->md5sum1);
|
get_md5(buf, len, hdr->md5sum1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void fill_header_v2(char *buf, int len)
|
|
||||||
{
|
|
||||||
struct fw_header_v2 *hdr = (struct fw_header_v2 *)buf;
|
|
||||||
|
|
||||||
memset(hdr, 0, sizeof(struct fw_header_v2));
|
|
||||||
|
|
||||||
hdr->version = htonl(HEADER_VERSION_V2);
|
|
||||||
memset(hdr->fw_version, 0xff, sizeof(hdr->fw_version));
|
|
||||||
strncpy(hdr->fw_version, version, strlen(version));
|
|
||||||
hdr->hw_id = htonl(hw_id);
|
|
||||||
hdr->hw_rev = htonl(hw_rev);
|
|
||||||
|
|
||||||
if (boot_info.file_size == 0)
|
|
||||||
memcpy(hdr->md5sum1, md5salt_normal, sizeof(hdr->md5sum1));
|
|
||||||
else
|
|
||||||
memcpy(hdr->md5sum1, md5salt_boot, sizeof(hdr->md5sum1));
|
|
||||||
|
|
||||||
hdr->kernel_la = htonl(kernel_la);
|
|
||||||
hdr->kernel_ep = htonl(kernel_ep);
|
|
||||||
hdr->fw_length = htonl(layout->fw_max_len);
|
|
||||||
hdr->kernel_ofs = htonl(sizeof(struct fw_header_v2));
|
|
||||||
hdr->kernel_len = htonl(kernel_len);
|
|
||||||
if (!combined) {
|
|
||||||
hdr->rootfs_ofs = htonl(rootfs_ofs);
|
|
||||||
hdr->rootfs_len = htonl(rootfs_info.file_size);
|
|
||||||
}
|
|
||||||
|
|
||||||
hdr->ver_hi = htons(fw_ver_hi);
|
|
||||||
hdr->ver_mid = htons(fw_ver_mid);
|
|
||||||
hdr->ver_lo = htons(fw_ver_lo);
|
|
||||||
|
|
||||||
get_md5(buf, len, hdr->md5sum1);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int pad_jffs2(char *buf, int currlen)
|
static int pad_jffs2(char *buf, int currlen)
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
@ -810,11 +736,6 @@ static int build_fw(void)
|
|||||||
char *p;
|
char *p;
|
||||||
int ret = EXIT_FAILURE;
|
int ret = EXIT_FAILURE;
|
||||||
int writelen = 0;
|
int writelen = 0;
|
||||||
int hdr_len;
|
|
||||||
if (board && board->hdr_version == HEADER_VERSION_V2)
|
|
||||||
hdr_len = sizeof(struct fw_header_v2);
|
|
||||||
else
|
|
||||||
hdr_len = sizeof(struct fw_header);
|
|
||||||
|
|
||||||
buflen = layout->fw_max_len;
|
buflen = layout->fw_max_len;
|
||||||
|
|
||||||
@ -825,12 +746,12 @@ static int build_fw(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
memset(buf, 0xff, buflen);
|
memset(buf, 0xff, buflen);
|
||||||
p = buf + hdr_len;
|
p = buf + sizeof(struct fw_header);
|
||||||
ret = read_to_buf(&kernel_info, p);
|
ret = read_to_buf(&kernel_info, p);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto out_free_buf;
|
goto out_free_buf;
|
||||||
|
|
||||||
writelen = hdr_len + kernel_len;
|
writelen = sizeof(struct fw_header) + kernel_len;
|
||||||
|
|
||||||
if (!combined) {
|
if (!combined) {
|
||||||
if (rootfs_align)
|
if (rootfs_align)
|
||||||
@ -854,9 +775,6 @@ static int build_fw(void)
|
|||||||
if (!strip_padding)
|
if (!strip_padding)
|
||||||
writelen = buflen;
|
writelen = buflen;
|
||||||
|
|
||||||
if (board && board->hdr_version == HEADER_VERSION_V2)
|
|
||||||
fill_header_v2(buf, writelen);
|
|
||||||
else
|
|
||||||
fill_header(buf, writelen);
|
fill_header(buf, writelen);
|
||||||
ret = write_fw(buf, writelen);
|
ret = write_fw(buf, writelen);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user