summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorQianyu Gong <qianyu.gong@nxp.com>2016-02-18 13:02:01 +0800
committerYork Sun <york.sun@nxp.com>2016-02-24 08:51:13 -0800
commit6fc9535f397bace13324546f070e40979ac03d13 (patch)
tree527570b6fac3415cce4113c9779ebb59c4587786 /drivers
parent075affb1ac0cc72e4d599df5f39bd40389312d6a (diff)
downloadu-boot-imx-6fc9535f397bace13324546f070e40979ac03d13.zip
u-boot-imx-6fc9535f397bace13324546f070e40979ac03d13.tar.gz
u-boot-imx-6fc9535f397bace13324546f070e40979ac03d13.tar.bz2
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')
-rw-r--r--drivers/net/fm/fdt.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/net/fm/fdt.c b/drivers/net/fm/fdt.c
index 830d228..9918d80 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));