]> git.proxmox.com Git - mirror_edk2.git/blame - EmbeddedPkg/Library/FdtLib/libfdt_internal.h
EmbeddedPkg/FdtLib: Update FdtLib to v1.4.5
[mirror_edk2.git] / EmbeddedPkg / Library / FdtLib / libfdt_internal.h
CommitLineData
1e57a462 1#ifndef _LIBFDT_INTERNAL_H\r
2#define _LIBFDT_INTERNAL_H\r
3/*\r
4 * libfdt - Flat Device Tree manipulation\r
5 * Copyright (C) 2006 David Gibson, IBM Corporation.\r
6 *\r
7 * libfdt is dual licensed: you can use it either under the terms of\r
8 * the GPL, or the BSD license, at your option.\r
9 *\r
10 * a) This library is free software; you can redistribute it and/or\r
11 * modify it under the terms of the GNU General Public License as\r
12 * published by the Free Software Foundation; either version 2 of the\r
13 * License, or (at your option) any later version.\r
14 *\r
15 * This library is distributed in the hope that it will be useful,\r
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
18 * GNU General Public License for more details.\r
19 *\r
20 * You should have received a copy of the GNU General Public\r
21 * License along with this library; if not, write to the Free\r
22 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,\r
23 * MA 02110-1301 USA\r
24 *\r
25 * Alternatively,\r
26 *\r
27 * b) Redistribution and use in source and binary forms, with or\r
28 * without modification, are permitted provided that the following\r
29 * conditions are met:\r
30 *\r
31 * 1. Redistributions of source code must retain the above\r
32 * copyright notice, this list of conditions and the following\r
33 * disclaimer.\r
34 * 2. Redistributions in binary form must reproduce the above\r
35 * copyright notice, this list of conditions and the following\r
36 * disclaimer in the documentation and/or other materials\r
37 * provided with the distribution.\r
38 *\r
39 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\r
40 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,\r
41 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
42 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
43 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\r
44 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
45 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\r
46 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
47 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r
49 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\r
50 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\r
51 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
52 */\r
53#include <fdt.h>\r
54\r
55#define FDT_ALIGN(x, a) (((x) + (a) - 1) & ~((a) - 1))\r
56#define FDT_TAGALIGN(x) (FDT_ALIGN((x), FDT_TAGSIZE))\r
57\r
58#define FDT_CHECK_HEADER(fdt) \\r
59 { \\r
a0992390
PB
60 int __err; \\r
61 if ((__err = fdt_check_header(fdt)) != 0) \\r
62 return __err; \\r
1e57a462 63 }\r
64\r
65int _fdt_check_node_offset(const void *fdt, int offset);\r
66int _fdt_check_prop_offset(const void *fdt, int offset);\r
67const char *_fdt_find_string(const char *strtab, int tabsize, const char *s);\r
68int _fdt_node_end_offset(void *fdt, int nodeoffset);\r
69\r
70static inline const void *_fdt_offset_ptr(const void *fdt, int offset)\r
71{\r
72 return (const char *)fdt + fdt_off_dt_struct(fdt) + offset;\r
73}\r
74\r
75static inline void *_fdt_offset_ptr_w(void *fdt, int offset)\r
76{\r
77 return (void *)(uintptr_t)_fdt_offset_ptr(fdt, offset);\r
78}\r
79\r
80static inline const struct fdt_reserve_entry *_fdt_mem_rsv(const void *fdt, int n)\r
81{\r
82 const struct fdt_reserve_entry *rsv_table =\r
83 (const struct fdt_reserve_entry *)\r
84 ((const char *)fdt + fdt_off_mem_rsvmap(fdt));\r
85\r
86 return rsv_table + n;\r
87}\r
88static inline struct fdt_reserve_entry *_fdt_mem_rsv_w(void *fdt, int n)\r
89{\r
90 return (void *)(uintptr_t)_fdt_mem_rsv(fdt, n);\r
91}\r
92\r
93#define FDT_SW_MAGIC (~FDT_MAGIC)\r
94\r
95#endif /* _LIBFDT_INTERNAL_H */\r