On 07/03/2012 09:05 PM, Simon Glass wrote:
Hi,

On Fri, Jun 29, 2012 at 1:22 PM, Stephan Linz <l...@li-pro.net 
<mailto:l...@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.


ok



     >
     > 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.

What is the problem to add the latest dtc?

Thanks,
Michal




---
Michal Simek, Ing. (M.Eng)
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/
Microblaze U-BOOT custodian
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to