All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bin Meng <bmeng.cn@gmail.com>
To: u-boot@lists.denx.de
Subject: [PATCH 1/4] fdtdec: Add fdtdec_get_mem_size_base()
Date: Wed, 15 Jul 2020 20:23:00 -0700	[thread overview]
Message-ID: <1594869783-20189-1-git-send-email-bmeng.cn@gmail.com> (raw)

From: Bin Meng <bin.meng@windriver.com>

This adds a new API fdtdec_get_mem_size_base() that does similar
thing to fdtdec_setup_mem_size_base_fdt(), but without assigning
gd->ram_size and gd->ram_base.

Signed-off-by: Bin Meng <bin.meng@windriver.com>
---

 include/fdtdec.h | 22 ++++++++++++++++++++++
 lib/fdtdec.c     | 24 ++++++++++++++++++++++++
 2 files changed, 46 insertions(+)

diff --git a/include/fdtdec.h b/include/fdtdec.h
index abd6d42..460d57a 100644
--- a/include/fdtdec.h
+++ b/include/fdtdec.h
@@ -909,6 +909,28 @@ int fdtdec_decode_display_timing(const void *blob, int node, int index,
 				 struct display_timing *config);
 
 /**
+ * fdtdec_get_mem_size_base() - decode FDT to get ram size and base
+ *
+ * Decode the /memory 'reg' property to determine the size and start of the
+ * first memory bank, populate the global data with the size and start of the
+ * first bank of memory.
+ *
+ * This function should be called from a boards dram_init(). This helper
+ * function allows for boards to query the device tree for DRAM size and start
+ * address instead of hard coding the value in the case where the memory size
+ * and start address cannot be detected automatically.
+ *
+ * @param blob		FDT blob
+ * @param ram_size	buffer to hold the ram size to set
+ * @param ram_base	buffer to hold the ram base to set
+ *
+ * @return 0 if OK, -EINVAL if the /memory node or reg property is missing or
+ * invalid
+ */
+int fdtdec_get_mem_size_base(const void *blob,
+			     phys_size_t *ram_size, unsigned long *ram_base);
+
+/**
  * fdtdec_setup_mem_size_base_fdt() - decode and setup gd->ram_size and
  * gd->ram_start
  *
diff --git a/lib/fdtdec.c b/lib/fdtdec.c
index 0dd7ff1..078ff7a 100644
--- a/lib/fdtdec.c
+++ b/lib/fdtdec.c
@@ -1030,6 +1030,30 @@ int fdtdec_decode_display_timing(const void *blob, int parent, int index,
 	return ret;
 }
 
+int fdtdec_get_mem_size_base(const void *blob,
+			     phys_size_t *ram_size, unsigned long *ram_base)
+{
+	int ret, mem;
+	struct fdt_resource res;
+
+	mem = fdt_path_offset(blob, "/memory");
+	if (mem < 0) {
+		debug("%s: Missing /memory node\n", __func__);
+		return -EINVAL;
+	}
+
+	ret = fdt_get_resource(blob, mem, "reg", 0, &res);
+	if (ret != 0) {
+		debug("%s: Unable to decode first memory bank\n", __func__);
+		return -EINVAL;
+	}
+
+	*ram_size = (phys_size_t)(res.end - res.start + 1);
+	*ram_base = (unsigned long)res.start;
+
+	return 0;
+}
+
 int fdtdec_setup_mem_size_base_fdt(const void *blob)
 {
 	int ret, mem;
-- 
2.7.4

             reply	other threads:[~2020-07-16  3:23 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-16  3:23 Bin Meng [this message]
2020-07-16  3:23 ` [PATCH 2/4] fdtdec: Update fdtdec_setup_mem_size_base_fdt() to call fdtdec_get_mem_size_base() Bin Meng
2020-07-16  3:23 ` [PATCH 3/4] riscv: dts: hifive-unleashed-a00: Make memory node available to SPL Bin Meng
2020-07-16  3:23 ` [PATCH 4/4] ram: sifive: Avoid using hardcoded ram base and size Bin Meng
2020-07-17  5:58   ` Leo Liang
2020-07-17  6:09     ` Bin Meng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1594869783-20189-1-git-send-email-bmeng.cn@gmail.com \
    --to=bmeng.cn@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.