Branch data Line data Source code
1 : : // SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
2 : : /* Copyright 2015-2017 IBM Corp. */
3 : :
4 : : #include <skiboot.h>
5 : : #include <stdlib.h>
6 : :
7 : : #include "../include/device.h"
8 : :
9 : : /* dump_dt() is used in hdata/test/hdata_to_dt.c and core/test/run-device.c
10 : : * this file is directly #included in both
11 : : */
12 : :
13 : 463 : static void indent_num(unsigned indent)
14 : : {
15 : : unsigned int i;
16 : :
17 : 3115 : for (i = 0; i < indent; i++)
18 : 2652 : putc(' ', stdout);
19 : 463 : }
20 : :
21 : 0 : static void dump_val(unsigned indent, const void *prop, size_t size)
22 : : {
23 : : size_t i;
24 : 0 : int width = 78 - indent;
25 : :
26 : 0 : for (i = 0; i < size; i++) {
27 : 0 : printf("%02x", ((unsigned char *)prop)[i]);
28 : 0 : width -= 2;
29 : 0 : if(width < 2) {
30 : 0 : printf("\n");
31 : 0 : indent_num(indent);
32 : 0 : width = 80 - indent;
33 : : }
34 : : }
35 : 0 : }
36 : :
37 : : void dump_dt(const struct dt_node *root, unsigned indent, bool show_props);
38 : :
39 : 463 : void dump_dt(const struct dt_node *root, unsigned indent, bool show_props)
40 : : {
41 : : const struct dt_node *i;
42 : : const struct dt_property *p;
43 : :
44 : 463 : indent_num(indent);
45 : 463 : printf("node: %s\n", root->name);
46 : :
47 : 463 : if (show_props) {
48 : 1 : list_for_each(&root->properties, p, list) {
49 : 0 : indent_num(indent);
50 : 0 : printf("prop: %s size: %zu val: ", p->name, p->len);
51 : 0 : dump_val(indent, p->prop, p->len);
52 : 0 : printf("\n");
53 : : }
54 : : }
55 : :
56 : 915 : list_for_each(&root->children, i, list)
57 : 452 : dump_dt(i, indent + 2, show_props);
58 : 463 : }
59 : :
|