19537Satgutier@umich.edu/*
29537Satgutier@umich.edu * libfdt - Flat Device Tree manipulation
39537Satgutier@umich.edu * Copyright (C) 2006 David Gibson, IBM Corporation.
49537Satgutier@umich.edu *
59537Satgutier@umich.edu *     Redistribution and use in source and binary forms, with or
69537Satgutier@umich.edu *     without modification, are permitted provided that the following
79537Satgutier@umich.edu *     conditions are met:
89537Satgutier@umich.edu *
99537Satgutier@umich.edu *     1. Redistributions of source code must retain the above
109537Satgutier@umich.edu *        copyright notice, this list of conditions and the following
119537Satgutier@umich.edu *        disclaimer.
129537Satgutier@umich.edu *     2. Redistributions in binary form must reproduce the above
139537Satgutier@umich.edu *        copyright notice, this list of conditions and the following
149537Satgutier@umich.edu *        disclaimer in the documentation and/or other materials
159537Satgutier@umich.edu *        provided with the distribution.
169537Satgutier@umich.edu *
179537Satgutier@umich.edu *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
189537Satgutier@umich.edu *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
199537Satgutier@umich.edu *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
209537Satgutier@umich.edu *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
219537Satgutier@umich.edu *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
229537Satgutier@umich.edu *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
239537Satgutier@umich.edu *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
249537Satgutier@umich.edu *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
259537Satgutier@umich.edu *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
269537Satgutier@umich.edu *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
279537Satgutier@umich.edu *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
289537Satgutier@umich.edu *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
299537Satgutier@umich.edu *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
309537Satgutier@umich.edu */
319537Satgutier@umich.edu#ifndef _FDT_H
329537Satgutier@umich.edu#define _FDT_H
339537Satgutier@umich.edu
349537Satgutier@umich.edu#ifdef __cplusplus
359537Satgutier@umich.eduextern "C" {
369537Satgutier@umich.edu#endif
379537Satgutier@umich.edu
389537Satgutier@umich.edu#ifndef __ASSEMBLY__
399537Satgutier@umich.edu
409537Satgutier@umich.edu#include "libfdt_env.h"
419537Satgutier@umich.edu
429537Satgutier@umich.edustruct fdt_header {
439537Satgutier@umich.edu        fdt32_t magic;			 /* magic word FDT_MAGIC */
449537Satgutier@umich.edu        fdt32_t totalsize;		 /* total size of DT block */
459537Satgutier@umich.edu        fdt32_t off_dt_struct;		 /* offset to structure */
469537Satgutier@umich.edu        fdt32_t off_dt_strings;		 /* offset to strings */
479537Satgutier@umich.edu        fdt32_t off_mem_rsvmap;		 /* offset to memory reserve map */
489537Satgutier@umich.edu        fdt32_t version;		 /* format version */
499537Satgutier@umich.edu        fdt32_t last_comp_version;	 /* last compatible version */
509537Satgutier@umich.edu
519537Satgutier@umich.edu        /* version 2 fields below */
529537Satgutier@umich.edu        fdt32_t boot_cpuid_phys;	 /* Which physical CPU id we're
539537Satgutier@umich.edu                                            booting on */
549537Satgutier@umich.edu        /* version 3 fields below */
559537Satgutier@umich.edu        fdt32_t size_dt_strings;	 /* size of the strings block */
569537Satgutier@umich.edu
579537Satgutier@umich.edu        /* version 17 fields below */
589537Satgutier@umich.edu        fdt32_t size_dt_struct;		 /* size of the structure block */
599537Satgutier@umich.edu};
609537Satgutier@umich.edu
619537Satgutier@umich.edustruct fdt_reserve_entry {
629537Satgutier@umich.edu        fdt64_t address;
639537Satgutier@umich.edu        fdt64_t size;
649537Satgutier@umich.edu};
659537Satgutier@umich.edu
669537Satgutier@umich.edustruct fdt_node_header {
679537Satgutier@umich.edu        fdt32_t tag;
689537Satgutier@umich.edu        char name[0];
699537Satgutier@umich.edu};
709537Satgutier@umich.edu
719537Satgutier@umich.edustruct fdt_property {
729537Satgutier@umich.edu        fdt32_t tag;
739537Satgutier@umich.edu        fdt32_t len;
749537Satgutier@umich.edu        fdt32_t nameoff;
759537Satgutier@umich.edu        char data[0];
769537Satgutier@umich.edu};
779537Satgutier@umich.edu
789537Satgutier@umich.edu#endif /* !__ASSEMBLY */
799537Satgutier@umich.edu
809537Satgutier@umich.edu#define FDT_MAGIC	0xd00dfeed	/* 4: version, 4: total size */
819537Satgutier@umich.edu#define FDT_TAGSIZE	sizeof(fdt32_t)
829537Satgutier@umich.edu
839537Satgutier@umich.edu#define FDT_BEGIN_NODE	0x1		/* Start node: full name */
849537Satgutier@umich.edu#define FDT_END_NODE	0x2		/* End node */
859537Satgutier@umich.edu#define FDT_PROP	0x3		/* Property: name off,
869537Satgutier@umich.edu                                           size, content */
879537Satgutier@umich.edu#define FDT_NOP		0x4		/* nop */
889537Satgutier@umich.edu#define FDT_END		0x9
899537Satgutier@umich.edu
909537Satgutier@umich.edu#define FDT_V1_SIZE	(7*sizeof(fdt32_t))
919537Satgutier@umich.edu#define FDT_V2_SIZE	(FDT_V1_SIZE + sizeof(fdt32_t))
929537Satgutier@umich.edu#define FDT_V3_SIZE	(FDT_V2_SIZE + sizeof(fdt32_t))
939537Satgutier@umich.edu#define FDT_V16_SIZE	FDT_V3_SIZE
949537Satgutier@umich.edu#define FDT_V17_SIZE	(FDT_V16_SIZE + sizeof(fdt32_t))
959537Satgutier@umich.edu
969537Satgutier@umich.edu#ifdef __cplusplus
979537Satgutier@umich.edu}
989537Satgutier@umich.edu#endif
999537Satgutier@umich.edu
1009537Satgutier@umich.edu#endif /* _FDT_H */
101