]> git.ipfire.org Git - people/ms/u-boot.git/blame - tools/dtoc/dtoc.py
dtoc: Pass include_disabled explicitly
[people/ms/u-boot.git] / tools / dtoc / dtoc.py
CommitLineData
69f2ed77
SG
1#!/usr/bin/python
2#
3# Copyright (C) 2016 Google, Inc
4# Written by Simon Glass <sjg@chromium.org>
5#
6# SPDX-License-Identifier: GPL-2.0+
7#
8
14f5acfc
SG
9"""Device tree to C tool
10
11This tool converts a device tree binary file (.dtb) into two C files. The
12indent is to allow a C program to access data from the device tree without
13having to link against libfdt. By putting the data from the device tree into
14C structures, normal C code can be used. This helps to reduce the size of the
15compiled program.
16
17Dtoc produces two output files:
18
19 dt-structs.h - contains struct definitions
20 dt-platdata.c - contains data from the device tree using the struct
21 definitions, as well as U-Boot driver definitions.
22
23This tool is used in U-Boot to provide device tree data to SPL without
24increasing the code size of SPL. This supports the CONFIG_SPL_OF_PLATDATA
25options. For more information about the use of this options and tool please
26see doc/driver-model/of-plat.txt
27"""
28
7581c01a 29from optparse import OptionParser
69f2ed77
SG
30import os
31import sys
32
69f2ed77
SG
33# Bring in the patman libraries
34our_path = os.path.dirname(os.path.realpath(__file__))
35sys.path.append(os.path.join(our_path, '../patman'))
36
7581c01a 37import dtb_platdata
69f2ed77
SG
38
39
40if __name__ != "__main__":
41 pass
42
43parser = OptionParser()
44parser.add_option('-d', '--dtb-file', action='store',
45 help='Specify the .dtb input file')
46parser.add_option('--include-disabled', action='store_true',
47 help='Include disabled nodes')
48parser.add_option('-o', '--output', action='store', default='-',
49 help='Select output filename')
50(options, args) = parser.parse_args()
51
52if not args:
53 raise ValueError('Please specify a command: struct, platdata')
54
e36024b0 55plat = dtb_platdata.DtbPlatdata(options.dtb_file, options.include_disabled)
2be282ca
SG
56plat.scan_dtb()
57plat.scan_tree()
58plat.setup_output(options.output)
59structs = plat.scan_structs()
60plat.scan_phandles()
69f2ed77
SG
61
62for cmd in args[0].split(','):
63 if cmd == 'struct':
2be282ca 64 plat.generate_structs(structs)
69f2ed77 65 elif cmd == 'platdata':
2be282ca 66 plat.generate_tables()
69f2ed77
SG
67 else:
68 raise ValueError("Unknown command '%s': (use: struct, platdata)" % cmd)