This commit is contained in:
2025-03-16 05:52:09 +08:00
parent bfcb951628
commit ac0bf1639e
28 changed files with 738 additions and 76 deletions

52
include/dtb.h Normal file
View File

@@ -0,0 +1,52 @@
#pragma once
#include <stddef.h>
#include <vector.h>
typedef struct {
uint32_t magic;
uint32_t totalsize;
uint32_t off_dt_struct;
uint32_t off_dt_strings;
uint32_t off_mem_rsvmap;
uint32_t version;
uint32_t last_comp_version;
uint32_t boot_cpuid_phys;
uint32_t size_dt_strings;
uint32_t size_dt_struct;
}__attribute__((packed)) fdt_header_t;
typedef struct {
uint64_t address;
uint64_t size;
}__attribute__((packed)) fdt_reserve_entry_t;
typedef struct {
uint32_t len;
uint32_t nameoff;
}__attribute__((packed)) fdt_prop_header_t;
typedef struct {
uint32_t len;
const char *name;
void *value;
} fdt_prop_t;
#define FDT_BEGIN_NODE 0x00000001
#define FDT_END_NODE 0x00000002
#define FDT_PROP 0x00000003
#define FDT_NOP 0x00000004
#define FDT_END 0x00000009
#define FDT_PATH_BUFFER_LEN 0x10
typedef void (*fdt_callback_func_t)(const vector_t *props);
typedef struct {
const char *name;
const fdt_callback_func_t func;
} fdt_callback_t;
void fdt_callback(const char *path, const vector_t *cbs, const vector_t *props);
void fdt_traverse(const vector_t *cbs);
extern void *dtb_addr;