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