2016-07-26 00:59:02 +00:00
|
|
|
#!/usr/bin/python
|
|
|
|
#
|
|
|
|
# Copyright (C) 2016 Google, Inc
|
|
|
|
# Written by Simon Glass <sjg@chromium.org>
|
|
|
|
#
|
|
|
|
# SPDX-License-Identifier: GPL-2.0+
|
|
|
|
#
|
|
|
|
|
2016-09-25 21:52:19 +00:00
|
|
|
import fdt_fallback
|
|
|
|
|
2016-07-26 00:59:02 +00:00
|
|
|
# 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:
|
2016-07-26 00:59:04 +00:00
|
|
|
import fdt_normal
|
2016-07-26 00:59:02 +00:00
|
|
|
have_libfdt = True
|
|
|
|
except ImportError:
|
|
|
|
have_libfdt = False
|
|
|
|
|
2016-09-25 21:52:19 +00:00
|
|
|
force_fallback = False
|
|
|
|
|
|
|
|
def FdtScan(fname, _force_fallback=False):
|
2016-07-26 00:59:02 +00:00
|
|
|
"""Returns a new Fdt object from the implementation we are using"""
|
2016-09-25 21:52:19 +00:00
|
|
|
if have_libfdt and not force_fallback and not _force_fallback:
|
2016-07-26 00:59:04 +00:00
|
|
|
dtb = fdt_normal.FdtNormal(fname)
|
|
|
|
else:
|
|
|
|
dtb = fdt_fallback.FdtFallback(fname)
|
2016-07-26 00:59:02 +00:00
|
|
|
dtb.Scan()
|
|
|
|
return dtb
|
2016-09-25 21:52:19 +00:00
|
|
|
|
|
|
|
def UseFallback(fallback):
|
|
|
|
global force_fallback
|
|
|
|
|
|
|
|
old_val = force_fallback
|
|
|
|
force_fallback = fallback
|
|
|
|
return old_val
|