Hi Raymond, On Fri, 4 Apr 2025 at 04:34, Raymond Mao <raymond....@linaro.org> wrote: > > Hi Simon, > > On Fri, 28 Mar 2025 at 11:44, Simon Glass <s...@chromium.org> wrote: > > > > Add an option which indicates that the devicetree comes from the > > bloblist. > > > > After discussions with Tom, it seems we are comfortable with introducing > > this option, ensuring of course that the transfer list is properly > > supported. > > > > Signed-off-by: Simon Glass <s...@chromium.org> > > --- > > > > doc/develop/devicetree/control.rst | 3 ++ > > dts/Kconfig | 8 ++++ > > lib/fdtdec.c | 66 ++++++++++++------------------ > > 3 files changed, 38 insertions(+), 39 deletions(-) > > > > diff --git a/doc/develop/devicetree/control.rst > > b/doc/develop/devicetree/control.rst > > index 0233945f8b6..d80f4d420a9 100644 > > --- a/doc/develop/devicetree/control.rst > > +++ b/doc/develop/devicetree/control.rst > > @@ -137,6 +137,9 @@ If `OF_BOARD` is selected by Kconfig, a board-specific > > routine will provide the > > devicetree at runtime, for example if an earlier bootloader stage creates > > it and passes it to U-Boot. > > > > +If `OF_BLOBLIST` is defined, the devicetree comes from a bloblist passed > > +from a previous stage. > > + > > If `BLOBLIST` is selected by Kconfig, the devicetree may come from a > > bloblist > > passed from a previous stage, if present. > > > > diff --git a/dts/Kconfig b/dts/Kconfig > > index 6a5141b56e9..04359a4d7b2 100644 > > --- a/dts/Kconfig > > +++ b/dts/Kconfig > > @@ -167,6 +167,14 @@ config OF_INITIAL_DTB_READONLY > > If initial DTB for DT control is read-only (e.g. points to > > memory-mapped flash memory), then set this option. > > > > +config OF_BLOBLIST > > + bool "DTB is provided by a bloblist" > > + help > > + Select this to read the devicetree from the bloblist. This allows > > + using a bloblist to transfer the devicetree between U-Boot phases. > > + The devicetree is stored in the bloblist by an earlier phase so > > that > > + U-Boot can read it. > > + > > config OF_BOARD > > bool "Provided by the board (e.g a previous loader) at runtime" > > default y if SANDBOX || OF_HAS_PRIOR_STAGE > > diff --git a/lib/fdtdec.c b/lib/fdtdec.c > > index f09c9926a7a..833f8aca3ce 100644 > > --- a/lib/fdtdec.c > > +++ b/lib/fdtdec.c > > @@ -1689,55 +1689,43 @@ void fdtdec_setup_embed(void) > > > > int fdtdec_setup(void) > > I think a better idea is to use BLOBLIST_PASSAGE_MANDATORY, see below > pseudo code: > > ``` > if (IS_ENABLED(CONFIG_OF_BOARD)) { > /* get fdt from board */ > } > > /* allow fdtcontroladdr to override it */ > > if (CONFIG_IS_ENABLED(BLOBLIST) && ... ) { > /* try to find fdt from bloblist */ > > if (CONFIG_IS_ENABLED(BLOBLIST_PASSAGE_MANDATORY) { > if (no_fdt_in_bloblist) > return ERROR; > > /* override fdt with the one from bloblist */ > } > } > ```
See my other email on this. With OF_BLOBLIST we actually don't need BLOBLIST_PASSAGE_MANDATORY so we can drop it. Regards, Simon