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