From ba482585661431dde74eb69c7a94ac2d5a772d9f Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Mon, 25 Jul 2016 18:59:02 -0600 Subject: [PATCH] dtoc: Move the fdt library selection into fdt_select Rather than have dtc worry about which fdt library to use, move this into a helper file. Add a function which creates a new Fdt object and scans it, regardless of the implementation. Signed-off-by: Simon Glass --- tools/dtoc/dtoc.py | 18 +++--------------- tools/dtoc/fdt_select.py | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+), 15 deletions(-) create mode 100644 tools/dtoc/fdt_select.py diff --git a/tools/dtoc/dtoc.py b/tools/dtoc/dtoc.py index e9ab46f706..10f6a12578 100755 --- a/tools/dtoc/dtoc.py +++ b/tools/dtoc/dtoc.py @@ -12,23 +12,12 @@ import os import struct import sys -import fdt_util - # Bring in the patman libraries our_path = os.path.dirname(os.path.realpath(__file__)) sys.path.append(os.path.join(our_path, '../patman')) -# Bring in either the normal fdt library (which relies on libfdt) or the -# fallback one (which uses fdtget and is slower). Both provide the same -# interfface for this file to use. -try: - from fdt import Fdt - import fdt - have_libfdt = True -except ImportError: - have_libfdt = False - from fdt_fallback import Fdt - import fdt_fallback as fdt +import fdt_select +import fdt_util # When we see these properties we ignore them - i.e. do not create a structure member PROP_IGNORE_LIST = [ @@ -177,8 +166,7 @@ class DtbPlatdata: Once this is done, self.fdt.GetRoot() can be called to obtain the device tree root node, and progress from there. """ - self.fdt = Fdt(self._dtb_fname) - self.fdt.Scan() + self.fdt = fdt_select.FdtScan(self._dtb_fname) def ScanTree(self): """Scan the device tree for useful information diff --git a/tools/dtoc/fdt_select.py b/tools/dtoc/fdt_select.py new file mode 100644 index 0000000000..5aff297c8f --- /dev/null +++ b/tools/dtoc/fdt_select.py @@ -0,0 +1,23 @@ +#!/usr/bin/python +# +# Copyright (C) 2016 Google, Inc +# Written by Simon Glass +# +# SPDX-License-Identifier: GPL-2.0+ +# + +# Bring in either the normal fdt library (which relies on libfdt) or the +# fallback one (which uses fdtget and is slower). Both provide the same +# interface for this file to use. +try: + import fdt + have_libfdt = True +except ImportError: + have_libfdt = False + import fdt_fallback as fdt + +def FdtScan(fname): + """Returns a new Fdt object from the implementation we are using""" + dtb = fdt.Fdt(fname) + dtb.Scan() + return dtb -- 2.39.2