mbox series

[U-Boot,v6,00/13] Add support for applications of overlays in SPL

Message ID 20191022143922.10205-1-jjhiblot@ti.com
Headers show
Series Add support for applications of overlays in SPL | expand

Message

Jean-Jacques Hiblot Oct. 22, 2019, 2:39 p.m. UTC
The purpose of this series is to provide the SPL with ability to apply
overlays for u-boot.

Our use-case is the support of the daughter boards of the AM65x and J721e
EVMs. In Linux, each board is supported by a unique overlay. The presence
of the boards is detected at runtime, and some useful features (like USB)
are implemented on those daughter boards. Instead of providing multiple
dtbs and fall in a combinatorial pit, we propose to use DT overlays.

On arm, if overlay are supported, this series increases the size of the SPL
by 3.2 kB.

Travis build : https://travis-ci.org/jjhiblot/u-boot/builds/600742163

Changes in v6:
- Instead of matching a overlay by the name of it's node. Try to match it
  first with the description, and then with the node's name. This allows
  to use makeimg to add the overlays to u-boot.img and not use a custom
  SPL_FIT_GENERATOR script

Changes in v5:
- Do not allocate the buffer if not needed (no overlay).
- Add a Kconfig option for the buffer size
- board_get_fit_loadable() returns an error code instead of a NULL string
  in case of failure
-reword commit log

Changes in v4:
- use CONFIG_IS_ENABLED() instead of #idef
- make sure that the temp buffer is freed in all cases
- Use the board driver infrastructure to get the image names from the
board code.
- Remove a patch that passed the board name to the FIT generator. If needed
the generator can get it from elsewhere
- Add a fix to not load the firmware twice (once as a firmware and once as
a loadable)

Changes in v3:
- Add a new config option: SPL_LOAD_FIT_APPLY_OVERLAY. By default, it is
not selected.
- removed the RFC prefix. This work will be needed soon by TI's AM65x
platform. and can probably benefit other modular platforms
- removed the last patch that provided an example of how to use this with
on a DRA76.
- removed the patch that made u-boot.img a symlink to u-boot.itb because
it breaks the build of many platforms (because files required to build the
ITB are missing)
- removed the patch to reduce the footprint of the am335x SPL. (already
merged)
- Made the boot flow more permissive (don't fail immediately if an overlay
is not present) and more verbose when an error occures
- handle the dependencies of the FIT generation in a more generic way
- use a dedicated kconfig option to enable the application of the overlays
by the SPL.

Changes in v2:
- depend on SPL_DM
- update the commit log
- reworked board_fit_get_additionnal_images() and how it used in spl_fit.c
- removed dtbo generation from dtso files and use .dts extension for the
  overlays
- add dynamic allocation usage in a separate patch
- defconfig change for the am335x_evm

Jean-Jacques Hiblot (12):
  spl: fit: don't load the firmware twice
  spl: fit: Make room in the FDT before applying overlays
  spl: fit: allocate a temporary buffer to load the overlays
  spl: fit: Do not fail immediately if an overlay is not available
  spl: fit: be more verbose when an error occurs when applying the
    overlays
  Makefile.lib: include /__symbols__ in dtb if
    SPL_LOAD_FIT_APPLY_OVERLAY is enabled
  spl: fit: constify the output parameter of spl_fit_get_image_name()
  drivers: board: Make the board drivers available in SPL
  drivers: board: Add get_fit_loadable()
  include: board: provide empty stubs when the BOARD option is not
    selected
  dts: Add support for adding DT overlays in u-boot.img
  spl: fit: Allow the board to tell if more images must be loaded from
    FIT

Michal Simek (1):
  spl: fit: Add support for applying DT overlay

 Kconfig                      |  18 +++++
 Makefile                     |   3 +-
 common/spl/spl_fit.c         | 151 ++++++++++++++++++++++++++++++++---
 drivers/Makefile             |   2 +-
 drivers/board/Kconfig        |   3 +
 drivers/board/Makefile       |   2 +-
 drivers/board/board-uclass.c |  11 +++
 dts/Kconfig                  |   8 ++
 include/board.h              |  74 +++++++++++++++++
 scripts/Makefile.lib         |   4 +
 10 files changed, 263 insertions(+), 13 deletions(-)

Comments

Jean-Jacques Hiblot Dec. 23, 2019, 4:24 p.m. UTC | #1
Tom, Simon,

gentle ping on this series. It has been posted for a long time and I did 
not push for it because I was working on other stuff. am654x and J7x  
SOCs will need this kind of feature.

Before sending a version rebased on latest u-boot, I would have liked to 
have your feeling on the series as a whole.

JJ



