diff mbox series

renesas: rcar: Apply ATF overlay for reserved-memory

Message ID 20230609151908.115920-1-detlev.casanova@collabora.com
State Accepted
Commit fd3e2b4de366a32cd342675bdcd43b72159913ee
Delegated to: Marek Vasut
Headers show
Series renesas: rcar: Apply ATF overlay for reserved-memory | expand

Commit Message

Detlev Casanova June 9, 2023, 3:19 p.m. UTC
The function fdtdec_board_setup() is called early and adds the overlay
from ATF to the u-boot device tree. That is necessary so that u-boot
doesn't use reserved memory.

Linux also needs to know about that reserved memory so the overlay from
ATF needs to be aplied on the linux device tree as well.

This commit makes sure that the ATF overlay is applied to both device trees.

Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com>
---
 board/renesas/rcar-common/common.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

Comments

Marek Vasut June 10, 2023, noon UTC | #1
On 6/9/23 17:19, Detlev Casanova wrote:
> The function fdtdec_board_setup() is called early and adds the overlay
> from ATF to the u-boot device tree. That is necessary so that u-boot
> doesn't use reserved memory.
> 
> Linux also needs to know about that reserved memory so the overlay from
> ATF needs to be aplied on the linux device tree as well.
> 
> This commit makes sure that the ATF overlay is applied to both device trees.
> 
> Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com>

Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Adam Ford June 10, 2023, 2:03 p.m. UTC | #2
On Fri, Jun 9, 2023 at 10:41 AM Detlev Casanova
<detlev.casanova@collabora.com> wrote:
>
> The function fdtdec_board_setup() is called early and adds the overlay
> from ATF to the u-boot device tree. That is necessary so that u-boot
> doesn't use reserved memory.
>
> Linux also needs to know about that reserved memory so the overlay from
> ATF needs to be aplied on the linux device tree as well.
>
> This commit makes sure that the ATF overlay is applied to both device trees.
>

Thanks for this.  I was trying to do this very same thing, but your
solution looks cleaner than mine.

Reviewed-by: Adam Ford <aford173@gmail.com>
> Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com>
> ---
>  board/renesas/rcar-common/common.c | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/board/renesas/rcar-common/common.c b/board/renesas/rcar-common/common.c
> index f38453af82c..f976c99028a 100644
> --- a/board/renesas/rcar-common/common.c
> +++ b/board/renesas/rcar-common/common.c
> @@ -25,12 +25,17 @@ extern u64 rcar_atf_boot_args[];
>
>  #define FDT_RPC_PATH   "/soc/spi@ee200000"
>
> -int fdtdec_board_setup(const void *fdt_blob)
> +static void apply_atf_overlay(void *fdt_blob)
>  {
>         void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]);
>
>         if (fdt_magic(atf_fdt_blob) == FDT_MAGIC)
> -               fdt_overlay_apply_node((void *)fdt_blob, 0, atf_fdt_blob, 0);
> +               fdt_overlay_apply_node(fdt_blob, 0, atf_fdt_blob, 0);
> +}
> +
> +int fdtdec_board_setup(const void *fdt_blob)
> +{
> +       apply_atf_overlay((void *)fdt_blob);
>
>         return 0;
>  }
> @@ -159,6 +164,7 @@ static void update_rpc_status(void *blob)
>
>  int ft_board_setup(void *blob, struct bd_info *bd)
>  {
> +       apply_atf_overlay(blob);
>         scrub_duplicate_memory(blob);
>         update_rpc_status(blob);
>
> --
> 2.39.3
>
diff mbox series

Patch

diff --git a/board/renesas/rcar-common/common.c b/board/renesas/rcar-common/common.c
index f38453af82c..f976c99028a 100644
--- a/board/renesas/rcar-common/common.c
+++ b/board/renesas/rcar-common/common.c
@@ -25,12 +25,17 @@  extern u64 rcar_atf_boot_args[];
 
 #define FDT_RPC_PATH	"/soc/spi@ee200000"
 
-int fdtdec_board_setup(const void *fdt_blob)
+static void apply_atf_overlay(void *fdt_blob)
 {
 	void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]);
 
 	if (fdt_magic(atf_fdt_blob) == FDT_MAGIC)
-		fdt_overlay_apply_node((void *)fdt_blob, 0, atf_fdt_blob, 0);
+		fdt_overlay_apply_node(fdt_blob, 0, atf_fdt_blob, 0);
+}
+
+int fdtdec_board_setup(const void *fdt_blob)
+{
+	apply_atf_overlay((void *)fdt_blob);
 
 	return 0;
 }
@@ -159,6 +164,7 @@  static void update_rpc_status(void *blob)
 
 int ft_board_setup(void *blob, struct bd_info *bd)
 {
+	apply_atf_overlay(blob);
 	scrub_duplicate_memory(blob);
 	update_rpc_status(blob);