62 lines
1.8 KiB
C
62 lines
1.8 KiB
C
|
#ifndef __DTBFAST_H_
|
|||
|
#define __DTBFAST_H_
|
|||
|
|
|||
|
#include <linux/types.h>
|
|||
|
#include <sys_config.h>
|
|||
|
|
|||
|
#define DTBFAST_HEAD_MAX_DEPTH (16)
|
|||
|
|
|||
|
|
|||
|
struct dtbfast_header {
|
|||
|
uint32_t magic; /* magic word FDT_MAGIC */
|
|||
|
uint32_t totalsize; /* total file size */
|
|||
|
uint32_t level0_count; /* the count of level0 head */
|
|||
|
uint32_t off_head; /* offset to head */
|
|||
|
uint32_t head_count; /* total head */
|
|||
|
uint32_t off_prop; /* offset to prop */
|
|||
|
uint32_t prop_count; /* total prop */
|
|||
|
uint32_t reserved[9];
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
struct head_node {
|
|||
|
uint32_t name_sum; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ۼӺ<DBBC>
|
|||
|
uint32_t name_sum_short; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@֮<><D6AE><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ۼӺ<DBBC>
|
|||
|
uint32_t name_offset; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dtb<74><62>Ѱ<EFBFBD><D1B0>
|
|||
|
uint32_t name_bytes; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶij<C6B5><C4B3><EFBFBD>
|
|||
|
uint32_t name_bytes_short;//@֮ǰ<D6AE><C7B0><EFBFBD>Ƶij<C6B5><C4B3><EFBFBD>
|
|||
|
uint32_t repeate_count;
|
|||
|
uint32_t head_offset; //ָ<><D6B8><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>head<61><64>offset
|
|||
|
uint32_t head_count; //head<61>ܵĸ<DCB5><C4B8><EFBFBD>
|
|||
|
uint32_t data_offset; //ָ<><D6B8><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>prop<6F><70>offset
|
|||
|
uint32_t data_count; //prop<6F>ܵĸ<DCB5><C4B8><EFBFBD>
|
|||
|
uint32_t reserved[2];
|
|||
|
};
|
|||
|
|
|||
|
struct prop_node {
|
|||
|
uint32_t name_sum; //<2F><><EFBFBD>Ƶ<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ۼӺ<DBBC>
|
|||
|
uint32_t name_offset; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dtb<74><62>Ѱ<EFBFBD><D1B0>
|
|||
|
uint32_t name_bytes; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶij<C6B5><C4B3><EFBFBD>
|
|||
|
uint32_t offset; //<2F><><EFBFBD><EFBFBD>prop<6F><70>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dtb<74><62>Ѱ<EFBFBD><D1B0>
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
int fdtfast_path_offset(const void *fdt, const char *path);
|
|||
|
|
|||
|
int fdtfast_set_node_status(void *fdt, int nodeoffset, enum fdt_status status, unsigned int error_code);
|
|||
|
|
|||
|
int fdtfast_setprop_u32(void *fdt, int nodeoffset, const char *name,
|
|||
|
uint32_t val);
|
|||
|
|
|||
|
int fdtfast_getprop_u32(const void *fdt, int nodeoffset,
|
|||
|
const char *name, uint32_t *val);
|
|||
|
|
|||
|
int fdtfast_getprop_string(const void *fdt, int nodeoffset,
|
|||
|
const char *name, char **val);
|
|||
|
|
|||
|
int fdtfast_getprop_gpio(const void *fdt, int nodeoffset,
|
|||
|
const char* prop_name, user_gpio_set_t* gpio_list);
|
|||
|
|
|||
|
#endif /* __DTBFAST_H_ */
|