<p>Hi Marek,</p>
<p>On Feb 16, 2012 2:50 AM, "Marek Vasut" <<a href="mailto:marek.vasut@gmail.com">marek.vasut@gmail.com</a>> wrote:<br>
><br>
> > This adds support for a controlling fdt, mirroring the ARM implementation.<br>
><br>
> This is offtopic, but CONFIG OF CONTROL sounds interesting ;-)</p>
<p>Yes I hope it will be before end of year.</p>
<p>><br>
> btw. aren't you missing this part from ARM implementation?<br>
><br>
> /* Allow the early environment to override the fdt address */<br>
> gd->fdt_blob = (void *)getenv_ulong("fdtcontroladdr", 16, (uintptr_t)gd-<br>
> >fdt_blob);</p>
<p>In principle yes. In practice we don't have a simple memory interface for sandbox yet, so we can't implement this.</p>
<p>Well we did have one but it broke a few boards so was reverted. We should come up with a way to do this...</p>
<p>Regards,<br>
Simon</p>
<p>><br>
> ><br>
> > Signed-off-by: Simon Glass <<a href="mailto:sjg@chromium.org">sjg@chromium.org</a>><br>
> > ---<br>
> > Changes in v3:<br>
> > - Use #if defined()..#elif defined, instead of #ifdef..#elif defined<br>
> ><br>
> >  arch/sandbox/include/asm/global_data.h |    1 +<br>
> >  arch/sandbox/lib/board.c               |    8 ++++++++<br>
> >  2 files changed, 9 insertions(+), 0 deletions(-)<br>
> ><br>
> > diff --git a/arch/sandbox/include/asm/global_data.h<br>
> > b/arch/sandbox/include/asm/global_data.h index 8d47191..01a7063 100644<br>
> > --- a/arch/sandbox/include/asm/global_data.h<br>
> > +++ b/arch/sandbox/include/asm/global_data.h<br>
> > @@ -45,6 +45,7 @@ typedef     struct global_data {<br>
> >       unsigned long   fb_base;        /* base address of frame buffer */<br>
> >       u8              *ram_buf;       /* emulated RAM buffer */<br>
> >       phys_size_t     ram_size;       /* RAM size */<br>
> > +     const void      *fdt_blob;      /* Our device tree, NULL if none */<br>
> >       void            **jt;           /* jump table */<br>
> >       char            env_buf[32];    /* buffer for getenv() before reloc. */<br>
> >  } gd_t;<br>
> > diff --git a/arch/sandbox/lib/board.c b/arch/sandbox/lib/board.c<br>
> > index b7997e9..6d464d6 100644<br>
> > --- a/arch/sandbox/lib/board.c<br>
> > +++ b/arch/sandbox/lib/board.c<br>
> > @@ -156,6 +156,14 @@ void board_init_f(ulong bootflag)<br>
> ><br>
> >       memset((void *)gd, 0, sizeof(gd_t));<br>
> ><br>
> > +#if defined(CONFIG_OF_EMBED)<br>
> > +     /* Get a pointer to the FDT */<br>
> > +     gd->fdt_blob = _binary_dt_dtb_start;<br>
> > +#elif defined(CONFIG_OF_SEPARATE)<br>
> > +     /* FDT is at end of image */<br>
> > +     gd->fdt_blob = (void *)(_end_ofs + _TEXT_BASE);<br>
> > +#endif<br>
> > +<br>
> >       for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {<br>
> >               if ((*init_fnc_ptr)() != 0)<br>
> >                       hang();<br>
</p>