From patchwork Tue May 19 12:39:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 245999 List-Id: U-Boot discussion From: marek.vasut at gmail.com (Marek Vasut) Date: Tue, 19 May 2020 14:39:23 +0200 Subject: [PATCH V2 1/5] libfdt: Export overlay_apply_node() as fdt_overlay_apply_node() Message-ID: <20200519123927.13876-1-marek.vasut+renesas@gmail.com> This function is useful to merge a subset of DT into another DT, for example if some prior-stage firmware passes a DT fragment to U-Boot and U-Boot needs to merge it into its own DT. Export this function to permit implementing such functionality. Reviewed-by: Simon Glass Signed-off-by: Marek Vasut Cc: Nobuhiro Iwamatsu Cc: Simon Glass Cc: Tom Rini --- MR: https://github.com/dgibson/dtc/pull/35 V2: No change --- scripts/dtc/libfdt/fdt_overlay.c | 5 +++++ scripts/dtc/libfdt/libfdt.h | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/scripts/dtc/libfdt/fdt_overlay.c b/scripts/dtc/libfdt/fdt_overlay.c index be71873366..c090e6991e 100644 --- a/scripts/dtc/libfdt/fdt_overlay.c +++ b/scripts/dtc/libfdt/fdt_overlay.c @@ -879,3 +879,8 @@ err: return ret; } + +int fdt_overlay_apply_node(void *fdt, int target, void *fdto, int node) +{ + return overlay_apply_node(fdt, target, fdto, node); +} diff --git a/scripts/dtc/libfdt/libfdt.h b/scripts/dtc/libfdt/libfdt.h index fa63fffe28..421f90ad93 100644 --- a/scripts/dtc/libfdt/libfdt.h +++ b/scripts/dtc/libfdt/libfdt.h @@ -2032,6 +2032,13 @@ int fdt_del_node(void *fdt, int nodeoffset); */ int fdt_overlay_apply(void *fdt, void *fdto); +/** + * fdt_overlay_apply_node - Merges a node into the base device tree + * + * See overlay_apply_node() for details. + */ +int fdt_overlay_apply_node(void *fdt, int target, void *fdto, int node); + /**********************************************************************/ /* Debugging / informational functions */ /**********************************************************************/ From patchwork Tue May 19 12:39:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 245995 List-Id: U-Boot discussion From: marek.vasut at gmail.com (Marek Vasut) Date: Tue, 19 May 2020 14:39:24 +0200 Subject: [PATCH V2 2/5] fdtdec: Add weak function to patch U-Boot DT right after fdtdec_setup() In-Reply-To: <20200519123927.13876-1-marek.vasut+renesas@gmail.com> References: <20200519123927.13876-1-marek.vasut+renesas@gmail.com> Message-ID: <20200519123927.13876-2-marek.vasut+renesas@gmail.com> Add weak function which is called right after fdtdec_setup() configured the U-Boot DT. This permits board-specific adjustments to the U-Boot DT before U-Boot starts parsing the DT. This could be used e.g. to patch in various custom nodes or merge in DT fragments from prior-stage firmware. Signed-off-by: Marek Vasut Cc: Nobuhiro Iwamatsu Cc: Simon Glass Cc: Tom Rini --- V2: Add the function to fdtdec.h --- include/fdtdec.h | 5 +++++ lib/fdtdec.c | 11 ++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/include/fdtdec.h b/include/fdtdec.h index 166f29c55b..abd6d42671 100644 --- a/include/fdtdec.h +++ b/include/fdtdec.h @@ -1155,6 +1155,11 @@ int fdtdec_set_carveout(void *blob, const char *node, const char *prop_name, */ int fdtdec_setup(void); +/** + * Perform board-specific early DT adjustments + */ +int fdtdec_board_setup(const void *fdt_blob); + #if CONFIG_IS_ENABLED(MULTI_DTB_FIT) /** * fdtdec_resetup() - Set up the device tree again diff --git a/lib/fdtdec.c b/lib/fdtdec.c index 0a3b860782..f366dcedb8 100644 --- a/lib/fdtdec.c +++ b/lib/fdtdec.c @@ -1472,8 +1472,14 @@ int fdtdec_set_carveout(void *blob, const char *node, const char *prop_name, return 0; } +__weak int fdtdec_board_setup(const void *fdt_blob) +{ + return 0; +} + int fdtdec_setup(void) { + int ret; #if CONFIG_IS_ENABLED(OF_CONTROL) # if CONFIG_IS_ENABLED(MULTI_DTB_FIT) void *fdt_blob; @@ -1526,7 +1532,10 @@ int fdtdec_setup(void) # endif #endif - return fdtdec_prepare_fdt(); + ret = fdtdec_prepare_fdt(); + if (!ret) + ret = fdtdec_board_setup(gd->fdt_blob); + return ret; } #if CONFIG_IS_ENABLED(MULTI_DTB_FIT) From patchwork Tue May 19 12:39:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 245996 List-Id: U-Boot discussion From: marek.vasut at gmail.com (Marek Vasut) Date: Tue, 19 May 2020 14:39:25 +0200 Subject: [PATCH V2 3/5] ARM: dts: rmobile: Reserve space in R-Car Gen3 DTs In-Reply-To: <20200519123927.13876-1-marek.vasut+renesas@gmail.com> References: <20200519123927.13876-1-marek.vasut+renesas@gmail.com> Message-ID: <20200519123927.13876-3-marek.vasut+renesas@gmail.com> Reserve 4 kiB of space in R-Car Gen3 DTs when those DTs are compiled to permit patching in OpTee-OS /firmware node, /reserved-memory node and possibly also additional /memory@ nodes. Reviewed-by: Simon Glass Signed-off-by: Marek Vasut Cc: Nobuhiro Iwamatsu Cc: Simon Glass Cc: Tom Rini --- V2: No change --- arch/arm/dts/Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index ca663a86f2..480ef4c4b2 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -766,6 +766,10 @@ dtb-$(CONFIG_RCAR_GEN3) += \ r8a77990-ebisu-u-boot.dtb \ r8a77995-draak-u-boot.dtb +ifdef CONFIG_RCAR_GEN3 +DTC_FLAGS += -R 4 -p 0x1000 +endif + dtb-$(CONFIG_RZA1) += \ r7s72100-gr-peach-u-boot.dtb From patchwork Tue May 19 12:39:26 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 245998 List-Id: U-Boot discussion From: marek.vasut at gmail.com (Marek Vasut) Date: Tue, 19 May 2020 14:39:26 +0200 Subject: [PATCH V2 4/5] ARM: rmobile: Merge prior-stage firmware DT fragment into U-Boot DT on Gen3 In-Reply-To: <20200519123927.13876-1-marek.vasut+renesas@gmail.com> References: <20200519123927.13876-1-marek.vasut+renesas@gmail.com> Message-ID: <20200519123927.13876-4-marek.vasut+renesas@gmail.com> The prior-stage firmware generates DT fragment containing the /firmware node, /reserved-memory node and /memory@ nodes. Merge these nodes into the U-Boot DT, so U-Boot can use this information. Reviewed-by: Simon Glass Signed-off-by: Marek Vasut Cc: Nobuhiro Iwamatsu Cc: Simon Glass Cc: Tom Rini --- V2: No change --- board/renesas/rcar-common/common.c | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/board/renesas/rcar-common/common.c b/board/renesas/rcar-common/common.c index 37f8a46d7e..9113ff19ea 100644 --- a/board/renesas/rcar-common/common.c +++ b/board/renesas/rcar-common/common.c @@ -19,32 +19,24 @@ DECLARE_GLOBAL_DATA_PTR; /* If the firmware passed a device tree use it for U-Boot DRAM setup. */ extern u64 rcar_atf_boot_args[]; -int dram_init(void) +int fdtdec_board_setup(const void *fdt_blob) { - const void *atf_fdt_blob = (const void *)(rcar_atf_boot_args[1]); - const void *blob; + void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]); - /* Check if ATF passed us DTB. If not, fall back to builtin DTB. */ if (fdt_magic(atf_fdt_blob) == FDT_MAGIC) - blob = atf_fdt_blob; - else - blob = gd->fdt_blob; + fdt_overlay_apply_node((void *)fdt_blob, 0, atf_fdt_blob, 0); - return fdtdec_setup_mem_size_base_fdt(blob); + return 0; } -int dram_init_banksize(void) +int dram_init(void) { - const void *atf_fdt_blob = (const void *)(rcar_atf_boot_args[1]); - const void *blob; - - /* Check if ATF passed us DTB. If not, fall back to builtin DTB. */ - if (fdt_magic(atf_fdt_blob) == FDT_MAGIC) - blob = atf_fdt_blob; - else - blob = gd->fdt_blob; + return fdtdec_setup_mem_size_base_fdt(gd->fdt_blob); +} - fdtdec_setup_memory_banksize_fdt(blob); +int dram_init_banksize(void) +{ + fdtdec_setup_memory_banksize_fdt(gd->fdt_blob); return 0; } From patchwork Tue May 19 12:39:27 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 245997 List-Id: U-Boot discussion From: marek.vasut at gmail.com (Marek Vasut) Date: Tue, 19 May 2020 14:39:27 +0200 Subject: [PATCH V2 5/5] ARM: rmobile: Enable support for OpTee on Gen3 In-Reply-To: <20200519123927.13876-1-marek.vasut+renesas@gmail.com> References: <20200519123927.13876-1-marek.vasut+renesas@gmail.com> Message-ID: <20200519123927.13876-5-marek.vasut+renesas@gmail.com> Enable OpTee support on R-Car Gen3, so that U-Boot would copy the OpTee /firmware and /reserved-memory nodes into the Linux DT. Reviewed-by: Simon Glass Signed-off-by: Marek Vasut Cc: Nobuhiro Iwamatsu Cc: Simon Glass Cc: Tom Rini --- V2: No change --- configs/r8a77970_eagle_defconfig | 2 ++ configs/r8a77980_condor_defconfig | 2 ++ configs/r8a77990_ebisu_defconfig | 2 ++ configs/r8a77995_draak_defconfig | 2 ++ configs/rcar3_salvator-x_defconfig | 2 ++ configs/rcar3_ulcb_defconfig | 2 ++ 6 files changed, 12 insertions(+) diff --git a/configs/r8a77970_eagle_defconfig b/configs/r8a77970_eagle_defconfig index 78bfb9a032..2a53f16ee9 100644 --- a/configs/r8a77970_eagle_defconfig +++ b/configs/r8a77970_eagle_defconfig @@ -57,6 +57,8 @@ CONFIG_DM_REGULATOR=y CONFIG_DM_REGULATOR_FIXED=y CONFIG_DM_REGULATOR_GPIO=y CONFIG_SCIF_CONSOLE=y +CONFIG_TEE=y +CONFIG_OPTEE=y CONFIG_SPI=y CONFIG_DM_SPI=y CONFIG_RENESAS_RPC_SPI=y diff --git a/configs/r8a77980_condor_defconfig b/configs/r8a77980_condor_defconfig index 83d6a75670..d9272b85c4 100644 --- a/configs/r8a77980_condor_defconfig +++ b/configs/r8a77980_condor_defconfig @@ -61,6 +61,8 @@ CONFIG_DM_REGULATOR=y CONFIG_DM_REGULATOR_FIXED=y CONFIG_DM_REGULATOR_GPIO=y CONFIG_SCIF_CONSOLE=y +CONFIG_TEE=y +CONFIG_OPTEE=y CONFIG_SPI=y CONFIG_DM_SPI=y CONFIG_RENESAS_RPC_SPI=y diff --git a/configs/r8a77990_ebisu_defconfig b/configs/r8a77990_ebisu_defconfig index cc9257b81b..e4a017aa23 100644 --- a/configs/r8a77990_ebisu_defconfig +++ b/configs/r8a77990_ebisu_defconfig @@ -55,6 +55,8 @@ CONFIG_DM_REGULATOR=y CONFIG_DM_REGULATOR_FIXED=y CONFIG_DM_REGULATOR_GPIO=y CONFIG_SCIF_CONSOLE=y +CONFIG_TEE=y +CONFIG_OPTEE=y CONFIG_USB=y CONFIG_DM_USB=y CONFIG_USB_XHCI_HCD=y diff --git a/configs/r8a77995_draak_defconfig b/configs/r8a77995_draak_defconfig index 89b0f15c76..b2dc167b9f 100644 --- a/configs/r8a77995_draak_defconfig +++ b/configs/r8a77995_draak_defconfig @@ -63,6 +63,8 @@ CONFIG_DM_REGULATOR=y CONFIG_DM_REGULATOR_FIXED=y CONFIG_DM_REGULATOR_GPIO=y CONFIG_SCIF_CONSOLE=y +CONFIG_TEE=y +CONFIG_OPTEE=y CONFIG_USB=y CONFIG_DM_USB=y CONFIG_USB_XHCI_HCD=y diff --git a/configs/rcar3_salvator-x_defconfig b/configs/rcar3_salvator-x_defconfig index 3031fdde2d..6944edcd01 100644 --- a/configs/rcar3_salvator-x_defconfig +++ b/configs/rcar3_salvator-x_defconfig @@ -61,6 +61,8 @@ CONFIG_DM_REGULATOR=y CONFIG_DM_REGULATOR_FIXED=y CONFIG_DM_REGULATOR_GPIO=y CONFIG_SCIF_CONSOLE=y +CONFIG_TEE=y +CONFIG_OPTEE=y CONFIG_USB=y CONFIG_DM_USB=y CONFIG_USB_XHCI_HCD=y diff --git a/configs/rcar3_ulcb_defconfig b/configs/rcar3_ulcb_defconfig index 53ea93801b..4be3e0b345 100644 --- a/configs/rcar3_ulcb_defconfig +++ b/configs/rcar3_ulcb_defconfig @@ -58,6 +58,8 @@ CONFIG_DM_REGULATOR=y CONFIG_DM_REGULATOR_FIXED=y CONFIG_DM_REGULATOR_GPIO=y CONFIG_SCIF_CONSOLE=y +CONFIG_TEE=y +CONFIG_OPTEE=y CONFIG_SYSRESET=y CONFIG_USB=y CONFIG_DM_USB=y