From: Andre Przywara <osp@andrep.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] fdt: prevent clearing memory node if there are no banks
Date: Sat, 13 Jun 2015 11:43:13 +0100 [thread overview]
Message-ID: <1434192193-32126-1-git-send-email-osp@andrep.de> (raw)
In-Reply-To: <CAPnjgZ2=fYO9Y1+EgD-ACVSLJbEO00WQxLDwQCgczm1G6yu-dg@mail.gmail.com>
Avoid clearing the reg property in the memory DT node if no memory
banks have been specified for a board (CONFIG_NR_DRAM_BANKS == 0).
This allows boards to let U-Boot skip the DT memory tinkering in case
other firmware has already setup the node properly before.
This should be safe as all callers of fdt_fixup_memory_banks that use
a computed <banks> value put at least 1 in there.
Add some documentation comments to the header file.
Signed-off-by: Andre Przywara <osp@andrep.de>
---
Hi,
this replaces my former "6/8: ARM: bootm: allow skipping fdt memory node fixup"
patch, as Simon had some (justified) concerns. If this is too generic now,
let me know and I will rework it.
Cheers,
Andre.
common/fdt_support.c | 14 ++++++++------
include/fdt_support.h | 26 ++++++++++++++++++++++++++
2 files changed, 34 insertions(+), 6 deletions(-)
diff --git a/common/fdt_support.c b/common/fdt_support.c
index 9e50148..6ad532c 100644
--- a/common/fdt_support.c
+++ b/common/fdt_support.c
@@ -429,13 +429,15 @@ int fdt_fixup_memory_banks(void *blob, u64 start[], u64 size[], int banks)
return err;
}
- len = fdt_pack_reg(blob, tmp, start, size, banks);
+ if (banks) {
+ len = fdt_pack_reg(blob, tmp, start, size, banks);
- err = fdt_setprop(blob, nodeoffset, "reg", tmp, len);
- if (err < 0) {
- printf("WARNING: could not set %s %s.\n",
- "reg", fdt_strerror(err));
- return err;
+ err = fdt_setprop(blob, nodeoffset, "reg", tmp, len);
+ if (err < 0) {
+ printf("WARNING: could not set %s %s.\n",
+ "reg", fdt_strerror(err));
+ return err;
+ }
}
return 0;
}
diff --git a/include/fdt_support.h b/include/fdt_support.h
index 5d4f28d..0296ed3 100644
--- a/include/fdt_support.h
+++ b/include/fdt_support.h
@@ -40,8 +40,34 @@ void do_fixup_by_compat(void *fdt, const char *compat,
const char *prop, const void *val, int len, int create);
void do_fixup_by_compat_u32(void *fdt, const char *compat,
const char *prop, u32 val, int create);
+/**
+ * Setup the memory node in the DT. Creates one if none was existing before.
+ * Calls fdt_fixup_memory_banks() to populate a single reg pair covering the
+ * whole memory.
+ *
+ * @param blob FDT blob to update
+ * @param start Begin of DRAM mapping in physical memory
+ * @param size Size of the single memory bank
+ * @return 0 if ok, or -1 or -FDT_ERR_... on error
+ */
int fdt_fixup_memory(void *blob, u64 start, u64 size);
+
+/**
+ * Fill the DT memory node with multiple memory banks.
+ * Creates the node if none was existing before.
+ * If banks is 0, it will not touch the existing reg property. This allows
+ * boards to not mess with the existing DT setup, which may have been
+ * filled in properly before.
+ *
+ * @param blob FDT blob to update
+ * @param start Array of size <banks> to hold the start addresses.
+ * @param size Array of size <banks> to hold the size of each region.
+ * @param banks Number of memory banks to create. If 0, the reg
+ * property will be left untouched.
+ * @return 0 if ok, or -1 or -FDT_ERR_... on error
+ */
int fdt_fixup_memory_banks(void *blob, u64 start[], u64 size[], int banks);
+
void fdt_fixup_ethernet(void *fdt);
int fdt_find_and_setprop(void *fdt, const char *node, const char *prop,
const void *val, int len, int create);
--
1.8.4
next prev parent reply other threads:[~2015-06-13 10:43 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-04 23:58 [U-Boot] [PATCH 0/8] ARM: highbank: fix Calxeda machines Andre Przywara
2015-06-04 23:58 ` [U-Boot] [PATCH 1/8] ARM: highbank: add missing SCU register setup for reset Andre Przywara
2015-06-13 2:09 ` [U-Boot] [U-Boot, " Tom Rini
2015-06-04 23:58 ` [U-Boot] [PATCH 2/8] ARM: highbank: add reset support for Calxeda Midway machine Andre Przywara
2015-06-13 2:09 ` [U-Boot] [U-Boot, " Tom Rini
2015-06-04 23:58 ` [U-Boot] [PATCH 3/8] cmd_scsi: use lbaint_t for LBA values instead of u32 Andre Przywara
2015-06-13 2:09 ` [U-Boot] [U-Boot, " Tom Rini
2015-06-04 23:58 ` [U-Boot] [PATCH 4/8] ahci: support LBA48 data reads for 2+TB drives Andre Przywara
2015-06-13 2:10 ` [U-Boot] [U-Boot, " Tom Rini
2015-06-25 1:43 ` Bin Meng
2015-06-04 23:58 ` [U-Boot] [PATCH 5/8] ahci: extend data io wait to 10s Andre Przywara
2015-06-13 2:10 ` [U-Boot] [U-Boot,5/8] " Tom Rini
2015-06-04 23:58 ` [U-Boot] [PATCH 6/8] ARM: bootm: allow skipping fdt memory node fixup Andre Przywara
2015-06-05 14:12 ` Simon Glass
2015-06-06 0:14 ` Andre Przywara
2015-06-08 0:57 ` Simon Glass
2015-06-13 10:43 ` Andre Przywara [this message]
2015-06-15 15:57 ` [U-Boot] [PATCH] fdt: prevent clearing memory node if there are no banks Rob Herring
2015-06-16 18:07 ` Simon Glass
2015-06-04 23:58 ` [U-Boot] [PATCH 7/8] ARM: highbank: remove DRAM bank setup Andre Przywara
2015-06-13 2:10 ` [U-Boot] [U-Boot,7/8] " Tom Rini
2015-06-13 11:01 ` Andre Przywara
2015-06-15 15:18 ` Tom Rini
2015-06-04 23:58 ` [U-Boot] [PATCH 8/8] highbank: add custom ahci_link_up function Andre Przywara
2015-06-13 2:10 ` [U-Boot] [U-Boot, " Tom Rini
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=1434192193-32126-1-git-send-email-osp@andrep.de \
--to=osp@andrep.de \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox