1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * (C) Copyright 2018 Linaro Ltd. 3*4882a593Smuzhiyun * Sam Protsenko <semen.protsenko@linaro.org> 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #ifndef IMAGE_ANDROID_DT_H 9*4882a593Smuzhiyun #define IMAGE_ANDROID_DT_H 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #include <linux/types.h> 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun bool android_dt_check_header(ulong hdr_addr); 14*4882a593Smuzhiyun bool android_dt_get_fdt_by_index(ulong hdr_addr, u32 index, ulong *addr, 15*4882a593Smuzhiyun u32 *size); 16*4882a593Smuzhiyun int android_dt_get_count(ulong hdr_addr); 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun #if !defined(CONFIG_SPL_BUILD) 19*4882a593Smuzhiyun void android_dt_print_contents(ulong hdr_addr); 20*4882a593Smuzhiyun #endif 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun /** 23*4882a593Smuzhiyun * dt_for_each_entry() - iterate over all dt entry of DT image 24*4882a593Smuzhiyun * 25*4882a593Smuzhiyun * @entry: struct dt_table_entry pointing to entry address 26*4882a593Smuzhiyun * @hdr: struct dt_table_header pointing to hdr address 27*4882a593Smuzhiyun * @idx: temporary index variant 28*4882a593Smuzhiyun * 29*4882a593Smuzhiyun * This is a wrapper around a for loop and is used like so: 30*4882a593Smuzhiyun * 31*4882a593Smuzhiyun * struct dt_table_header *hdr; 32*4882a593Smuzhiyun * struct dt_table_entry *entry; 33*4882a593Smuzhiyun * int index; 34*4882a593Smuzhiyun * 35*4882a593Smuzhiyun * ...... 36*4882a593Smuzhiyun * 37*4882a593Smuzhiyun * dt_for_each_entry(entry, hdr, index) { 38*4882a593Smuzhiyun * Use entry 39*4882a593Smuzhiyun * ... 40*4882a593Smuzhiyun * } 41*4882a593Smuzhiyun * 42*4882a593Smuzhiyun */ 43*4882a593Smuzhiyun #define dt_for_each_entry(entry, hdr, idx) \ 44*4882a593Smuzhiyun for (idx = 0, android_dt_get_fdt_by_index((ulong)hdr, idx, (ulong *)&entry, NULL); \ 45*4882a593Smuzhiyun idx < android_dt_get_count((ulong)hdr); \ 46*4882a593Smuzhiyun idx++, android_dt_get_fdt_by_index((ulong)hdr, idx, (ulong *)&entry, NULL)) 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun #endif /* IMAGE_ANDROID_DT_H */ 49