struct fdt_head {
uint32_t fh_magic;
uint32_t fh_size;
uint32_t fh_struct_off;
uint32_t fh_strings_off;
uint32_t fh_reserve_off;
uint32_t fh_version;
uint32_t fh_comp_ver;
uint32_t fh_boot_cpu_id;
uint32_t fh_strings_size;
uint32_t fh_struct_size;
};
struct fdt {
struct fdt_head *header;
char *tree;
char *strings;
char *memory;
char *end;
int version;
int strings_size;
int struct_size;
};
#define FDT_MAGIC 0xd00dfeed
#define FDT_NODE_BEGIN 0x01
#define FDT_NODE_END 0x02
#define FDT_PROPERTY 0x03
#define FDT_NOP 0x04
#define FDT_END 0x09
#define FDT_CODE_VERSION 0x11
int fdt_init(void *);
void fdt_finalize(void);
size_t fdt_get_size(void *);
void *fdt_next_node(void *);
void *fdt_child_node(void *);
char *fdt_node_name(void *);
void *fdt_find_node(char *);
int fdt_node_property(void *, char *, char **);
int fdt_node_property_int(void *, char *, int *);
int fdt_node_property_ints(void *, char *, int *, int);
int fdt_node_set_property(void *, char *, void *, int);
int fdt_node_add_property(void *, char *, void *, int);
int fdt_node_add_node(void *, char *, void **);
void *fdt_parent_node(void *);
int fdt_node_is_compatible(void *, const char *);
#ifdef DEBUG
void *fdt_print_property(void *, int);
void fdt_print_node(void *, int);
void fdt_print_tree(void);
#endif