All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v3 00/20] fdt: Move to the new upstream pylibfdt library
@ 2017-05-27 13:38 Simon Glass
  2017-05-27 13:38 ` [U-Boot] [PATCH v3 01/20] fdt: Add Python bindings Simon Glass
                   ` (19 more replies)
  0 siblings, 20 replies; 21+ messages in thread
From: Simon Glass @ 2017-05-27 13:38 UTC (permalink / raw)
  To: u-boot

Python libfdt bindings have recently been accepted upstream. While the
internals have changed a fair bit most of the API remains the same. Still,
a few functions are different from how they are used in U-Boot so changes
are needed to make this work.

At present in U-Boot there are two libraries for accessing a device tree
file:

- FdtNormal which uses U-Boot's own Python bindings
- FdtFallback which uses the fdtget command-line utility

The latter is not a great solution: it is fairly slow since the DT is
re-read for every access and it cannot provide DT offsets or packing of
the DT.

In addition, U-Boot now builds the libfdt module if swig is available,
meaning that the fallback module is not used in that case.

Finally, at some point in the future distributions may start packaging the
libfdt Python module and it will be available without U-Boot needing to
build it itself.

Therefore it seems like a good idea to take this opportunity to drop the
fallback module and just require that the Python libfdt bindings be
present (at least if need by the build).

The bindings are needed in two situations:
- When dtoc is used to convert a device tree into C code. This is enabled
    by CONFIG_SPL_OF_PLATDATA
- When binman is used to produce a firmware image. This is used on all x86
    and sunxi boards at present

This series:
- Plumbs in building the Python libfdt module to the U-Boot build system
- Ensures that the module is always built if needed, print an error if
    swig is not available (and thus the module cannot be built)
- Allows use of a libfdt.py module already installed on the machine
- Drops the FdtFallback support
- Moves fdt.h and libfdt.h into lib/libfdt to aid with syncing with
    upstream, building the Python bindings and to keep the code together
- Merges Fdt and FdtNormal to simplify the code
- Adjusts the Fdt library to work with the new libfdt module
- Adds a few more tests to check access to properties in the DT
- Adjusts binman and dtoc to work with the new approach

It should be possible to easily sync libfdt's Python bindings with U-Boot
in the future, as development there proceeds.

Changes in v3:
- More machinations to avoid touching the source directory
- Drop changes which are now in any earlier patch

Changes in v2:
- Fix building when srcpath is ".."

Simon Glass (20):
  fdt: Add Python bindings
  pci: Correct cast for sandbox
  fdt: Correct cast for sandbox in fdtdec_setup_memory_size()
  fdt: Use SPDX format for licenses in the libfdt headers
  fdt: Move header files into lib/libfdt
  fdt: Allow swig options to be provided by Makefile
  fdt: Add all source files to the libfdt build
  fdt: Rename existing python libfdt module
  fdt: Build the new python libfdt module
  fdt: Update fdt_test to use 'dt' instead of 'fdt'
  fdt: dtoc: Add a full set of property tests
  fdt: Support use of the new python libfdt library
  fdt: Makefile: Build python libfdt library if needed
  fdt: Stop building the old python libfdt module
  fdt: Drop use of the legacy libfdt python module
  fdt: Drop fdt_fallback library
  binman: Drop a special case related to fdt_fallback
  fdt: Merge fdt_normal with its base class
  binman: Rename fdt variable to dtb
  fdt: Drop fdt_select.py

 Makefile                                    |   16 +-
 cmd/pci.c                                   |    3 +-
 include/fdt.h                               |  112 +-
 include/libfdt.h                            | 2138 +-------------------------
 lib/fdtdec.c                                |    3 +-
 lib/libfdt/fdt.h                            |   67 +
 lib/libfdt/libfdt.h                         | 2144 +++++++++++++++++++++++++++
 lib/libfdt/libfdt.swig                      |  113 --
 lib/libfdt/pylibfdt/libfdt.i                |  389 +++++
 lib/libfdt/pylibfdt/setup.py                |  123 ++
 lib/libfdt/setup.py                         |   38 -
 scripts/Makefile.spl                        |   17 +-
 tools/Makefile                              |   54 +-
 tools/binman/binman.py                      |    3 +
 tools/binman/control.py                     |   12 +-
 tools/binman/etype/u_boot_dtb_with_ucode.py |   24 +-
 tools/binman/fdt_test.py                    |   64 +-
 tools/binman/func_test.py                   |   48 +-
 tools/binman/test/45_prop_test.dts          |   23 +
 tools/dtoc/dtoc.py                          |    3 +-
 tools/dtoc/fdt.py                           |  183 ++-
 tools/dtoc/fdt_fallback.py                  |  181 ---
 tools/dtoc/fdt_normal.py                    |  225 ---
 tools/dtoc/fdt_select.py                    |   36 -
 24 files changed, 3060 insertions(+), 2959 deletions(-)
 create mode 100644 lib/libfdt/fdt.h
 create mode 100644 lib/libfdt/libfdt.h
 delete mode 100644 lib/libfdt/libfdt.swig
 create mode 100644 lib/libfdt/pylibfdt/libfdt.i
 create mode 100755 lib/libfdt/pylibfdt/setup.py
 delete mode 100644 lib/libfdt/setup.py
 create mode 100644 tools/binman/test/45_prop_test.dts
 delete mode 100644 tools/dtoc/fdt_fallback.py
 delete mode 100644 tools/dtoc/fdt_normal.py
 delete mode 100644 tools/dtoc/fdt_select.py

