diff mbox series

[3/3] dm: core: refactor functions reading an u32 from dt

Message ID 20200329160443.11518-4-dariobin@libero.it
State Accepted
Commit 59006608d65b242b19176f1a1fdeeb99391654d2
Headers show
Series Support reading an u32 from a multi-value property | expand

Commit Message

Dario Binacchi March 29, 2020, 4:04 p.m. UTC
Now reading a 32 bit value from a device-tree property can be expressed
as reading the first element of an array with a single value.

Signed-off-by: Dario Binacchi <dariobin at libero.it>

---

 drivers/core/of_access.c | 16 +---------------
 drivers/core/ofnode.c    | 23 ++---------------------
 2 files changed, 3 insertions(+), 36 deletions(-)

Comments

Simon Glass March 30, 2020, 11:57 p.m. UTC | #1
On Sun, 29 Mar 2020 at 10:05, Dario Binacchi <dariobin at libero.it> wrote:
>
> Now reading a 32 bit value from a device-tree property can be expressed
> as reading the first element of an array with a single value.
>
> Signed-off-by: Dario Binacchi <dariobin at libero.it>
>
> ---
>
>  drivers/core/of_access.c | 16 +---------------
>  drivers/core/ofnode.c    | 23 ++---------------------
>  2 files changed, 3 insertions(+), 36 deletions(-)

Reviewed-by: Simon Glass <sjg at chromium.org>

Can you please check the code-size delta in SPL on a suitable board?
diff mbox series

Patch

diff --git a/drivers/core/of_access.c b/drivers/core/of_access.c
index 55e4a38fc5..d116d106d9 100644
--- a/drivers/core/of_access.c
+++ b/drivers/core/of_access.c
@@ -449,21 +449,7 @@  static void *of_find_property_value_of_size(const struct device_node *np,
 
 int of_read_u32(const struct device_node *np, const char *propname, u32 *outp)
 {
-	const __be32 *val;
-
-	debug("%s: %s: ", __func__, propname);
-	if (!np)
-		return -EINVAL;
-	val = of_find_property_value_of_size(np, propname, sizeof(*outp));
-	if (IS_ERR(val)) {
-		debug("(not found)\n");
-		return PTR_ERR(val);
-	}
-
-	*outp = be32_to_cpup(val);
-	debug("%#x (%d)\n", *outp, *outp);
-
-	return 0;
+	return of_read_u32_index(np, propname, 0, outp);
 }
 
 int of_read_u32_array(const struct device_node *np, const char *propname,
diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c
index 5bc3b02996..b0be7cbe19 100644
--- a/drivers/core/ofnode.c
+++ b/drivers/core/ofnode.c
@@ -18,32 +18,13 @@ 
 
 int ofnode_read_u32(ofnode node, const char *propname, u32 *outp)
 {
-	assert(ofnode_valid(node));
-	debug("%s: %s: ", __func__, propname);
-
-	if (ofnode_is_np(node)) {
-		return of_read_u32(ofnode_to_np(node), propname, outp);
-	} else {
-		const fdt32_t *cell;
-		int len;
-
-		cell = fdt_getprop(gd->fdt_blob, ofnode_to_offset(node),
-				   propname, &len);
-		if (!cell || len < sizeof(int)) {
-			debug("(not found)\n");
-			return -EINVAL;
-		}
-		*outp = fdt32_to_cpu(cell[0]);
-	}
-	debug("%#x (%d)\n", *outp, *outp);
-
-	return 0;
+	return ofnode_read_u32_index(node, propname, 0, outp);
 }
 
 u32 ofnode_read_u32_default(ofnode node, const char *propname, u32 def)
 {
 	assert(ofnode_valid(node));
-	ofnode_read_u32(node, propname, &def);
+	ofnode_read_u32_index(node, propname, 0, &def);
 
 	return def;
 }