mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
fdt: Add fdtdec_get_uint64 to decode a 64-bit value from a property
It decodes a 64-bit value from a property that is at least 8 bytes long. Signed-off-by: Che-Liang Chiou <clchiou@chromium.org> Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
79289c0b5f
commit
aadef0a1bc
2 changed files with 28 additions and 0 deletions
|
@ -181,6 +181,21 @@ fdt_addr_t fdtdec_get_addr(const void *blob, int node,
|
|||
s32 fdtdec_get_int(const void *blob, int node, const char *prop_name,
|
||||
s32 default_val);
|
||||
|
||||
/**
|
||||
* Look up a 64-bit integer property in a node and return it. The property
|
||||
* must have at least 8 bytes of data (2 cells). The first two cells are
|
||||
* concatenated to form a 8 bytes value, where the first cell is top half and
|
||||
* the second cell is bottom half.
|
||||
*
|
||||
* @param blob FDT blob
|
||||
* @param node node to examine
|
||||
* @param prop_name name of property to find
|
||||
* @param default_val default value to return if the property is not found
|
||||
* @return integer value, if found, or default_val if not
|
||||
*/
|
||||
uint64_t fdtdec_get_uint64(const void *blob, int node, const char *prop_name,
|
||||
uint64_t default_val);
|
||||
|
||||
/**
|
||||
* Checks whether a node is enabled.
|
||||
* This looks for a 'status' property. If this exists, then returns 1 if
|
||||
|
|
13
lib/fdtdec.c
13
lib/fdtdec.c
|
@ -111,6 +111,19 @@ s32 fdtdec_get_int(const void *blob, int node, const char *prop_name,
|
|||
return default_val;
|
||||
}
|
||||
|
||||
uint64_t fdtdec_get_uint64(const void *blob, int node, const char *prop_name,
|
||||
uint64_t default_val)
|
||||
{
|
||||
const uint64_t *cell64;
|
||||
int length;
|
||||
|
||||
cell64 = fdt_getprop(blob, node, prop_name, &length);
|
||||
if (!cell64 || length < sizeof(*cell64))
|
||||
return default_val;
|
||||
|
||||
return fdt64_to_cpu(*cell64);
|
||||
}
|
||||
|
||||
int fdtdec_get_is_enabled(const void *blob, int node)
|
||||
{
|
||||
const char *cell;
|
||||
|
|
Loading…
Reference in a new issue