diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2021-10-11 13:58:11 +0300 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2021-10-11 13:58:11 +0300 |
| commit | 091463c1057f50b47156a138d7d1dbd09494a6d5 (patch) | |
| tree | 954bc11974362f5a856a20e6d7d8b0b451d35fa5 /common/fdt.c | |
| parent | d2ff961a2a08229e1f2245e8dba9b2275016133c (diff) | |
| download | kmi-091463c1057f50b47156a138d7d1dbd09494a6d5.tar.gz kmi-091463c1057f50b47156a138d7d1dbd09494a6d5.zip | |
Moved some functions to common/
Diffstat (limited to 'common/fdt.c')
| -rw-r--r-- | common/fdt.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/common/fdt.c b/common/fdt.c new file mode 100644 index 0000000..c554b25 --- /dev/null +++ b/common/fdt.c @@ -0,0 +1,24 @@ +#include <libfdt.h> + +struct cell_info_t get_cellinfo(void *fdt, int offset) +{ + return (struct cell_info_t){ + fdt_size_cells(fdt, offset), + fdt_address_cells(fdt, offset) + }; +} + +/* how "reg" is interpreted depends on the parent node */ +struct cell_info_t get_reginfo(void *fdt, const char *path) +{ + const char *i = strrchr(path, '/'); + if(!i) + return (struct cell_info_t){0, 0}; + + size_t baselen = i - path; + if(i == 0) + /* root node */ + baselen = 1; + + return get_cellinfo(fdt, fdt_path_offset_namelen(fdt, path, baselen)); +} |
