diff options
author | Qianyu Gong | 2016-02-18 13:02:01 +0800 |
---|---|---|
committer | York Sun | 2016-02-24 08:51:13 -0800 |
commit | 6fc9535f397bace13324546f070e40979ac03d13 (patch) | |
tree | 527570b6fac3415cce4113c9779ebb59c4587786 /drivers/net/fm/fdt.c | |
parent | 075affb1ac0cc72e4d599df5f39bd40389312d6a (diff) |
driver/fm: fdt.c: fix fdt_fixup_fman_firmware() to support ARM platforms
Use fdt32_to_cpu() to convert the data correctly for both endianness
platforms.
Signed-off-by: Gong Qianyu <Qianyu.Gong@nxp.com>
Reviewed-by: York Sun <york.sun@nxp.com>
Diffstat (limited to 'drivers/net/fm/fdt.c')
-rw-r--r-- | drivers/net/fm/fdt.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/net/fm/fdt.c b/drivers/net/fm/fdt.c index 830d228dba1..9918d8089a1 100644 --- a/drivers/net/fm/fdt.c +++ b/drivers/net/fm/fdt.c @@ -45,7 +45,7 @@ void fdt_fixup_fman_firmware(void *blob) return; hdr = &fmanfw->header; - length = be32_to_cpu(hdr->length); + length = fdt32_to_cpu(hdr->length); /* Verify the firmware. */ if ((hdr->magic[0] != 'Q') || (hdr->magic[1] != 'E') || @@ -61,14 +61,16 @@ void fdt_fixup_fman_firmware(void *blob) } length -= sizeof(u32); /* Subtract the size of the CRC */ - crc = be32_to_cpu(*(u32 *)((void *)fmanfw + length)); + crc = fdt32_to_cpu(*(u32 *)((void *)fmanfw + length)); if (crc != crc32_no_comp(0, (void *)fmanfw, length)) { printf("Fman firmware at %p has invalid CRC\n", fmanfw); return; } + length += sizeof(u32); + /* Increase the size of the fdt to make room for the node. */ - rc = fdt_increase_size(blob, fmanfw->header.length); + rc = fdt_increase_size(blob, length); if (rc < 0) { printf("Unable to make room for Fman firmware: %s\n", fdt_strerror(rc)); @@ -101,8 +103,7 @@ void fdt_fixup_fman_firmware(void *blob) fdt_strerror(rc)); return; } - rc = fdt_setprop(blob, fwnode, "fsl,firmware", fmanfw, - fmanfw->header.length); + rc = fdt_setprop(blob, fwnode, "fsl,firmware", fmanfw, length); if (rc < 0) { char s[64]; fdt_get_path(blob, fwnode, s, sizeof(s)); |