diff options
author | Simon Glass <sjg@chromium.org> | 2017-05-18 20:09:27 -0600 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2017-06-01 07:03:12 -0600 |
commit | a4b8e372d5b15d7dd302cac667e87049b59b13c7 (patch) | |
tree | a806a79b586f5489a48a8ba01c41f9e0140f8fd3 /include | |
parent | eed36609b5494b94bdca0e2bdc5ac2bd07ab2518 (diff) |
dm: Add more livetree helpers and definitions
Add some definitions and helpers for livetree in the main of.h header
file. These include:
- reading multi-cell integers
- default number of address/size cells
- functions for comparing names
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/dm/of.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/include/dm/of.h b/include/dm/of.h index 6b5afab1c16..d4d941e75c1 100644 --- a/include/dm/of.h +++ b/include/dm/of.h @@ -103,4 +103,40 @@ static inline bool of_live_active(void) } #endif +#define OF_BAD_ADDR ((u64)-1) + +static inline const char *of_node_full_name(const struct device_node *np) +{ + return np ? np->full_name : "<no-node>"; +} + +/* Default #address and #size cells */ +#if !defined(OF_ROOT_NODE_ADDR_CELLS_DEFAULT) +#define OF_ROOT_NODE_ADDR_CELLS_DEFAULT 1 +#define OF_ROOT_NODE_SIZE_CELLS_DEFAULT 1 +#endif + +/* Default string compare functions */ +#if !defined(of_compat_cmp) +#define of_compat_cmp(s1, s2, l) strcasecmp((s1), (s2)) +#define of_prop_cmp(s1, s2) strcmp((s1), (s2)) +#define of_node_cmp(s1, s2) strcasecmp((s1), (s2)) +#endif + +/* Helper to read a big number; size is in cells (not bytes) */ +static inline u64 of_read_number(const __be32 *cell, int size) +{ + u64 r = 0; + while (size--) + r = (r << 32) | be32_to_cpu(*(cell++)); + return r; +} + +/* Like of_read_number, but we want an unsigned long result */ +static inline unsigned long of_read_ulong(const __be32 *cell, int size) +{ + /* toss away upper bits if unsigned long is smaller than u64 */ + return of_read_number(cell, size); +} + #endif |