mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
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>
This commit is contained in:
parent
eed36609b5
commit
a4b8e372d5
2 changed files with 38 additions and 2 deletions
|
@ -457,8 +457,8 @@ fdt_addr_t ofnode_get_addr_size(ofnode node, const char *property,
|
|||
|
||||
na = of_n_addr_cells(np);
|
||||
ns = of_n_addr_cells(np);
|
||||
*sizep = fdt_read_number(prop + na, ns);
|
||||
return fdt_read_number(prop, na);
|
||||
*sizep = of_read_number(prop + na, ns);
|
||||
return of_read_number(prop, na);
|
||||
} else {
|
||||
return fdtdec_get_addr_size(gd->fdt_blob,
|
||||
ofnode_to_offset(node), property,
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue