summaryrefslogtreecommitdiff
path: root/tools/dtoc/fdt_select.py
blob: ea78c527fc1e0faa02d28420a7bb1dbe1175199c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/python
#
# Copyright (C) 2016 Google, Inc
# Written by Simon Glass <sjg@chromium.org>
#
# SPDX-License-Identifier:      GPL-2.0+
#

import fdt_fallback

# 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_normal
    have_libfdt = True
except ImportError:
    have_libfdt = False

force_fallback = False

def FdtScan(fname, _force_fallback=False):
    """Returns a new Fdt object from the implementation we are using"""
    if have_libfdt and not force_fallback and not _force_fallback:
        dtb = fdt_normal.FdtNormal(fname)
    else:
        dtb = fdt_fallback.FdtFallback(fname)
    dtb.Scan()
    return dtb

def UseFallback(fallback):
    global force_fallback

    old_val = force_fallback
    force_fallback = fallback
    return old_val