|
@@ -40,10 +40,12 @@
|
|
typedef u64 fdt_addr_t;
|
|
typedef u64 fdt_addr_t;
|
|
#define FDT_ADDR_T_NONE (-1ULL)
|
|
#define FDT_ADDR_T_NONE (-1ULL)
|
|
#define fdt_addr_to_cpu(reg) be64_to_cpu(reg)
|
|
#define fdt_addr_to_cpu(reg) be64_to_cpu(reg)
|
|
|
|
+#define fdt_size_to_cpu(reg) be64_to_cpu(reg)
|
|
#else
|
|
#else
|
|
typedef u32 fdt_addr_t;
|
|
typedef u32 fdt_addr_t;
|
|
#define FDT_ADDR_T_NONE (-1U)
|
|
#define FDT_ADDR_T_NONE (-1U)
|
|
#define fdt_addr_to_cpu(reg) be32_to_cpu(reg)
|
|
#define fdt_addr_to_cpu(reg) be32_to_cpu(reg)
|
|
|
|
+#define fdt_size_to_cpu(reg) be32_to_cpu(reg)
|
|
#endif
|
|
#endif
|
|
|
|
|
|
/* Information obtained about memory from the FDT */
|
|
/* Information obtained about memory from the FDT */
|
|
@@ -408,4 +410,21 @@ int fdtdec_get_byte_array(const void *blob, int node, const char *prop_name,
|
|
*/
|
|
*/
|
|
const u8 *fdtdec_locate_byte_array(const void *blob, int node,
|
|
const u8 *fdtdec_locate_byte_array(const void *blob, int node,
|
|
const char *prop_name, int count);
|
|
const char *prop_name, int count);
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * Look up a property in a node which contains a memory region address and
|
|
|
|
+ * size. Then return a pointer to this address.
|
|
|
|
+ *
|
|
|
|
+ * The property must hold one address with a length. This is only tested on
|
|
|
|
+ * 32-bit machines.
|
|
|
|
+ *
|
|
|
|
+ * @param blob FDT blob
|
|
|
|
+ * @param node node to examine
|
|
|
|
+ * @param prop_name name of property to find
|
|
|
|
+ * @param ptrp returns pointer to region, or NULL if no address
|
|
|
|
+ * @param size returns size of region
|
|
|
|
+ * @return 0 if ok, -1 on error (propery not found)
|
|
|
|
+ */
|
|
|
|
+int fdtdec_decode_region(const void *blob, int node,
|
|
|
|
+ const char *prop_name, void **ptrp, size_t *size);
|
|
#endif
|
|
#endif
|