fdt_select.py 905 B

123456789101112131415161718192021222324252627282930313233343536
  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. import fdt_fallback
  9. # Bring in either the normal fdt library (which relies on libfdt) or the
  10. # fallback one (which uses fdtget and is slower). Both provide the same
  11. # interface for this file to use.
  12. try:
  13. import fdt_normal
  14. have_libfdt = True
  15. except ImportError:
  16. have_libfdt = False
  17. force_fallback = False
  18. def FdtScan(fname, _force_fallback=False):
  19. """Returns a new Fdt object from the implementation we are using"""
  20. if have_libfdt and not force_fallback and not _force_fallback:
  21. dtb = fdt_normal.FdtNormal(fname)
  22. else:
  23. dtb = fdt_fallback.FdtFallback(fname)
  24. dtb.Scan()
  25. return dtb
  26. def UseFallback(fallback):
  27. global force_fallback
  28. old_val = force_fallback
  29. force_fallback = fallback
  30. return old_val