1*5a485aa9Sskrll /* $NetBSD: fdt.h,v 1.1.1.3 2019/12/22 12:30:36 skrll Exp $ */ 2fc885a42Sskrll 3*5a485aa9Sskrll /* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */ 4*5a485aa9Sskrll #ifndef FDT_H 5*5a485aa9Sskrll #define FDT_H 66233fbe7Smacallan /* 76233fbe7Smacallan * libfdt - Flat Device Tree manipulation 86233fbe7Smacallan * Copyright (C) 2006 David Gibson, IBM Corporation. 96233fbe7Smacallan * Copyright 2012 Kim Phillips, Freescale Semiconductor. 106233fbe7Smacallan */ 116233fbe7Smacallan 126233fbe7Smacallan #ifndef __ASSEMBLY__ 136233fbe7Smacallan 146233fbe7Smacallan struct fdt_header { 156233fbe7Smacallan fdt32_t magic; /* magic word FDT_MAGIC */ 166233fbe7Smacallan fdt32_t totalsize; /* total size of DT block */ 176233fbe7Smacallan fdt32_t off_dt_struct; /* offset to structure */ 186233fbe7Smacallan fdt32_t off_dt_strings; /* offset to strings */ 196233fbe7Smacallan fdt32_t off_mem_rsvmap; /* offset to memory reserve map */ 206233fbe7Smacallan fdt32_t version; /* format version */ 216233fbe7Smacallan fdt32_t last_comp_version; /* last compatible version */ 226233fbe7Smacallan 236233fbe7Smacallan /* version 2 fields below */ 246233fbe7Smacallan fdt32_t boot_cpuid_phys; /* Which physical CPU id we're 256233fbe7Smacallan booting on */ 266233fbe7Smacallan /* version 3 fields below */ 276233fbe7Smacallan fdt32_t size_dt_strings; /* size of the strings block */ 286233fbe7Smacallan 296233fbe7Smacallan /* version 17 fields below */ 306233fbe7Smacallan fdt32_t size_dt_struct; /* size of the structure block */ 316233fbe7Smacallan }; 326233fbe7Smacallan 336233fbe7Smacallan struct fdt_reserve_entry { 346233fbe7Smacallan fdt64_t address; 356233fbe7Smacallan fdt64_t size; 366233fbe7Smacallan }; 376233fbe7Smacallan 386233fbe7Smacallan struct fdt_node_header { 396233fbe7Smacallan fdt32_t tag; 406233fbe7Smacallan char name[0]; 416233fbe7Smacallan }; 426233fbe7Smacallan 436233fbe7Smacallan struct fdt_property { 446233fbe7Smacallan fdt32_t tag; 456233fbe7Smacallan fdt32_t len; 466233fbe7Smacallan fdt32_t nameoff; 476233fbe7Smacallan char data[0]; 486233fbe7Smacallan }; 496233fbe7Smacallan 506233fbe7Smacallan #endif /* !__ASSEMBLY */ 516233fbe7Smacallan 526233fbe7Smacallan #define FDT_MAGIC 0xd00dfeed /* 4: version, 4: total size */ 536233fbe7Smacallan #define FDT_TAGSIZE sizeof(fdt32_t) 546233fbe7Smacallan 556233fbe7Smacallan #define FDT_BEGIN_NODE 0x1 /* Start node: full name */ 566233fbe7Smacallan #define FDT_END_NODE 0x2 /* End node */ 576233fbe7Smacallan #define FDT_PROP 0x3 /* Property: name off, 586233fbe7Smacallan size, content */ 596233fbe7Smacallan #define FDT_NOP 0x4 /* nop */ 606233fbe7Smacallan #define FDT_END 0x9 616233fbe7Smacallan 626233fbe7Smacallan #define FDT_V1_SIZE (7*sizeof(fdt32_t)) 636233fbe7Smacallan #define FDT_V2_SIZE (FDT_V1_SIZE + sizeof(fdt32_t)) 646233fbe7Smacallan #define FDT_V3_SIZE (FDT_V2_SIZE + sizeof(fdt32_t)) 656233fbe7Smacallan #define FDT_V16_SIZE FDT_V3_SIZE 666233fbe7Smacallan #define FDT_V17_SIZE (FDT_V16_SIZE + sizeof(fdt32_t)) 676233fbe7Smacallan 68*5a485aa9Sskrll #endif /* FDT_H */ 69