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