Hi Jonas,

On Sat, 10 May 2025 at 17:31, Jonas Karlman <jo...@kwiboo.se> wrote:
>
> Hi Simon,
>
> On 2025-05-10 15:42, Simon Glass wrote:
> > The existing logic for handling receiving a devicetree from a previous
> > phase is quite complicated. Simplify it in preparation for introducing
> > standard passage.
> >
> > Add a Kconfig called OF_PASSAGE which indicates that the devicetree
> > must come from standard passage.
> >
> > Signed-off-by: Simon Glass <s...@chromium.org>
> > ---
> >
> > Changes in v4:
> > - Drop now-unused label
> >
> > Changes in v3:
> > - Add new patch to redo how a devicetree is set up
> >
> >  dts/Kconfig  |  8 ++++++++
> >  lib/fdtdec.c | 35 ++++++-----------------------------
> >  2 files changed, 14 insertions(+), 29 deletions(-)
> >
> > diff --git a/dts/Kconfig b/dts/Kconfig
> > index c544f948a15..57101bddabb 100644
> > --- a/dts/Kconfig
> > +++ b/dts/Kconfig
> > @@ -159,6 +159,14 @@ config OF_EMBED
> >         and development only and is not recommended for production devices.
> >         Boards in the mainline U-Boot tree should not use it.
> >
> > +config OF_PASSAGE
> > +     bool "DTB is provided by a standard passage, in a bloblist"
> > +     help
> > +       Select this to read the devicetree using the standard passage
> > +       mechanism, i.e. from a previous phase in bloblist using 
> > arch-specific
> > +       register conventions. If enabled, the previous phase must provide
> > +       the devicetree, or U-Boot will not function correctly.
> > +
> >  endchoice
> >
> >  config OF_INITIAL_DTB_READONLY
> > diff --git a/lib/fdtdec.c b/lib/fdtdec.c
> > index c38738b48c7..8559616873b 100644
> > --- a/lib/fdtdec.c
> > +++ b/lib/fdtdec.c
> > @@ -1689,35 +1689,13 @@ void fdtdec_setup_embed(void)
> >
> >  int fdtdec_setup(void)
> >  {
> > -     int ret = -ENOENT;
> > -
> > -     /*
> > -      * If allowing a bloblist, check that first. There was discussion 
> > about
> > -      * adding an OF_BLOBLIST Kconfig, but this was rejected.
> > -      *
> > -      * The necessary test is whether the previous phase passed a bloblist,
> > -      * not whether this phase creates one.
> > -      */
> > -     if (CONFIG_IS_ENABLED(BLOBLIST) &&
> > -         (xpl_prev_phase() != PHASE_TPL ||
> > -          IS_ENABLED(CONFIG_TPL_BLOBLIST))) {
> > -             ret = bloblist_maybe_init();
> > -             if (!ret) {
> > -                     gd->fdt_blob = bloblist_find(BLOBLISTT_CONTROL_FDT, 
> > 0);
> > -                     if (gd->fdt_blob) {
> > -                             gd->fdt_src = FDTSRC_BLOBLIST;
> > -                             log_debug("Devicetree is in bloblist at %p\n",
> > -                                       gd->fdt_blob);
> > -                             goto setup_fdt;
> > -                     } else {
> > -                             log_debug("No FDT found in bloblist\n");
> > -                             ret = -ENOENT;
> > -                     }
> > -             }
> > -     }
> > +     int ret;
> >
> > -     /* Otherwise, the devicetree is typically appended to U-Boot */
> > -     if (ret) {
> > +     if (CONFIG_IS_ENABLED(OF_BLOBLIST)) {
>
> This looks wrong, should possible be OF_PASSAGE ?
>
> Also looks like there is more patches in need of a correction to use
> OF_PASSAGE instead of OF_BLOBLIST in commit message and/or patch content
> in this series.

Thanks, yes this is not quite right as the rename happens in this
patch but the other changes are not until later. I'll send a new
version when the week is up.

Regards,
Simon

>
> Regards,
> Jonas
>
> > +             printf("Previous phase failed to provide standard passage\n");
> > +             return -ENOENT;
> > +     } else {
> > +             /* The devicetree is typically appended to U-Boot */
> >               if (IS_ENABLED(CONFIG_OF_SEPARATE)) {
> >                       gd->fdt_blob = fdt_find_separate();
> >                       gd->fdt_src = FDTSRC_SEPARATE;
> > @@ -1752,7 +1730,6 @@ int fdtdec_setup(void)
> >               }
> >       }
> >
> > -setup_fdt:
> >       if (CONFIG_IS_ENABLED(MULTI_DTB_FIT))
> >               setup_multi_dtb_fit();
> >
>

Reply via email to