2007-03-31 23:59:59 +08:00
|
|
|
#ifndef _LIBFDT_INTERNAL_H
|
|
|
|
#define _LIBFDT_INTERNAL_H
|
|
|
|
/*
|
|
|
|
* libfdt - Flat Device Tree manipulation
|
|
|
|
* Copyright (C) 2006 David Gibson, IBM Corporation.
|
2013-07-27 07:12:38 +08:00
|
|
|
* SPDX-License-Identifier: GPL-2.0+ BSD-2-Clause
|
2007-03-31 23:59:59 +08:00
|
|
|
*/
|
|
|
|
#include <fdt.h>
|
|
|
|
|
2008-07-09 12:10:24 +08:00
|
|
|
#define FDT_ALIGN(x, a) (((x) + (a) - 1) & ~((a) - 1))
|
|
|
|
#define FDT_TAGALIGN(x) (FDT_ALIGN((x), FDT_TAGSIZE))
|
2007-03-31 23:59:59 +08:00
|
|
|
|
2008-07-09 12:10:24 +08:00
|
|
|
#define FDT_CHECK_HEADER(fdt) \
|
2008-02-18 15:06:31 +08:00
|
|
|
{ \
|
2014-07-30 17:59:03 +08:00
|
|
|
int __err; \
|
|
|
|
if ((__err = fdt_check_header(fdt)) != 0) \
|
|
|
|
return __err; \
|
2008-02-18 15:06:31 +08:00
|
|
|
}
|
|
|
|
|
2008-05-20 15:19:11 +08:00
|
|
|
int _fdt_check_node_offset(const void *fdt, int offset);
|
2010-03-09 14:39:14 +08:00
|
|
|
int _fdt_check_prop_offset(const void *fdt, int offset);
|
2007-03-31 23:59:59 +08:00
|
|
|
const char *_fdt_find_string(const char *strtab, int tabsize, const char *s);
|
|
|
|
int _fdt_node_end_offset(void *fdt, int nodeoffset);
|
|
|
|
|
2007-10-25 00:04:22 +08:00
|
|
|
static inline const void *_fdt_offset_ptr(const void *fdt, int offset)
|
|
|
|
{
|
2008-07-07 08:10:48 +08:00
|
|
|
return (const char *)fdt + fdt_off_dt_struct(fdt) + offset;
|
2007-10-25 00:04:22 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
static inline void *_fdt_offset_ptr_w(void *fdt, int offset)
|
|
|
|
{
|
2008-07-07 08:14:15 +08:00
|
|
|
return (void *)(uintptr_t)_fdt_offset_ptr(fdt, offset);
|
2007-10-25 00:04:22 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
static inline const struct fdt_reserve_entry *_fdt_mem_rsv(const void *fdt, int n)
|
|
|
|
{
|
2008-07-07 08:14:15 +08:00
|
|
|
const struct fdt_reserve_entry *rsv_table =
|
|
|
|
(const struct fdt_reserve_entry *)
|
2008-07-07 08:10:48 +08:00
|
|
|
((const char *)fdt + fdt_off_mem_rsvmap(fdt));
|
2007-10-25 00:04:22 +08:00
|
|
|
|
|
|
|
return rsv_table + n;
|
|
|
|
}
|
|
|
|
static inline struct fdt_reserve_entry *_fdt_mem_rsv_w(void *fdt, int n)
|
2007-03-31 23:59:59 +08:00
|
|
|
{
|
2008-07-07 08:14:15 +08:00
|
|
|
return (void *)(uintptr_t)_fdt_mem_rsv(fdt, n);
|
2007-03-31 23:59:59 +08:00
|
|
|
}
|
|
|
|
|
2008-07-09 12:10:24 +08:00
|
|
|
#define FDT_SW_MAGIC (~FDT_MAGIC)
|
2007-03-31 23:59:59 +08:00
|
|
|
|
|
|
|
#endif /* _LIBFDT_INTERNAL_H */
|