summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2019-12-18 14:55:15 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2019-12-19 05:48:39 +0100
commit31f57b56dff660fdf05dfec07c0886352373b391 (patch)
tree3238fe8f2f4657de7fa94c84d0cf69aaa07082b7
parent86d711f394f0449f4420819d7df000fd5f2f769b (diff)
downloadbarebox-31f57b56dff660fdf05dfec07c0886352373b391.tar.gz
barebox-31f57b56dff660fdf05dfec07c0886352373b391.tar.xz
ARM: rpi: Do not warn when firmware doesn't pass a dtb
When there is no dtb placed in the boot partition then none is passed by the firmware to barebox. This may be intended, so do not warn about it. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--arch/arm/boards/raspberry-pi/lowlevel.c9
-rw-r--r--arch/arm/boards/raspberry-pi/rpi-common.c11
2 files changed, 15 insertions, 5 deletions
diff --git a/arch/arm/boards/raspberry-pi/lowlevel.c b/arch/arm/boards/raspberry-pi/lowlevel.c
index 70f1936522..d58beb6052 100644
--- a/arch/arm/boards/raspberry-pi/lowlevel.c
+++ b/arch/arm/boards/raspberry-pi/lowlevel.c
@@ -11,8 +11,15 @@ static void copy_vc_fdt(void *dest, void *src, unsigned long max_size)
{
struct fdt_header *oftree_src = src;
struct fdt_header *oftree_dest = dest;
+ unsigned long size;
- unsigned long size = be32_to_cpu(oftree_src->totalsize);
+ if (!src) {
+ oftree_dest->magic = cpu_to_be32(VIDEOCORE_FDT_ERROR);
+ oftree_dest->totalsize = cpu_to_be32(0);
+ return;
+ }
+
+ size = be32_to_cpu(oftree_src->totalsize);
if (size > max_size) {
oftree_dest->magic = cpu_to_be32(VIDEOCORE_FDT_ERROR);
/* Save an error code after the magic value for easier
diff --git a/arch/arm/boards/raspberry-pi/rpi-common.c b/arch/arm/boards/raspberry-pi/rpi-common.c
index dd6bbd5bdd..acb26f6a64 100644
--- a/arch/arm/boards/raspberry-pi/rpi-common.c
+++ b/arch/arm/boards/raspberry-pi/rpi-common.c
@@ -433,13 +433,16 @@ static void rpi_vc_fdt(void)
oftree = saved_vc_fdt;
magic = be32_to_cpu(oftree->magic);
- if (magic != FDT_MAGIC) {
- pr_err("videocore fdt saved in pbl has invalid magic\n");
- if (magic == VIDEOCORE_FDT_ERROR) {
+ if (magic == VIDEOCORE_FDT_ERROR) {
+ if (oftree->totalsize)
pr_err("there was an error copying fdt in pbl: %d\n",
be32_to_cpu(oftree->totalsize));
- }
+ return;
+ }
+
+ if (magic != FDT_MAGIC) {
+ pr_err("videocore fdt saved in pbl has invalid magic\n");
return;
}