xref: /qemu/include/system/device_tree.h (revision 7ae2291e8e0f34ac520044c8af0437a701e1c967)
1f652e6afSaurel32 /*
2f652e6afSaurel32  * Header with function prototypes to help device tree manipulation using
3f652e6afSaurel32  * libfdt. It also provides functions to read entries from device tree proc
4f652e6afSaurel32  * interface.
5f652e6afSaurel32  *
6f652e6afSaurel32  * Copyright 2008 IBM Corporation.
7f652e6afSaurel32  * Authors: Jerone Young <jyoung5@us.ibm.com>
8f652e6afSaurel32  *          Hollis Blanchard <hollisb@us.ibm.com>
9f652e6afSaurel32  *
10f652e6afSaurel32  * This work is licensed under the GNU GPL license version 2 or later.
11f652e6afSaurel32  *
12f652e6afSaurel32  */
13f652e6afSaurel32 
14f652e6afSaurel32 #ifndef __DEVICE_TREE_H__
15f652e6afSaurel32 #define __DEVICE_TREE_H__
16f652e6afSaurel32 
177ec632b4Spbrook void *load_device_tree(const char *filename_path, int *sizep);
18f652e6afSaurel32 
19f652e6afSaurel32 int qemu_devtree_setprop(void *fdt, const char *node_path,
20c4897490SDavid Gibson                          const char *property, void *val_array, int size);
21f652e6afSaurel32 int qemu_devtree_setprop_cell(void *fdt, const char *node_path,
22f652e6afSaurel32                               const char *property, uint32_t val);
23f652e6afSaurel32 int qemu_devtree_setprop_string(void *fdt, const char *node_path,
24f652e6afSaurel32                                 const char *property, const char *string);
25d69a8e63SAlexander Graf int qemu_devtree_nop_node(void *fdt, const char *node_path);
2680ad7816SAlexander Graf int qemu_devtree_add_subnode(void *fdt, const char *name);
27f652e6afSaurel32 
28*7ae2291eSAlexander Graf #define qemu_devtree_setprop_cells(fdt, node_path, property, ...)             \
29*7ae2291eSAlexander Graf     do {                                                                      \
30*7ae2291eSAlexander Graf         uint32_t qdt_tmp[] = { __VA_ARGS__ };                                 \
31*7ae2291eSAlexander Graf         int i;                                                                \
32*7ae2291eSAlexander Graf                                                                               \
33*7ae2291eSAlexander Graf         for (i = 0; i < ARRAY_SIZE(qdt_tmp); i++) {                           \
34*7ae2291eSAlexander Graf             qdt_tmp[i] = cpu_to_be32(qdt_tmp[i]);                             \
35*7ae2291eSAlexander Graf         }                                                                     \
36*7ae2291eSAlexander Graf         qemu_devtree_setprop(fdt, node_path, property, qdt_tmp,               \
37*7ae2291eSAlexander Graf                              sizeof(qdt_tmp));                                \
38*7ae2291eSAlexander Graf     } while (0)
39*7ae2291eSAlexander Graf 
40f652e6afSaurel32 #endif /* __DEVICE_TREE_H__ */
41