From 5f512a25a92a42a91470c3720e3048f1aa240263 Mon Sep 17 00:00:00 2001 From: Detlev Casanova <detlev.casanova@collabora.com> Date: Thu, 23 Mar 2023 14:01:27 -0400 Subject: [PATCH] d/patches: Add mandatory fields in reserved-memory node On the R-Car Gen3 boards, u-boot will apply this reserved-memory node directly on the Linux device-tree. The linux kernel requires that the ranges, #address-cells and #size-cells values must be set in the reserved-memory node. Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com> Change-Id: I7d7f048195b5499940e386f4744157f74b0df9f9 --- ...datory-fields-in-reserved-memory-nod.patch | 115 ++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 116 insertions(+) create mode 100644 debian/patches/apertis/0002-fix-rcar-add-mandatory-fields-in-reserved-memory-nod.patch diff --git a/debian/patches/apertis/0002-fix-rcar-add-mandatory-fields-in-reserved-memory-nod.patch b/debian/patches/apertis/0002-fix-rcar-add-mandatory-fields-in-reserved-memory-nod.patch new file mode 100644 index 00000000..36bde35a --- /dev/null +++ b/debian/patches/apertis/0002-fix-rcar-add-mandatory-fields-in-reserved-memory-nod.patch @@ -0,0 +1,115 @@ +From: Detlev Casanova <detlev.casanova@collabora.com> +Date: Thu, 1 Dec 2022 17:57:31 -0500 +Subject: fix(rcar): add mandatory fields in 'reserved-memory' node + +On the R-Car Gen3 boards, u-boot will apply this reserved-memory node +directly on the Linux device-tree. + +The linux kernel requires that the ranges, #address-cells +and #size-cells values must be set in the reserved-memory node. + +Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com> +Change-Id: Ic9b9bd3f2177a224d0931f6a4f4818a87904a493 +Forwarded: https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/18260 + +Change-Id: I84b3e240131eaa4b203708e8f2888fe55fa3767b +--- + plat/renesas/rcar/bl2_plat_setup.c | 70 +++++++++++++++++++++++++++----------- + 1 file changed, 51 insertions(+), 19 deletions(-) + +diff --git a/plat/renesas/rcar/bl2_plat_setup.c b/plat/renesas/rcar/bl2_plat_setup.c +index f85db8d..9570803 100644 +--- a/plat/renesas/rcar/bl2_plat_setup.c ++++ b/plat/renesas/rcar/bl2_plat_setup.c +@@ -236,6 +236,56 @@ static void bl2_lossy_setting(uint32_t no, uint64_t start_addr, + mmio_read_32(AXI_DCMPAREACRA0 + 0x8 * no), + mmio_read_32(AXI_DCMPAREACRB0 + 0x8 * no)); + } ++ ++static int bl2_create_reserved_memory(void) ++{ ++ int ret; ++ ++ int fcnlnode = fdt_add_subnode(fdt, 0, "reserved-memory"); ++ if (fcnlnode < 0) { ++ NOTICE("BL2: Cannot create reserved mem node (ret=%i)\n", ++ fcnlnode); ++ panic(); ++ } ++ ++ ret = fdt_setprop(fdt, fcnlnode, "ranges", NULL, 0); ++ if (ret < 0) { ++ NOTICE("BL2: Cannot add FCNL ranges prop (ret=%i)\n", ret); ++ panic(); ++ } ++ ++ ret = fdt_setprop_u32(fdt, fcnlnode, "#address-cells", 2); ++ if (ret < 0) { ++ NOTICE("BL2: Cannot add FCNL #address-cells prop (ret=%i)\n", ret); ++ panic(); ++ } ++ ++ ret = fdt_setprop_u32(fdt, fcnlnode, "#size-cells", 2); ++ if (ret < 0) { ++ NOTICE("BL2: Cannot add FCNL #size-cells prop (ret=%i)\n", ret); ++ panic(); ++ } ++ ++ return fcnlnode; ++} ++ ++static void bl2_create_fcnl_reserved_memory(void) ++{ ++ int fcnlnode; ++ ++ NOTICE("BL2: Lossy Decomp areas\n"); ++ ++ fcnlnode = bl2_create_reserved_memory(); ++ ++ bl2_lossy_setting(0, LOSSY_ST_ADDR0, LOSSY_END_ADDR0, ++ LOSSY_FMT0, LOSSY_ENA_DIS0, fcnlnode); ++ bl2_lossy_setting(1, LOSSY_ST_ADDR1, LOSSY_END_ADDR1, ++ LOSSY_FMT1, LOSSY_ENA_DIS1, fcnlnode); ++ bl2_lossy_setting(2, LOSSY_ST_ADDR2, LOSSY_END_ADDR2, ++ LOSSY_FMT2, LOSSY_ENA_DIS2, fcnlnode); ++} ++#else ++static void bl2_create_fcnl_reserved_memory(void) {} + #endif + + void bl2_plat_flush_bl31_params(void) +@@ -820,9 +870,6 @@ void bl2_el3_early_platform_setup(u_register_t arg1, u_register_t arg2, + #else + const char *boot_hyper160 = "HyperFlash(160MHz)"; + #endif +-#if (RCAR_LOSSY_ENABLE == 1) +- int fcnlnode; +-#endif + + bl2_init_generic_timer(); + +@@ -1099,23 +1146,8 @@ lcm_state: + reg &= ~((uint32_t) 1 << 12); + mmio_write_32(CPG_PLL0CR, reg); + } +-#if (RCAR_LOSSY_ENABLE == 1) +- NOTICE("BL2: Lossy Decomp areas\n"); +- +- fcnlnode = fdt_add_subnode(fdt, 0, "reserved-memory"); +- if (fcnlnode < 0) { +- NOTICE("BL2: Cannot create reserved mem node (ret=%i)\n", +- fcnlnode); +- panic(); +- } + +- bl2_lossy_setting(0, LOSSY_ST_ADDR0, LOSSY_END_ADDR0, +- LOSSY_FMT0, LOSSY_ENA_DIS0, fcnlnode); +- bl2_lossy_setting(1, LOSSY_ST_ADDR1, LOSSY_END_ADDR1, +- LOSSY_FMT1, LOSSY_ENA_DIS1, fcnlnode); +- bl2_lossy_setting(2, LOSSY_ST_ADDR2, LOSSY_END_ADDR2, +- LOSSY_FMT2, LOSSY_ENA_DIS2, fcnlnode); +-#endif ++ bl2_create_fcnl_reserved_memory(); + + fdt_pack(fdt); + NOTICE("BL2: FDT at %p\n", fdt); diff --git a/debian/patches/series b/debian/patches/series index 12c5ada6..c6c463be 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,2 +1,3 @@ use-ldflags-with-fiptool-and-cert-create # Apertis +apertis/0002-fix-rcar-add-mandatory-fields-in-reserved-memory-nod.patch -- GitLab