From 23fa18eaa71266feff7ba8d83022d9e1cc83c65a Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Fri, 10 May 2024 07:42:03 +0000
Subject: [PATCH] disable pwm7

---
 u-boot/common/image-fdt.c |   80 +++++++++++++++++++++++++---------------
 1 files changed, 50 insertions(+), 30 deletions(-)

diff --git a/u-boot/common/image-fdt.c b/u-boot/common/image-fdt.c
index 2c79b96..2884880 100644
--- a/u-boot/common/image-fdt.c
+++ b/u-boot/common/image-fdt.c
@@ -78,39 +78,16 @@
 }
 #endif
 
-/**
- * boot_fdt_add_mem_rsv_regions - Mark the memreserve sections as unusable
- * @lmb: pointer to lmb handle, will be used for memory mgmt
- * @fdt_blob: pointer to fdt blob base address
- *
- * Adds the memreserve regions in the dtb to the lmb block.  Adding the
- * memreserve regions prevents u-boot from using them to store the initrd
- * or the fdt blob.
- */
-void boot_fdt_add_mem_rsv_regions(struct lmb *lmb, void *fdt_blob)
+void boot_mem_rsv_regions(struct lmb *lmb, void *fdt_blob)
 {
-	uint64_t addr, size;
-	int i, total;
 	int rsv_offset, offset;
 	fdt_size_t rsv_size;
 	fdt_addr_t rsv_addr;
-	/* we needn't repeat do reserve, do_bootm_linux would call this again */
-	static int rsv_done;
 	const void *prop;
+	int i = 0;
 
-	if (fdt_check_header(fdt_blob) != 0 || rsv_done)
+	if (fdt_check_header(fdt_blob) != 0)
 		return;
-
-	rsv_done = 1;
-
-	total = fdt_num_mem_rsv(fdt_blob);
-	for (i = 0; i < total; i++) {
-		if (fdt_get_mem_rsv(fdt_blob, i, &addr, &size) != 0)
-			continue;
-		printf("   reserving fdt memory region: addr=%llx size=%llx\n",
-		       (unsigned long long)addr, (unsigned long long)size);
-		lmb_reserve(lmb, addr, size);
-	}
 
 	rsv_offset = fdt_subnode_offset(fdt_blob, 0, "reserved-memory");
 	if (rsv_offset == -FDT_ERR_NOTFOUND)
@@ -128,13 +105,56 @@
 							      &rsv_size, false);
 		if (rsv_addr == FDT_ADDR_T_NONE || !rsv_size)
 			continue;
-		printf("  'reserved-memory' %s: addr=%llx size=%llx\n",
-			fdt_get_name(fdt_blob, offset, NULL),
-			(unsigned long long)rsv_addr, (unsigned long long)rsv_size);
-		lmb_reserve(lmb, rsv_addr, rsv_size);
+
+		i++;
+		/* be quiet while reserve */
+		if (lmb) {
+			lmb_reserve(lmb, rsv_addr, rsv_size);
+		} else {
+			if (i == 1)
+				printf("## reserved-memory:\n");
+
+			printf("  %s: addr=%llx size=%llx\n",
+				fdt_get_name(fdt_blob, offset, NULL),
+				(unsigned long long)rsv_addr, (unsigned long long)rsv_size);
+		}
 	}
 }
 
+/**
+ * boot_fdt_add_mem_rsv_regions - Mark the memreserve sections as unusable
+ * @lmb: pointer to lmb handle, will be used for memory mgmt
+ * @fdt_blob: pointer to fdt blob base address
+ *
+ * Adds the memreserve regions in the dtb to the lmb block.  Adding the
+ * memreserve regions prevents u-boot from using them to store the initrd
+ * or the fdt blob.
+ */
+void boot_fdt_add_mem_rsv_regions(struct lmb *lmb, void *fdt_blob)
+{
+	uint64_t addr, size;
+	int i, total;
+	/* we needn't repeat do reserve, do_bootm_linux would call this again */
+	static int rsv_done;
+
+	if (fdt_check_header(fdt_blob) != 0 || rsv_done)
+		return;
+
+	rsv_done = 1;
+
+	total = fdt_num_mem_rsv(fdt_blob);
+	for (i = 0; i < total; i++) {
+		if (fdt_get_mem_rsv(fdt_blob, i, &addr, &size) != 0)
+			continue;
+		printf("   reserving fdt memory region: addr=%llx size=%llx\n",
+		       (unsigned long long)addr, (unsigned long long)size);
+		lmb_reserve(lmb, addr, size);
+	}
+
+	/* lmb_reserve() for "reserved-memory" */
+	boot_mem_rsv_regions(lmb, fdt_blob);
+}
+
 #ifdef CONFIG_SYSMEM
 /**
  * boot_fdt_add_mem_rsv_regions - Mark the memreserve sections as unusable

--
Gitblit v1.6.2