Add "get by offset" DT helpers

Add new helper functions to read a DT property by its offset. This is
useful when the property's name is unknown, e.g. when iterating through
all properties of a node.

Signed-off-by: Balint Dobszay <balint.dobszay@arm.com>
Change-Id: Ia042905be6de1df545934d76fa8010bb7a2e3f17
diff --git a/components/common/fdt/fdt_helpers.c b/components/common/fdt/fdt_helpers.c
index eaf7922..5a6f949 100644
--- a/components/common/fdt/fdt_helpers.c
+++ b/components/common/fdt/fdt_helpers.c
@@ -38,3 +38,37 @@
 
 	return true;
 }
+
+bool dt_get_u32_by_offset(const void *fdt, int offset, const char **prop_name, uint32_t *prop_val)
+{
+	const fdt32_t *u32_prop = NULL;
+	int len = 0;
+
+	if (!fdt || !prop_name || !prop_val)
+		return false;
+
+	u32_prop = fdt_getprop_by_offset(fdt, offset, prop_name, &len);
+	if (!u32_prop || len != sizeof(*u32_prop) || !(*prop_name))
+		return false;
+
+	*prop_val = fdt32_to_cpu(*u32_prop);
+
+	return true;
+}
+
+bool dt_get_u64_by_offset(const void *fdt, int offset, const char **prop_name, uint64_t *prop_val)
+{
+	const fdt64_t *u64_prop = NULL;
+	int len = 0;
+
+	if (!fdt || !prop_name || !prop_val)
+		return false;
+
+	u64_prop = fdt_getprop_by_offset(fdt, offset, prop_name, &len);
+	if (!u64_prop || len != sizeof(*u64_prop) || !(*prop_name))
+		return false;
+
+	*prop_val = fdt64_to_cpu(*u64_prop);
+
+	return true;
+}