2018-02-27 17:40:38 -06:00
# ifndef FDT_H
# define FDT_H
2015-04-29 16:00:05 -05:00
/*
* libfdt - Flat Device Tree manipulation
* Copyright ( C ) 2006 David Gibson , IBM Corporation .
* Copyright 2012 Kim Phillips , Freescale Semiconductor .
*
* libfdt is dual licensed : you can use it either under the terms of
* the GPL , or the BSD license , at your option .
*
* a ) This library is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation ; either version 2 of the
* License , or ( at your option ) any later version .
*
* This library is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public
* License along with this library ; if not , write to the Free
* Software Foundation , Inc . , 51 Franklin St , Fifth Floor , Boston ,
* MA 02110 - 1301 USA
*
* Alternatively ,
*
* b ) Redistribution and use in source and binary forms , with or
* without modification , are permitted provided that the following
* conditions are met :
*
* 1. Redistributions of source code must retain the above
* copyright notice , this list of conditions and the following
* disclaimer .
* 2. Redistributions in binary form must reproduce the above
* copyright notice , this list of conditions and the following
* disclaimer in the documentation and / or other materials
* provided with the distribution .
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS " AS IS " AND ANY EXPRESS OR IMPLIED WARRANTIES ,
* INCLUDING , BUT NOT LIMITED TO , THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL ,
* SPECIAL , EXEMPLARY , OR CONSEQUENTIAL DAMAGES ( INCLUDING , BUT
* NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ;
* LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS INTERRUPTION )
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY , WHETHER IN
* CONTRACT , STRICT LIABILITY , OR TORT ( INCLUDING NEGLIGENCE OR
* OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE ,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
*/
2007-12-10 14:28:39 +11:00
# ifndef __ASSEMBLY__
struct fdt_header {
2015-04-29 16:00:05 -05:00
fdt32_t magic ; /* magic word FDT_MAGIC */
fdt32_t totalsize ; /* total size of DT block */
fdt32_t off_dt_struct ; /* offset to structure */
fdt32_t off_dt_strings ; /* offset to strings */
fdt32_t off_mem_rsvmap ; /* offset to memory reserve map */
fdt32_t version ; /* format version */
fdt32_t last_comp_version ; /* last compatible version */
2007-12-10 14:28:39 +11:00
/* version 2 fields below */
2015-04-29 16:00:05 -05:00
fdt32_t boot_cpuid_phys ; /* Which physical CPU id we're
2007-12-10 14:28:39 +11:00
booting on */
/* version 3 fields below */
2015-04-29 16:00:05 -05:00
fdt32_t size_dt_strings ; /* size of the strings block */
2007-12-10 14:28:39 +11:00
/* version 17 fields below */
2015-04-29 16:00:05 -05:00
fdt32_t size_dt_struct ; /* size of the structure block */
2007-12-10 14:28:39 +11:00
} ;
struct fdt_reserve_entry {
2015-04-29 16:00:05 -05:00
fdt64_t address ;
fdt64_t size ;
2007-12-10 14:28:39 +11:00
} ;
struct fdt_node_header {
2015-04-29 16:00:05 -05:00
fdt32_t tag ;
2007-12-10 14:28:39 +11:00
char name [ 0 ] ;
} ;
struct fdt_property {
2015-04-29 16:00:05 -05:00
fdt32_t tag ;
fdt32_t len ;
fdt32_t nameoff ;
2007-12-10 14:28:39 +11:00
char data [ 0 ] ;
} ;
# endif /* !__ASSEMBLY */
# define FDT_MAGIC 0xd00dfeed /* 4: version, 4: total size */
2015-04-29 16:00:05 -05:00
# define FDT_TAGSIZE sizeof(fdt32_t)
2007-12-10 14:28:39 +11:00
# define FDT_BEGIN_NODE 0x1 /* Start node: full name */
# define FDT_END_NODE 0x2 /* End node */
# define FDT_PROP 0x3 / * Property: name off,
size , content */
# define FDT_NOP 0x4 /* nop */
# define FDT_END 0x9
2015-04-29 16:00:05 -05:00
# define FDT_V1_SIZE (7*sizeof(fdt32_t))
# define FDT_V2_SIZE (FDT_V1_SIZE + sizeof(fdt32_t))
# define FDT_V3_SIZE (FDT_V2_SIZE + sizeof(fdt32_t))
2007-12-10 14:28:39 +11:00
# define FDT_V16_SIZE FDT_V3_SIZE
2015-04-29 16:00:05 -05:00
# define FDT_V17_SIZE (FDT_V16_SIZE + sizeof(fdt32_t))
2007-12-10 14:28:39 +11:00
2018-02-27 17:40:38 -06:00
# endif /* FDT_H */