[U-Boot] ARM CONFIG_OF_CONTROL status

Simon Glass sjg at chromium.org
Tue Jul 3 21:05:09 CEST 2012


Hi,

On Fri, Jun 29, 2012 at 1:22 PM, Stephan Linz <linz at li-pro.net> wrote:

> Am Freitag, den 29.06.2012, 10:18 +0200 schrieb Michal Simek:
> > On 06/29/2012 04:32 AM, Simon Glass wrote:
> > > Hi,
> > >
> > > --snip--
> >
> > I have sent support for Microblaze. Currently without dts because I want
> to clear this part a little bit.
>
> Hi Michal,
>
> looks good, I've been waiting a long time on the FDT support in U-Boot
> for Microblaze -- great -- PS: see my comment on patch 5 ...
>
> >
> > Tegra is using ./arch/arm/dts/tegra20.dtsi and
> board/nvidia/dts/tegra2-seaboard.dts
> > and they are composed together in dts/Makefile by calling preprocessor.
> > Microblaze will be totally different case because every Microblaze hw
> design is different.
>
> Yes, that's right. We will never be in the position to define a skeleton
> or a basic platform configuration.
>
> > We can use two main buses (little and big endian) and cpu is also
> configurable.
> > Based on this for Microblaze is the best solution directly to use dts.
> > (DTS for Microblaze is also generated directly from design tool).
>
> ... directly in the context of a board, not arch/cpu, right?
>
> >
> >
> > Anyway - here is the bug message I am getting if I use full dts in
> board/<name>/dts/microblaze.dts
> > and empty arch/microblaze/dts/microblaze.dtsi
> >
> > <stdin>:34:3: error: invalid preprocessing directive #address
> > <stdin>:35:3: error: invalid preprocessing directive #size
> > <stdin>:52:4: error: invalid preprocessing directive #address
> > <stdin>:53:4: error: invalid preprocessing directive #cpus
> > <stdin>:54:4: error: invalid preprocessing directive #size
> > <stdin>:155:4: error: invalid preprocessing directive #address
> > <stdin>:156:4: error: invalid preprocessing directive #size
> > <stdin>:160:5: error: invalid preprocessing directive #gpio
> > <stdin>:192:5: error: invalid preprocessing directive #gpio
> > <stdin>:209:5: error: invalid preprocessing directive #gpio
> > <stdin>:241:5: error: invalid preprocessing directive #gpio
> > <stdin>:267:5: error: invalid preprocessing directive #address
> > <stdin>:268:5: error: invalid preprocessing directive #size
> > <stdin>:394:5: error: invalid preprocessing directive #interrupt
> >
> > This is error for opposite case - empty microblaze.dts and full
> microblaze.dtsi.
>
> That are CPP errors, because the auto generated xilinx.dts is full of
> CPP pragma like syntax (#something) that are wrong (invalid).
>

Yes - we want to move away from this and use a newer dtc which supports -i
for include files, but can't yet. Stephen Warren suggested including the
new dtc inside the U-Boot tree.


> >
> > make[1]: Entering directory `/mnt/projects/u-boot/dts'
> > rc=$( cat /mnt/projects/u-boot/board/petalogix/dts/microblaze.dts |
> microblaze-unknown-linux-gnu-gcc -E
> > -P
> -DARCH_CPU_DTS=\"/mnt/projects/u-boot/arch/microblaze/dts/microblaze.dtsi\"
> - | { { dtc -R 4 -p 0x1000
> > -O dtb -o dt.dtb - 2>&1 ; echo $? >&3 ; } | grep -v '^DTC: dts->dtb  on
> file' ; } 3>&1 ) ; \
> >       exit $rc
> > /bin/sh: line 1: exit: too many arguments
> > make[1]: *** [dt.dtb] Error 1
> > make[1]: Leaving directory `/mnt/projects/u-boot/dts'
> >
> >
> > I have just tried to fix it by introducing new CONFIG option for
> skipping that preprocessor
> > part.
>
> Instead of disable / skipp the CPP step you can hide the auto generated
> xilinx.dts with a second include stage, for example:
>
> board/microblaze/dts/microblaze.dts looks like:
>
> /include/ ARCH_CPU_DTS
> /include/ BOARD_DTS
>
>
> Right, only two lines.   The arch/microblaze/dts/microblaze.dtsi remains
> empty as you have said above. Just new is BOARD_DTS -- with the attached
> patch for dts/Makefile you can copy the auto generated xilinx.dts into
> the specific board directory and the CPP step substitute the right place
> to board/microblaze/microblaze-generic/dts/microblaze.dts
>
> I think there are no side effects with other ports like the tegra2.
>
> If you want you can omit the ARCH_CPU_DTS inclusion. The architectural
> microblaze.dtsi file is empty and (!!) have to be empty, because the DTC
> will break with an error on multiple "/dts-v1/;" lines!
>
> Here is the patch:
>
> diff --git a/dts/Makefile b/dts/Makefile
> index 914e479..b1f47a1 100644
> --- a/dts/Makefile
> +++ b/dts/Makefile
> @@ -36,7 +36,8 @@ $(error Your architecture does not have device tree
> support enabled. \
> Please define CONFIG_ARCH_DEVICE_TREE))
>
> # We preprocess the device tree file provide a useful define
> -DTS_CPPFLAGS := -DARCH_CPU_DTS=
> \"$(SRCTREE)/arch/$(ARCH)/dts/$(CONFIG_ARCH_DEVICE_TREE).dtsi\"
> +DTS_CPPFLAGS := -DARCH_CPU_DTS=
> \"$(SRCTREE)/arch/$(ARCH)/dts/$(CONFIG_ARCH_DEVICE_TREE).dtsi\" \
> +               -DBOARD_DTS=
> \"$(SRCTREE)/board/$(VENDOR)/$(BOARD)/dts/$(DEVICE_TREE).dts\"
>
> all:   $(obj).depend $(LIB)
>

I suppose this is ok. Really the better plan would be to use -i and specify
the various directories where we can get include files. But for now, ok.

Regards,
Simon

>
>
> br,
> Stephan
>
> > It will be good for Microblaze (probably there is any smarter solution
> for SKIP case not to have two cats there).
> > The same situation will happen for Xilinx ppc support and partially for
> upcoming ARM zynq where
> > full DTS is generated for unique hw design.
> >
> > Here is the patch to show you what phase I would like to skip.
> >
> > diff --git a/dts/Makefile b/dts/Makefile
> > index 914e479..d670cb8 100644
> > --- a/dts/Makefile
> > +++ b/dts/Makefile
> > @@ -45,9 +45,15 @@ all: $(obj).depend $(LIB)
> >   # the filename.
> >   DT_BIN := $(obj)dt.dtb
> >
> > +ifndef CONFIG_DTS_SKIP_PREPROCESSOR
> > +SKIP := $(CPP) -P $(DTS_CPPFLAGS) -
> > +else
> > +SKIP := cat
> > +endif
> > +
> >   $(DT_BIN): $(TOPDIR)/board/$(VENDOR)/dts/$(DEVICE_TREE).dts
> >          rc=$$( \
> > -               cat $< | $(CPP) -P $(DTS_CPPFLAGS) - | \
> > +               cat $< | $(SKIP) |\
> >                  { { $(DTC) -R 4 -p 0x1000 -O dtb -o ${DT_BIN} - 2>&1 ; \
> >                      echo $$? >&3 ; } | \
> >                    grep -v '^DTC: dts->dtb  on file' ; \
> >
> >
> > Thanks for your comments.
> > Michal
> >
>
>
>


More information about the U-Boot mailing list