20 Feb, 2014

6 commits

  • It is convenient to have all device trees on the same SoC compiled.
    It allows for later easy repackaging without the need to re-run
    the make file.

    - Build device trees with the same SoC under arch/$(ARCH)/dts

    - Copy the one specified by CONFIG_DEFAULT_DEVICE_TREE or
    DEVICE_TREE=... to dts/dt.dtb

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Unlike Linux Kernel, U-Boot historically had *.dts files under
    board/$(VENDOR)/dts/ and *.dtsi files under arch/$(ARCH)/dts/.

    I think arch/$(ARCH)/dts dicretory is a better location
    to store both *.dts and *.dtsi files.

    For example, before this commit, board/xilinx/dts directory
    had both Microblaze dts (microblaze-generic.dts) and
    ARM dts (zynq-*.dts), which are totally unrelated.

    This commit moves *.dts to arch/$(ARCH)/dts/ directories,
    allowing us to describe nicely mutiple DTBs generation in the next commit.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Useful rules in scripts/Makefile.lib allows us to easily
    generate a device tree blob and wrap it in assembly code.

    We do not need to parse a linker script to get output format and arch.

    This commit deletes ./u-boot.dtb since it is a copy of dts/dt.dtb.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • This commit refactors cleaning targets such as
    clean, clobber, mrpropper, distclean
    with scripts/Makefile.clean.

    By using scripts/Makefile.clean, we can recursively descend
    into subdirectories and delete generated files there.

    We do not need add a big list of generated files
    to the "clean" target.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Now we are ready to switch over to real Kbuild.

    This commit disables temporary scripts:
    scripts/{Makefile.build.tmp, Makefile.host.tmp}
    and enables real Kbuild scripts:
    scripts/{Makefile.build,Makefile.host,Makefile.lib}.

    This switch is triggered by the line in scripts/Kbuild.include
    -build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build.tmp obj
    +build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj

    We need to adjust some build scripts for U-Boot.
    But smaller amount of modification is preferable.

    Additionally, we need to fix compiler flags which are
    locally added or removed.

    In Kbuild, it is not allowed to change CFLAGS locally.
    Instead, ccflags-y, asflags-y, cppflags-y,
    CFLAGS_$(basetarget).o, CFLAGS_REMOVE_$(basetarget).o
    are prepared for that purpose.

    Signed-off-by: Masahiro Yamada
    Tested-by: Gerhard Sittig

    Masahiro Yamada
     
  • This commit changes the working directory
    where the build process occurs.

    Before this commit, build process occurred under the source
    tree for both in-tree and out-of-tree build.

    That's why we needed to add $(obj) prefix to all generated
    files in makefiles like follows:
    $(obj)u-boot.bin: $(obj)u-boot

    Here, $(obj) is empty for in-tree build, whereas it points
    to the output directory for out-of-tree build.

    And our old build system changes the current working directory
    with "make -C " syntax when descending into the
    sub-directories.

    On the other hand, Kbuild uses a different idea
    to handle out-of-tree build and directory descending.

    The build process of Kbuild always occurs under the output tree.
    When "O=dir/to/store/output/files" is given, the build system
    changes the current working directory to that directory and
    restarts the make.

    Kbuild uses "make -f $(srctree)/scripts/Makefile.build obj="
    syntax for descending into sub-directories.
    (We can write it like "make $(obj)=" with a shorthand.)
    This means the current working directory is always the top
    of the output directory.

    Signed-off-by: Masahiro Yamada
    Tested-by: Gerhard Sittig

    Masahiro Yamada
     

13 Dec, 2013

1 commit

  • Some editors such as Emacs can highlight source files.
    But their parser algorithm is not perfect.

    If you use one double-quotation alone, some editor cannot
    handle it nicely and mark source lines as a string by mistake.

    It is preferable to use two double-quotations as a pair.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

01 Nov, 2013

1 commit


03 Aug, 2013

5 commits

  • This brings U-Boot's cpp invocation into line with the way the Linux
    kernel invokes cpp on device trees. Consistency will be useful to ensure
    *.dts is portable between the two.

    -undef also has the added advantage of not defining "linux", so DT
    property names such as "linux,keymap" don't get mangled.

    Signed-off-by: Stephen Warren
    Acked-by: Simon Glass

    Stephen Warren
     
  • Recent dtc supports #line directives in the input source code, and even
    uses them to generate useful line numbers in any messages it emits. Stop
    passing -P to cpp, since there's no need any more.

    Signed-off-by: Stephen Warren
    Acked-by: Simon Glass

    Stephen Warren
     
  • Now that nothing uses the defines ARCH_CPU_DTS, BOARD_DTS, stop defining
    them.

    Signed-off-by: Stephen Warren
    Acked-by: Simon Glass

    Stephen Warren
     
  • *.dts may use #include (via cpp) or /include/ (via dtc; assuming a newer
    dtc). The choice is up to the creator of the DT. Create a common variable
    DTC_INCDIRS that lists the paths searched by include statements, and
    update cpp and dtc invocation to use them.

    For cpp, also specify -nostdinc to ensure the same set of paths is
    available to both type of include statement.

    For dtc, create a new DTC_FLAGS variable to hold all the flags passed to
    dtc.

    Signed-off-by: Stephen Warren
    Acked-by: Simon Glass

    Stephen Warren
     
  • The invocation of dtc is significantly more complex that it could be,
    in order to work around an issue on old versions of dtc, which print
    a message to stdout every time they run.

    Remove this workaround, on the assumption that people have or will
    upgrade to a newer version of dtc. This simplifies the build rule
    significantly.

    Related, split the invocation of cpp and dtc into separate commands
    rather than a pipeline, so that if either fail, it is detected. This has
    the nice benefit of saving off the result of the pre-processing step,
    allowing it to be easily inspected.

    Assuming a new enough dtc (which an earlier patch enforces), dtc will
    parse #line directives in its input file, and generate correct file and
    line numbers in error messages, even though cpp is unconditionally
    applied to its input file.

    Signed-off-by: Stephen Warren
    Acked-by: Simon Glass

    Stephen Warren
     

