device_tree: Add support for reading device tree properties
Add support for reading device tree properties (both generic and single-cell ones) to QEMU's convenience wrapper layer. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Peter A. G. Crosthwaite <peter.crosthwaite@petalogix.com>
This commit is contained in:
parent
3871481c0a
commit
f0aa713f65
@ -178,6 +178,36 @@ int qemu_devtree_setprop_string(void *fdt, const char *node_path,
|
||||
return r;
|
||||
}
|
||||
|
||||
const void *qemu_devtree_getprop(void *fdt, const char *node_path,
|
||||
const char *property, int *lenp)
|
||||
{
|
||||
int len;
|
||||
const void *r;
|
||||
if (!lenp) {
|
||||
lenp = &len;
|
||||
}
|
||||
r = fdt_getprop(fdt, findnode_nofail(fdt, node_path), property, lenp);
|
||||
if (!r) {
|
||||
fprintf(stderr, "%s: Couldn't get %s/%s: %s\n", __func__,
|
||||
node_path, property, fdt_strerror(*lenp));
|
||||
exit(1);
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
uint32_t qemu_devtree_getprop_cell(void *fdt, const char *node_path,
|
||||
const char *property)
|
||||
{
|
||||
int len;
|
||||
const uint32_t *p = qemu_devtree_getprop(fdt, node_path, property, &len);
|
||||
if (len != 4) {
|
||||
fprintf(stderr, "%s: %s/%s not 4 bytes long (not a cell?)\n",
|
||||
__func__, node_path, property);
|
||||
exit(1);
|
||||
}
|
||||
return be32_to_cpu(*p);
|
||||
}
|
||||
|
||||
uint32_t qemu_devtree_get_phandle(void *fdt, const char *path)
|
||||
{
|
||||
uint32_t r;
|
||||
|
@ -28,6 +28,10 @@ int qemu_devtree_setprop_string(void *fdt, const char *node_path,
|
||||
int qemu_devtree_setprop_phandle(void *fdt, const char *node_path,
|
||||
const char *property,
|
||||
const char *target_node_path);
|
||||
const void *qemu_devtree_getprop(void *fdt, const char *node_path,
|
||||
const char *property, int *lenp);
|
||||
uint32_t qemu_devtree_getprop_cell(void *fdt, const char *node_path,
|
||||
const char *property);
|
||||
uint32_t qemu_devtree_get_phandle(void *fdt, const char *path);
|
||||
uint32_t qemu_devtree_alloc_phandle(void *fdt);
|
||||
int qemu_devtree_nop_node(void *fdt, const char *node_path);
|
||||
|
Loading…
Reference in New Issue
Block a user