On 22/10/2019 16:39, Jean-Jacques Hiblot wrote:
> The purpose of this series is to provide the SPL with ability to apply
> overlays for u-boot.
>
> Our use-case is the support of the daughter boards of the AM65x and J721e
> EVMs. In Linux, each board is supported by a unique overlay. The presence
> of the boards is detected at runtime, and some useful features (like USB)
> are implemented on those daughter boards. Instead of providing multiple
> dtbs and fall in a combinatorial pit, we propose to use DT overlays.
>
> On arm, if overlay are supported, this series increases the size of the SPL
> by 3.2 kB.
>
> Travis build : https://travis-ci.org/jjhiblot/u-boot/builds/600742163
>
> Changes in v6:
> - Instead of matching a overlay by the name of it's node. Try to match it
>    first with the description, and then with the node's name. This allows
>    to use makeimg to add the overlays to u-boot.img and not use a custom
>    SPL_FIT_GENERATOR script
>
> Changes in v5:
> - Do not allocate the buffer if not needed (no overlay).
> - Add a Kconfig option for the buffer size
> - board_get_fit_loadable() returns an error code instead of a NULL string
>    in case of failure
> -reword commit log
>
> Changes in v4:
> - use CONFIG_IS_ENABLED() instead of #idef
> - make sure that the temp buffer is freed in all cases
> - Use the board driver infrastructure to get the image names from the
> board code.
> - Remove a patch that passed the board name to the FIT generator. If needed
> the generator can get it from elsewhere
> - Add a fix to not load the firmware twice (once as a firmware and once as
> a loadable)
>
> Changes in v3:
> - Add a new config option: SPL_LOAD_FIT_APPLY_OVERLAY. By default, it is
> not selected.
> - removed the RFC prefix. This work will be needed soon by TI's AM65x
> platform. and can probably benefit other modular platforms
> - removed the last patch that provided an example of how to use this with
> on a DRA76.
> - removed the patch that made u-boot.img a symlink to u-boot.itb because
> it breaks the build of many platforms (because files required to build the
> ITB are missing)
> - removed the patch to reduce the footprint of the am335x SPL. (already
> merged)
> - Made the boot flow more permissive (don't fail immediately if an overlay
> is not present) and more verbose when an error occures
> - handle the dependencies of the FIT generation in a more generic way
> - use a dedicated kconfig option to enable the application of the overlays
> by the SPL.
>
> Changes in v2:
> - depend on SPL_DM
> - update the commit log
> - reworked board_fit_get_additionnal_images() and how it used in spl_fit.c
> - removed dtbo generation from dtso files and use .dts extension for the
>    overlays
> - add dynamic allocation usage in a separate patch
> - defconfig change for the am335x_evm
>
> Jean-Jacques Hiblot (12):
>    spl: fit: don't load the firmware twice
>    spl: fit: Make room in the FDT before applying overlays
>    spl: fit: allocate a temporary buffer to load the overlays
>    spl: fit: Do not fail immediately if an overlay is not available
>    spl: fit: be more verbose when an error occurs when applying the
>      overlays
>    Makefile.lib: include /__symbols__ in dtb if
>      SPL_LOAD_FIT_APPLY_OVERLAY is enabled
>    spl: fit: constify the output parameter of spl_fit_get_image_name()
>    drivers: board: Make the board drivers available in SPL
>    drivers: board: Add get_fit_loadable()
>    include: board: provide empty stubs when the BOARD option is not
>      selected
>    dts: Add support for adding DT overlays in u-boot.img
>    spl: fit: Allow the board to tell if more images must be loaded from
>      FIT
>
> Michal Simek (1):
>    spl: fit: Add support for applying DT overlay
>
>   Kconfig                      |  18 +++++
>   Makefile                     |   3 +-
>   common/spl/spl_fit.c         | 151 ++++++++++++++++++++++++++++++++---
>   drivers/Makefile             |   2 +-
>   drivers/board/Kconfig        |   3 +
>   drivers/board/Makefile       |   2 +-
>   drivers/board/board-uclass.c |  11 +++
>   dts/Kconfig                  |   8 ++
>   include/board.h              |  74 +++++++++++++++++
>   scripts/Makefile.lib         |   4 +
>   10 files changed, 263 insertions(+), 13 deletions(-)
>
Simon Glass Dec. 30, 2019, 1:21 a.m. UTC | #2
Hi Jean-Jacques,

On Mon, 23 Dec 2019 at 09:25, Jean-Jacques Hiblot <jjhiblot@ti.com> wrote:
>
> Tom, Simon,
>
> gentle ping on this series. It has been posted for a long time and I did
> not push for it because I was working on other stuff. am654x and J7x
> SOCs will need this kind of feature.
>
> Before sending a version rebased on latest u-boot, I would have liked to
> have your feeling on the series as a whole.

It looks fine from my point of view, but does need tests.


- Simon