24 Jul, 2013

1 commit


03 Apr, 2013

1 commit


15 Mar, 2013

1 commit


08 Feb, 2013

1 commit

  • Using "-ansi" preprocessor option will cause dts lines that begin with
    '#' to choke the preprocessor. Change to "-x assembler-with-cpp"
    instead which is what the kernel uses to preprocess dts files.

    Signed-off-by: Allen Martin
    Reviewed-by: Stephen Warren
    Acked-by: Simon Glass

    Allen Martin
     

11 Aug, 2012

2 commits


01 Aug, 2012

1 commit

  • * 'master' of git://git.denx.de/u-boot-microblaze:
    microblaze: Wire up SPI driver
    spi: microblaze: Adds driver for Xilinx SPI controller
    microblaze: intc: Clear interrupt code
    microblaze: Call serial multi initialization
    microblaze: Move __udelay implementation
    microblaze: Remove extern from board.c
    microblaze: Wire up dts configuration
    fdt: Add board specific dts inclusion
    microblaze: Move individual board linker scripts to common script in cpu tree.
    microblaze: Add gpio.h
    microblaze: Add missing undefs for UBI and UBIFS
    microblaze: Expand and correct configuration comments
    microblaze: Enable ubi support
    microblaze: Avoid compile error on systems without cfi flash
    microblaze: Remove wrong define CONFIG_SYS_FLASH_PROTECTION

    Conflicts:
    drivers/spi/Makefile

    Signed-off-by: Wolfgang Denk

    Wolfgang Denk
     

10 Jul, 2012

1 commit

  • Some architectures, for example Microblaze, doesn't need a
    splitted device tree because every Microblaze hw design is
    different. The individuell Microblaze device tree will be
    auto generated by FPGA design tools and could be used directly
    with dtc.

    The auto generated dts for Microblaze can not processed by CPP.
    Unfortunately that is the default procedure in U-Boot to merge
    a splitted device tree (substitution of ARCH_CPU_DTS).

    Microblaze will never use the ARCH_CPU_DTS substitution and we
    introduce the new board specific substitution variable BOARD_DTS
    that points into vendor/board/dts subdir with the file name
    of CONFIG_DEFAULT_DEVICE_TREE. The common dts file in vendor/dts
    subdir (defined by CONFIG_DEFAULT_DEVICE_TREE) contain a single
    include line that can processed by CPP:

    /include/ BOARD_DTS

    Signed-off-by: Stephan Linz
    Tested-by: Michal Simek
    Acked-by: Simon Glass

    Stephan Linz
     

09 Jul, 2012

1 commit

  • Commit 896bbb5 "fdt: avoid bad MAKEALL status" added logic to capture
    the result code from dtc by echoing $? to stdout and capturing it using
    $(). However, dtc emits some diagnostics to stderr and some to stdout.
    The diagnostics send to stdout ended up getting captured via $() rather
    than being echo'd to the user. This caused those diagnostics to be passed
    to the exit command, which would then fail with the following cryptic
    error message:

    /bin/sh: line 1: exit: too many arguments

    Solve this by redirecting all dtc output to stderr so that $() does not
    capture it. This allows the user to see the actual error message from dtc.

    Cc: Wolfgang Denk
    Cc: Simon Glass
    Cc: albert.u.boot@aribaud.net
    Cc: Tom Warren
    Signed-off-by: Stephen Warren
    Acked-by: Simon Glass

    Stephen Warren
     

21 Apr, 2012

2 commits

  • Current versions of dtc always print a message like

    DTC: dts->dtb on file "dt.dtb.tmp"

    which cannot even be suppressed with "-qqq". To avoid incorrect
    MAKEALL status, we manually filter out this message. This is a bit
    complicated, as we have to make sure to set a correct return code.

    Also, get rid of the temp file: dtc accepts "-" for stdin.

    Signed-off-by: Wolfgang Denk
    Cc: Simon Glass
    Acked-by: Simon Glass

    Wolfgang Denk
     
  • Fix: FATAL ERROR: Couldn't open "../arch/arm/dts/tegra20.dtsi": No
    such file or directory

    Signed-off-by: Wolfgang Denk
    Cc: Simon Glass
    Acked-by: Simon Glass

    Wolfgang Denk
     

27 Oct, 2011

1 commit

  • This new option allows U-Boot to embed a binary device tree into its image
    to allow run-time control of peripherals. This device tree is for U-Boot's
    own use and is not necessarily the same one as is passed to the kernel.

    The device tree compiler output should be placed in the $(obj)
    rooted tree. Since $(OBJCOPY) insists on adding the path to the
    generated symbol names, to ensure consistency it should be
    invoked from the directory where the .dtb file is located and
    given the input file name without the path.

    This commit contains my entry for the ugliest Makefile / shell interaction
    competition.

    Signed-off-by: Simon Glass

    Simon Glass