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 _LIBFDT_INTERNAL_H 329537Satgutier@umich.edu#define _LIBFDT_INTERNAL_H 339537Satgutier@umich.edu 349537Satgutier@umich.edu#include <fdt.h> 359537Satgutier@umich.edu 369537Satgutier@umich.edu#define FDT_ALIGN(x, a) (((x) + (a) - 1) & ~((a) - 1)) 379537Satgutier@umich.edu#define FDT_TAGALIGN(x) (FDT_ALIGN((x), FDT_TAGSIZE)) 389537Satgutier@umich.edu 399537Satgutier@umich.edu#define FDT_CHECK_HEADER(fdt) \ 409537Satgutier@umich.edu { \ 419537Satgutier@umich.edu int err; \ 429537Satgutier@umich.edu if ((err = fdt_check_header(fdt)) != 0) \ 439537Satgutier@umich.edu return err; \ 449537Satgutier@umich.edu } 459537Satgutier@umich.edu 469537Satgutier@umich.eduint _fdt_check_node_offset(const void *fdt, int offset); 479537Satgutier@umich.eduint _fdt_check_prop_offset(const void *fdt, int offset); 489537Satgutier@umich.educonst char *_fdt_find_string(const char *strtab, int tabsize, const char *s); 499537Satgutier@umich.eduint _fdt_node_end_offset(void *fdt, int nodeoffset); 509537Satgutier@umich.edu 519537Satgutier@umich.edustatic inline const void *_fdt_offset_ptr(const void *fdt, int offset) 529537Satgutier@umich.edu{ 539537Satgutier@umich.edu return (const char *)fdt + fdt_off_dt_struct(fdt) + offset; 549537Satgutier@umich.edu} 559537Satgutier@umich.edu 569537Satgutier@umich.edustatic inline void *_fdt_offset_ptr_w(void *fdt, int offset) 579537Satgutier@umich.edu{ 589537Satgutier@umich.edu return (void *)(uintptr_t)_fdt_offset_ptr(fdt, offset); 599537Satgutier@umich.edu} 609537Satgutier@umich.edu 619537Satgutier@umich.edustatic inline const struct fdt_reserve_entry *_fdt_mem_rsv(const void *fdt, int n) 629537Satgutier@umich.edu{ 639537Satgutier@umich.edu const struct fdt_reserve_entry *rsv_table = 649537Satgutier@umich.edu (const struct fdt_reserve_entry *) 659537Satgutier@umich.edu ((const char *)fdt + fdt_off_mem_rsvmap(fdt)); 669537Satgutier@umich.edu 679537Satgutier@umich.edu return rsv_table + n; 689537Satgutier@umich.edu} 699537Satgutier@umich.edustatic inline struct fdt_reserve_entry *_fdt_mem_rsv_w(void *fdt, int n) 709537Satgutier@umich.edu{ 719537Satgutier@umich.edu return (void *)(uintptr_t)_fdt_mem_rsv(fdt, n); 729537Satgutier@umich.edu} 739537Satgutier@umich.edu 749537Satgutier@umich.edu#define FDT_SW_MAGIC (~FDT_MAGIC) 759537Satgutier@umich.edu 769537Satgutier@umich.edu#endif /* _LIBFDT_INTERNAL_H */ 77