169f2ed77SSimon Glass#!/usr/bin/python 269f2ed77SSimon Glass# 369f2ed77SSimon Glass# Copyright (C) 2016 Google, Inc 469f2ed77SSimon Glass# Written by Simon Glass <sjg@chromium.org> 569f2ed77SSimon Glass# 669f2ed77SSimon Glass# SPDX-License-Identifier: GPL-2.0+ 769f2ed77SSimon Glass# 869f2ed77SSimon Glass 914f5acfcSSimon Glass"""Device tree to C tool 1014f5acfcSSimon Glass 1114f5acfcSSimon GlassThis tool converts a device tree binary file (.dtb) into two C files. The 1214f5acfcSSimon Glassindent is to allow a C program to access data from the device tree without 1314f5acfcSSimon Glasshaving to link against libfdt. By putting the data from the device tree into 1414f5acfcSSimon GlassC structures, normal C code can be used. This helps to reduce the size of the 1514f5acfcSSimon Glasscompiled program. 1614f5acfcSSimon Glass 1714f5acfcSSimon GlassDtoc produces two output files: 1814f5acfcSSimon Glass 1914f5acfcSSimon Glass dt-structs.h - contains struct definitions 2014f5acfcSSimon Glass dt-platdata.c - contains data from the device tree using the struct 2114f5acfcSSimon Glass definitions, as well as U-Boot driver definitions. 2214f5acfcSSimon Glass 2314f5acfcSSimon GlassThis tool is used in U-Boot to provide device tree data to SPL without 2414f5acfcSSimon Glassincreasing the code size of SPL. This supports the CONFIG_SPL_OF_PLATDATA 2514f5acfcSSimon Glassoptions. For more information about the use of this options and tool please 2614f5acfcSSimon Glasssee doc/driver-model/of-plat.txt 2714f5acfcSSimon Glass""" 2814f5acfcSSimon Glass 297581c01aSSimon Glassfrom optparse import OptionParser 3069f2ed77SSimon Glassimport os 3169f2ed77SSimon Glassimport sys 3269f2ed77SSimon Glass 3369f2ed77SSimon Glass# Bring in the patman libraries 3469f2ed77SSimon Glassour_path = os.path.dirname(os.path.realpath(__file__)) 3569f2ed77SSimon Glasssys.path.append(os.path.join(our_path, '../patman')) 3669f2ed77SSimon Glass 377581c01aSSimon Glassimport dtb_platdata 3869f2ed77SSimon Glass 3969f2ed77SSimon Glass 4069f2ed77SSimon Glassif __name__ != "__main__": 4169f2ed77SSimon Glass pass 4269f2ed77SSimon Glass 4369f2ed77SSimon Glassparser = OptionParser() 4469f2ed77SSimon Glassparser.add_option('-d', '--dtb-file', action='store', 4569f2ed77SSimon Glass help='Specify the .dtb input file') 4669f2ed77SSimon Glassparser.add_option('--include-disabled', action='store_true', 4769f2ed77SSimon Glass help='Include disabled nodes') 4869f2ed77SSimon Glassparser.add_option('-o', '--output', action='store', default='-', 4969f2ed77SSimon Glass help='Select output filename') 5069f2ed77SSimon Glass(options, args) = parser.parse_args() 5169f2ed77SSimon Glass 52*fa0ea5b0SSimon Glassdtb_platdata.run_steps(args, options.dtb_file, options.include_disabled, 53*fa0ea5b0SSimon Glass options.output) 54