46 lines
919 B
C++
46 lines
919 B
C++
#pragma once
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
struct fdt_header {
|
|
uint32_t magic;
|
|
uint32_t total_size;
|
|
uint32_t structs_offset;
|
|
uint32_t strings_offset;
|
|
uint32_t reserved_offset;
|
|
uint32_t version;
|
|
uint32_t compat_version;
|
|
uint32_t boot_cpuid;
|
|
uint32_t strings_size;
|
|
uint32_t structs_size;
|
|
};
|
|
|
|
constexpr uint32_t FDT_BEGIN_NODE = 0x00000001;
|
|
constexpr uint32_t FDT_END_NODE = 0x00000002;
|
|
constexpr uint32_t FDT_PROP = 0x00000003;
|
|
constexpr uint32_t FDT_NOP = 0x00000004;
|
|
constexpr uint32_t FDT_END = 0x00000009;
|
|
|
|
struct fdt {
|
|
uint32_t version;
|
|
uint32_t compat_version;
|
|
uint32_t boot_cpuid;
|
|
|
|
const uint8_t* structs;
|
|
size_t structs_len;
|
|
const uint8_t* strings;
|
|
size_t strings_len;
|
|
};
|
|
|
|
struct fdt_node {
|
|
struct fdt* tree;
|
|
};
|
|
|
|
struct fdt_prop {
|
|
struct fdt* tree;
|
|
};
|
|
|
|
// Root of the device tree.
|
|
struct fdt_node fdt_root(struct fdt* tree);
|