-- 
2.13.0.219.gdb65acc882-goog

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2017-05-27 13:38 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-27 13:38 [U-Boot] [PATCH v3 00/20] fdt: Move to the new upstream pylibfdt library Simon Glass
2017-05-27 13:38 ` [U-Boot] [PATCH v3 01/20] fdt: Add Python bindings Simon Glass
2017-05-27 13:38 ` [U-Boot] [PATCH v3 02/20] pci: Correct cast for sandbox Simon Glass
2017-05-27 13:38 ` [U-Boot] [PATCH v3 03/20] fdt: Correct cast for sandbox in fdtdec_setup_memory_size() Simon Glass
2017-05-27 13:38 ` [U-Boot] [PATCH v3 04/20] fdt: Use SPDX format for licenses in the libfdt headers Simon Glass
2017-05-27 13:38 ` [U-Boot] [PATCH v3 05/20] fdt: Move header files into lib/libfdt Simon Glass
2017-05-27 13:38 ` [U-Boot] [PATCH v3 06/20] fdt: Allow swig options to be provided by Makefile Simon Glass
2017-05-27 13:38 ` [U-Boot] [PATCH v3 07/20] fdt: Add all source files to the libfdt build Simon Glass
2017-05-27 13:38 ` [U-Boot] [PATCH v3 08/20] fdt: Rename existing python libfdt module Simon Glass
2017-05-27 13:38 ` [U-Boot] [PATCH v3 09/20] fdt: Build the new " Simon Glass
2017-05-27 13:38 ` [U-Boot] [PATCH v3 10/20] fdt: Update fdt_test to use 'dt' instead of 'fdt' Simon Glass
2017-05-27 13:38 ` [U-Boot] [PATCH v3 11/20] fdt: dtoc: Add a full set of property tests Simon Glass
2017-05-27 13:38 ` [U-Boot] [PATCH v3 12/20] fdt: Support use of the new python libfdt library Simon Glass
2017-05-27 13:38 ` [U-Boot] [PATCH v3 13/20] fdt: Makefile: Build python libfdt library if needed Simon Glass
2017-05-27 13:38 ` [U-Boot] [PATCH v3 14/20] fdt: Stop building the old python libfdt module Simon Glass
2017-05-27 13:38 ` [U-Boot] [PATCH v3 15/20] fdt: Drop use of the legacy libfdt python module Simon Glass
2017-05-27 13:38 ` [U-Boot] [PATCH v3 16/20] fdt: Drop fdt_fallback library Simon Glass
2017-05-27 13:38 ` [U-Boot] [PATCH v3 17/20] binman: Drop a special case related to fdt_fallback Simon Glass
2017-05-27 13:38 ` [U-Boot] [PATCH v3 18/20] fdt: Merge fdt_normal with its base class Simon Glass
2017-05-27 13:38 ` [U-Boot] [PATCH v3 19/20] binman: Rename fdt variable to dtb Simon Glass
2017-05-27 13:38 ` [U-Boot] [PATCH v3 20/20] fdt: Drop fdt_select.py Simon Glass

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.