From patchwork Sat Apr 11 20:01:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 237681 List-Id: U-Boot discussion From: marek.vasut at gmail.com (Marek Vasut) Date: Sat, 11 Apr 2020 22:01:15 +0200 Subject: [PATCH 1/5] libfdt: Export overlay_apply_node() as fdt_overlay_apply_node() Message-ID: <20200411200119.309400-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. Signed-off-by: Marek Vasut Cc: Nobuhiro Iwamatsu Cc: Simon Glass Cc: Tom Rini Reviewed-by: Simon Glass --- 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 Sat Apr 11 20:01:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 237680 List-Id: U-Boot discussion From: marek.vasut at gmail.com (Marek Vasut) Date: Sat, 11 Apr 2020 22:01:16 +0200 Subject: [PATCH 2/5] fdtdec: Add weak function to patch U-Boot DT right after fdtdec_setup() In-Reply-To: <20200411200119.309400-1-marek.vasut+renesas@gmail.com> References: <20200411200119.309400-1-marek.vasut+renesas@gmail.com> Message-ID: <20200411200119.309400-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 --- lib/fdtdec.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/fdtdec.c b/lib/fdtdec.c index eb11fc898e..3fc28e86bc 100644 --- a/lib/fdtdec.c +++ b/lib/fdtdec.c @@ -1466,8 +1466,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; @@ -1520,7 +1526,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 Sat Apr 11 20:01:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 237683 List-Id: U-Boot discussion From: marek.vasut at gmail.com (Marek Vasut) Date: Sat, 11 Apr 2020 22:01:17 +0200 Subject: [PATCH 3/5] ARM: dts: rmobile: Reserve space in R-Car Gen3 DTs In-Reply-To: <20200411200119.309400-1-marek.vasut+renesas@gmail.com> References: <20200411200119.309400-1-marek.vasut+renesas@gmail.com> Message-ID: <20200411200119.309400-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. Signed-off-by: Marek Vasut Cc: Nobuhiro Iwamatsu Cc: Simon Glass Cc: Tom Rini Reviewed-by: Simon Glass --- arch/arm/dts/Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index 1ce44204ec..b9aa44b5d8 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -749,6 +749,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 Sat Apr 11 20:01:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 237684 List-Id: U-Boot discussion From: marek.vasut at gmail.com (Marek Vasut) Date: Sat, 11 Apr 2020 22:01:18 +0200 Subject: [PATCH 4/5] ARM: rmobile: Merge prior-stage firmware DT fragment into U-Boot DT on Gen3 In-Reply-To: <20200411200119.309400-1-marek.vasut+renesas@gmail.com> References: <20200411200119.309400-1-marek.vasut+renesas@gmail.com> Message-ID: <20200411200119.309400-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. Signed-off-by: Marek Vasut Cc: Nobuhiro Iwamatsu Cc: Simon Glass Cc: Tom Rini Reviewed-by: Simon Glass --- 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 Sat Apr 11 20:01:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 237682 List-Id: U-Boot discussion From: marek.vasut at gmail.com (Marek Vasut) Date: Sat, 11 Apr 2020 22:01:19 +0200 Subject: [PATCH 5/5] ARM: rmobile: Enable support for OpTee on Gen3 In-Reply-To: <20200411200119.309400-1-marek.vasut+renesas@gmail.com> References: <20200411200119.309400-1-marek.vasut+renesas@gmail.com> Message-ID: <20200411200119.309400-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. Signed-off-by: Marek Vasut Cc: Nobuhiro Iwamatsu Cc: Simon Glass Cc: Tom Rini --- 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 2658ae8f69..22490c82ef 100644 --- a/configs/r8a77970_eagle_defconfig +++ b/configs/r8a77970_eagle_defconfig @@ -56,6 +56,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 bf2e65aba8..5811343923 100644 --- a/configs/r8a77980_condor_defconfig +++ b/configs/r8a77980_condor_defconfig @@ -60,6 +60,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 621849f0f7..3607802154 100644 --- a/configs/r8a77990_ebisu_defconfig +++ b/configs/r8a77990_ebisu_defconfig @@ -54,6 +54,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 fbbef30666..c66db6741b 100644 --- a/configs/r8a77995_draak_defconfig +++ b/configs/r8a77995_draak_defconfig @@ -62,6 +62,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 036d458ae2..f57d0fd04e 100644 --- a/configs/rcar3_salvator-x_defconfig +++ b/configs/rcar3_salvator-x_defconfig @@ -60,6 +60,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 fdedba52ce..2392a5ff1b 100644 --- a/configs/rcar3_ulcb_defconfig +++ b/configs/rcar3_ulcb_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_SYSRESET=y CONFIG_USB=y CONFIG_DM_USB=y