On Wed, Jan 20, 2021 at 12:36:45PM +0530, Viresh Kumar wrote: > This was copied from external DTC repository long back and isn't used > anymore. Over that the dtc tool can be used to generate the dts source > back from the dtb. Remove the unused fdtdump.c file. > > Signed-off-by: Viresh Kumar Doesn't this make updating the kernel dtc from upstream needlessly more difficult? > --- > scripts/dtc/fdtdump.c | 163 ------------------------------------------ > 1 file changed, 163 deletions(-) > delete mode 100644 scripts/dtc/fdtdump.c > > diff --git a/scripts/dtc/fdtdump.c b/scripts/dtc/fdtdump.c > deleted file mode 100644 > index 7d460a50b513..000000000000 > --- a/scripts/dtc/fdtdump.c > +++ /dev/null > @@ -1,163 +0,0 @@ > -// SPDX-License-Identifier: GPL-2.0 > -/* > - * fdtdump.c - Contributed by Pantelis Antoniou > - */ > - > -#include > -#include > -#include > -#include > -#include > - > -#include > -#include > - > -#include "util.h" > - > -#define ALIGN(x, a) (((x) + ((a) - 1)) & ~((a) - 1)) > -#define PALIGN(p, a) ((void *)(ALIGN((unsigned long)(p), (a)))) > -#define GET_CELL(p) (p += 4, *((const uint32_t *)(p-4))) > - > -static void print_data(const char *data, int len) > -{ > - int i; > - const char *p = data; > - > - /* no data, don't print */ > - if (len == 0) > - return; > - > - if (util_is_printable_string(data, len)) { > - printf(" = \"%s\"", (const char *)data); > - } else if ((len % 4) == 0) { > - printf(" = <"); > - for (i = 0; i < len; i += 4) > - printf("0x%08x%s", fdt32_to_cpu(GET_CELL(p)), > - i < (len - 4) ? " " : ""); > - printf(">"); > - } else { > - printf(" = ["); > - for (i = 0; i < len; i++) > - printf("%02x%s", *p++, i < len - 1 ? " " : ""); > - printf("]"); > - } > -} > - > -static void dump_blob(void *blob) > -{ > - struct fdt_header *bph = blob; > - uint32_t off_mem_rsvmap = fdt32_to_cpu(bph->off_mem_rsvmap); > - uint32_t off_dt = fdt32_to_cpu(bph->off_dt_struct); > - uint32_t off_str = fdt32_to_cpu(bph->off_dt_strings); > - struct fdt_reserve_entry *p_rsvmap = > - (struct fdt_reserve_entry *)((char *)blob + off_mem_rsvmap); > - const char *p_struct = (const char *)blob + off_dt; > - const char *p_strings = (const char *)blob + off_str; > - uint32_t version = fdt32_to_cpu(bph->version); > - uint32_t totalsize = fdt32_to_cpu(bph->totalsize); > - uint32_t tag; > - const char *p, *s, *t; > - int depth, sz, shift; > - int i; > - uint64_t addr, size; > - > - depth = 0; > - shift = 4; > - > - printf("/dts-v1/;\n"); > - printf("// magic:\t\t0x%x\n", fdt32_to_cpu(bph->magic)); > - printf("// totalsize:\t\t0x%x (%d)\n", totalsize, totalsize); > - printf("// off_dt_struct:\t0x%x\n", off_dt); > - printf("// off_dt_strings:\t0x%x\n", off_str); > - printf("// off_mem_rsvmap:\t0x%x\n", off_mem_rsvmap); > - printf("// version:\t\t%d\n", version); > - printf("// last_comp_version:\t%d\n", > - fdt32_to_cpu(bph->last_comp_version)); > - if (version >= 2) > - printf("// boot_cpuid_phys:\t0x%x\n", > - fdt32_to_cpu(bph->boot_cpuid_phys)); > - > - if (version >= 3) > - printf("// size_dt_strings:\t0x%x\n", > - fdt32_to_cpu(bph->size_dt_strings)); > - if (version >= 17) > - printf("// size_dt_struct:\t0x%x\n", > - fdt32_to_cpu(bph->size_dt_struct)); > - printf("\n"); > - > - for (i = 0; ; i++) { > - addr = fdt64_to_cpu(p_rsvmap[i].address); > - size = fdt64_to_cpu(p_rsvmap[i].size); > - if (addr == 0 && size == 0) > - break; > - > - printf("/memreserve/ %llx %llx;\n", > - (unsigned long long)addr, (unsigned long long)size); > - } > - > - p = p_struct; > - while ((tag = fdt32_to_cpu(GET_CELL(p))) != FDT_END) { > - > - /* printf("tag: 0x%08x (%d)\n", tag, p - p_struct); */ > - > - if (tag == FDT_BEGIN_NODE) { > - s = p; > - p = PALIGN(p + strlen(s) + 1, 4); > - > - if (*s == '\0') > - s = "/"; > - > - printf("%*s%s {\n", depth * shift, "", s); > - > - depth++; > - continue; > - } > - > - if (tag == FDT_END_NODE) { > - depth--; > - > - printf("%*s};\n", depth * shift, ""); > - continue; > - } > - > - if (tag == FDT_NOP) { > - printf("%*s// [NOP]\n", depth * shift, ""); > - continue; > - } > - > - if (tag != FDT_PROP) { > - fprintf(stderr, "%*s ** Unknown tag 0x%08x\n", depth * shift, "", tag); > - break; > - } > - sz = fdt32_to_cpu(GET_CELL(p)); > - s = p_strings + fdt32_to_cpu(GET_CELL(p)); > - if (version < 16 && sz >= 8) > - p = PALIGN(p, 8); > - t = p; > - > - p = PALIGN(p + sz, 4); > - > - printf("%*s%s", depth * shift, "", s); > - print_data(t, sz); > - printf(";\n"); > - } > -} > - > - > -int main(int argc, char *argv[]) > -{ > - char *buf; > - > - if (argc < 2) { > - fprintf(stderr, "supply input filename\n"); > - return 5; > - } > - > - buf = utilfdt_read(argv[1]); > - if (buf) > - dump_blob(buf); > - else > - return 10; > - > - return 0; > -} -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson