07 Mar, 2014

13 commits

  • Kbuild brought about many advantages for us but a significant
    performance regression was reported by Simon Glass.

    After some discussions and analysis, it turned out
    its main cause is in $(call cc-option,...).

    Historically, U-Boot parses all config.mk
    (arch/*/config.mk and board/*/config.mk)
    every time descending into subdirectories.
    That means cc-options are evaluated over and over again.

    $(call cc-option,...) is useful but costly.
    So we want to evaluate them only in ./Makefile
    and spl/Makefile and export compiler flags.

    This commit changes the build system as follows:

    - Modify scripts/Makefile.build to not include config.mk
    Instead, add $(PLATFORM_CPPFLAGS) to asflags-y, ccflags-y,
    cppflags-y.

    - Export many variables
    Going forward, Kbuild will not parse config.mk files
    when it descends into subdirectories.
    If we want to set variables in config.mk and use them
    in subdirectories, they must be exported.

    This is the list of variables to get exported:
    PLATFORM_CPPFLAGS
    CPUDIR
    BOARDDIR
    OBJCOPYFLAGS
    LDFLAGS
    LDFLAGS_FINAL
    (used in nand_spl/board/*/*/Makefile)
    CONFIG_STANDALONE_LOAD_ADDR
    (used in examples/standalone/Makefile)
    SYM_PREFIX
    (used in examples/standalone/Makefile)
    RELFLAGS
    (used in examples/standalone/Makefile)

    - Delete CPPFLAGS
    This variable has been replaced with PLATFORM_CPPFLAGS

    - Copy gcclibdir from example/standalone/Makefile
    to arch/sparc/config.mk
    The reference in CONFIG_STANDALONE_LOAD_ADDR must be
    resolved before it is exported.

    Signed-off-by: Masahiro Yamada
    Reported-by: Simon Glass
    Acked-by: Simon Glass
    Tested-by: Simon Glass [on Sandbox]
    Tested-by: Stephen Warren [on Tegra]

    Masahiro Yamada
     
  • We want to change the build system to include config.mk
    only from ./Makefile and spl/Makefile.
    We must prepare for that in this commit.

    $(src) is a moving target and not handy for our purpose.
    We must replace it with a fixed path.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Before this commit, USE_PRIVATE_LIBGCC was defined in
    arch-specific config.mk and referenced in
    arch/$(ARCH)/lib/Makefile.

    We are not happy about parsing config.mk again and again.
    We have to keep the same behavior with a different way.

    By adding "CONFIG_" prefix, this macro appears
    in include/autoconf.mk, include/spl-autoconf.mk.
    (And treating USE_PRIVATE_LIBGCC as CONFIG macro
    is reasonable enough.)

    Tegra SoC family defined USE_PRIVATE_LIBGCC as "yes"
    in arch/arm/cpu/arm720t/tegra*/config.mk,
    whereas did not define it in arch/arm/cpu/armv7/tegra*/config.mk.

    It means Tegra enables PRIVATE_LIBGCC only for SPL.
    We can describe the same behavior by adding

    #ifdef CONFIG_SPL_BUILD
    # define CONFIG_USE_PRIVATE_LIBGCC
    #endif

    to include/configs/tegra-common.h.

    Signed-off-by: Masahiro Yamada
    Cc: Tom Warren
    Cc: Simon Glass
    Acked-by: Stephen Warren

    Masahiro Yamada
     
  • Many (but not all) of Blackfin boards give -O2 option
    to compile under lib/ directory.
    That means lib/ should be speed-optimized,
    whereas other parts should be size-optimized.

    We want to keep the same behavior,
    but do not want to parse board/*/config.mk again and again.
    We've got no choice but to invent a new method.

    CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED, if it is enabled,
    gives -O2 flag only for building under lib/ directory.

    Dirty codes which I had marked as "FIX ME"
    in board/${BOARD}/config.mk have been deleted.
    Instead, CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED has been
    defined in include/configs/${BOARD}.h.

    Signed-off-by: Masahiro Yamada
    Cc: Sonic Zhang

    Masahiro Yamada
     
  • When importing a checksummed area we need to be told how big the area in
    question is so that we know that will match the size of the area which
    the checksum is generated against.

    Reported-by: Pierre AUBERT
    Signed-off-by: Tom Rini

    Tom Rini
     
  • Signed-off-by: Vasili Galka

    Vasili Galka
     
  • As ppc4xx currently only supports the deprecated nand_spl infrastructure
    and nobody seems to have time / resources to port this over to the newer
    SPL infrastructure, lets remove NAND booting completely.

    This should not affect the "normal", non NAND-booting ppc4xx platforms
    that are currently supported.

    Signed-off-by: Stefan Roese
    Cc: Wolfgang Denk
    Cc: Tirumala Marri
    Cc: Matthias Fuchs
    Cc: Masahiro Yamada
    Cc: Tom Rini
    Tested-by: Matthias Fuchs

    Stefan Roese
     
  • There was wrong phy_mask for AR8021 device,
    so the AR8021 can't be probed correctly.
    Changed it from 0x4fffff to 0x4ffff0.

    Signed-off-by: Haijun Zhang

    Haijun.Zhang
     
  • config.tmp is never generated

    Signed-off-by: Masahiro Yamada
    Cc: Michal Simek
    Acked-by: Michal Simek

    Masahiro Yamada
     
  • The unit-test for hush's "test -e" currently relies upon being run in
    the U-Boot build directory, because it tests for the existence of a file
    that exists in that directory.

    Fix this by explicitly creating the file we use for the existence test,
    and deleting it afterwards so that multiple successive unit-test
    invocations succeed. This required adding an os.c function to erase
    files.

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

    Stephen Warren
     
  • The following shell command fails:

    if test -z "$x"; then echo "zero"; else echo "non-zero"; fi

    (assuming $x does not exist, it prints "non-zero" rather than "zero").

    ... since "$x" expands to nothing, and the argument is completely
    dropped, causing too few to be passed to -z, causing cmd_test() to
    error out early.

    This is because when variable expansions are processed by make_string(),
    the expanded results are concatenated back into a new string. However,
    no quoting is applied when doing so, so any empty variables simply don't
    generate any parameter when the combined string is parsed again.

    Fix this by explicitly replacing quoting any argument that was originally
    quoted when re-generating a string from the already-parsed argument list.

    This also fixes loss of whitespace in commands such as:

    setenv space " "
    setenv var " 1${space}${space} 2 "
    echo ">>${var}<
    Acked-by: Simon Glass
    Signed-off-by: Stephen Warren

    Stephen Warren
     
  • Delete the temporary variables that are used to save unit-test results
    from the environment after running the test. This prevents polluting
    the environment, or growing it too much.

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

    Stephen Warren
     
  • For Ethernet/USB RX packets, the ASIX HW pads odd-sized packets so that
    they have an even size. Currently, asix_recv() does remove this padding,
    and asic_send() adds equivalent padding in the TX path. However, the HW
    does not appear to need this packing for TX packets in practical testing
    with "ASIX Elec. Corp. AX88x72A 000001" Vendor: 0x0b95 Product 0x7720
    Version 0.1. The Linux kernel does no such padding for the TX path.

    Remove the padding from the TX path:

    * For consistency with the Linux kernel.
    * NVIDIA has a Tegra simulator which validates that the length of USB
    packets sent to an ASIX device matches the packet length value inside
    the packet data. Having U-Boot and the kernel do the same thing when
    creating the TX packets simplifies the simulator's validation.

    Cc: Lucas Stach
    Cc: Marek Vasut
    Cc: Simon Glass
    Signed-off-by: Stephen Warren
    Acked-by: Simon Glass
    Acked-by: Marek Vasut
    Tested-by: Marek Vasut
    Tested-by: Gerhard Sittig

    Stephen Warren
     

05 Mar, 2014

27 commits

  • Tom Rini
     
  • omap_elm.h is a generic header used by OMAP ELM driver for all TI platfoms.
    Hence this file should be present in generic folder instead of architecture
    specific include folder.
    Build tested using: ./MAKEALL -s am33xx -s omap3 -s omap4 -s omap5

    Signed-off-by: Pekon Gupta

    pekon gupta
     
  • omap_gpmc.h is a generic header used by OMAP NAND driver for all TI platfoms.
    Hence this file should be present in generic folder instead of architecture
    specific include folder.
    Build tested using: ./MAKEALL -s am33xx -s omap3 -s omap4 -s omap5

    Signed-off-by: Pekon Gupta

    pekon gupta
     
  • Each SoC platform (AM33xx, OMAP3, OMAP4, OMAP5) has its own copy of GPMC related
    defines and declarations scattered in SoC platform specific header files
    like include/asm/arch-xx/cpu.h
    However, GPMC hardware remains same across all platforms thus this patch merges
    GPMC data scattered across different arch-xx specific header files into single
    header file include/asm/arch/omap_gpmc.h

    Build tested using: ./MAKEALL -s am33xx -s omap3 -s omap4 -s omap5

    Signed-off-by: Pekon Gupta

    pekon gupta
     
  • OMAP NAND driver can detect Page-size and OOB-size of NAND device from ONFI
    params or nand_id[] table. And based on that it defines ECC layout.
    This patch
    1) removes following board configs used for defining NAND ECC layout
    - GPMC_NAND_ECC_LP_x16_LAYOUT (for large page x16 NAND)
    - GPMC_NAND_ECC_LP_x8_LAYOUT (for large page x8 NAND)
    - GPMC_NAND_ECC_SP_x16_LAYOUT (for small page x16 NAND)
    - GPMC_NAND_ECC_SP_x8_LAYOUT (for small page x8 NAND)

    2) removes unused #defines in common omap_gpmc.h depending on above configs

    Build tested using: ./MAKEALL -s am33xx -s omap3 -s omap4 -s omap5

    Signed-off-by: Pekon Gupta

    pekon gupta
     
  • Currently there are two sets of omap_gpmc.h header files
    (a) arch/arm/include/asm/omap_gpmc.h
    common header file for all platforms, containing defines and declarations used
    by GPMC NAND driver.

    (b) arch/arm/include/asm/arch-xx/omap_gpmc.h
    SoC platform specific header file containing defines like ECC layout.

    This patch removes platform specific arch-xx/omap_gpmc.c because:
    - GPMC hardware engine is common for all SoC platforms hence only (a) is enough
    - ECC layout is now defined in omap_nand.c driver itself based on ecc-scheme
    selected. Hence all ECC layout declarations in (b) are redundant.

    Build tested using: ./MAKEALL -s am33xx -s omap3 -s omap4 -s omap5

    Signed-off-by: Pekon Gupta

    pekon gupta
     
  • Tom Rini
     
  • README.malta referred to board/malta, but malta has now been moved
    within board/imgtec/, so correct the path.

    Signed-off-by: James Hogan
    Cc: Daniel Schwierzeck
    Cc: Paul Burton

    James Hogan
     
  • Linux MIPS uses asm-generic/int-ll64.h in asm/types.h.
    Thus u64 and __u64 are defined as unsigned long long. Port this
    over to U-Boot.

    Signed-off-by: Daniel Schwierzeck

    Daniel Schwierzeck
     
  • There are no source files in board/synopsys/arcangel4/
    directory.

    Signed-off-by: Masahiro Yamada
    Cc: Alexey Brodkin

    Masahiro Yamada
     
  • U-Boot has compelled all boards to have
    board/${BOARD}/ or board/${VENDOR}/${BOARD}/ directory.

    Sometimes it does not seem suitable for some boards,
    for example Sandbox. (Is it a board?)

    And arcangel4 board has nothing to compile
    under the board directory.

    This commit makes the build system more flexible:
    If '' is given to the 6th column (=Board name) of boards.cfg,
    Kbuild will not descend into the board directory.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • LOGO_BMP was never overwritten by board-specific or
    vendor-specific logos.

    Signed-off-by: Masahiro Yamada
    Reported-by: Bo Shen
    Tested-by: Bo Shen

    Masahiro Yamada
     
  • Programs in tools/ directory are usually built for the host.
    But some of them (mkimage, dumpimge, gen_eth_addr, etc.) are
    useful on the target OS too.

    Actually, prior to Kbuild, U-Boot could build tools for
    the target like follows:

    $ make _config
    $ export CROSS_COMPILE=
    $ make HOSTCC=${CROSS_COMPILE}gcc HOSTSTRIP=${CROSS_COMPILE}strip tools

    In Kbuild, we can no longer replace HOSTCC at the command line.

    In order to get back that feature, this commit adds "cross-tools" target.

    Usage:

    Build tools for the host
    $ make CROSS_COMPILE= tools

    Build tools for the target
    $ make CROSS_COMPILE= cross_tools

    Besides, "make cross_tools" strip tools programs because we
    generally expect smaller storages on embedded systems.

    Signed-off-by: Masahiro Yamada
    Reported-by: Heiko Schocher
    Cc: Wolfgang Denk
    Cc: Tom Rini
    Tested-by: Heiko Schocher
    Acked-by: Heiko Schocher

    Masahiro Yamada
     
  • The top Makefile must export HOST_TOOLS_ALL to use it
    in tools/Makefile.

    Signed-off-by: Masahiro Yamada
    Tested-by: Heiko Schocher
    Acked-by: Heiko Schocher

    Masahiro Yamada
     
  • config.tmp is not there.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Ignore
    - board/cray/L1/bootscript.{c|image}
    - board/matrix_vision/mvblm7/bootscript.img
    - board/maxtir_vision/mvsmr/bootscript.img

    Signed-off-by: Masahiro Yamada
    Cc: Andre Schwarz

    Masahiro Yamada
     
  • The same outputs are generated with or without -I$(TOPDIR)/board.
    I cannot understand why it is necessary. Remove.

    Signed-off-by: Masahiro Yamada
    Cc: Daniel Hellstrom

    Masahiro Yamada
     
  • The syntax
    CROSS_COMIPLE ?=
    does not work because config.mk is parsed after
    exporting CROSS_COMPILE.

    Like Linux Kernel's arch/$(ARCH)/Makefile,
    we must write as follows:

    ifeq ($(CROSS_COMPILE),)
    CROSS_COMPILE :=
    endif

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • We had switched to Kbuild so now we can specify
    PLATFORM_LIBS/PLATFORM_LIBGCC with relative path.

    Signed-off-by: Masahiro Yamada
    Acked-by: Tom Rini
    Acked-by: Simon Glass
    Tested-by: Simon Glass

    Masahiro Yamada
     
  • Update to v3.14-rc4's version of checkpatch.pl. In doing so we drop the
    changes to top_of_kernel_tree() as we pass in --no-tree and drop our
    changes about MAINTAINERS as that's for reporting checkpatch.pl problems
    itself (and upstream has said they'll reword this section to be
    clearer).

    Signed-off-by: Tom Rini

    Tom Rini
     
  • Add 64-bit data for memory commands, such as md, mw, mm, cmp. The new
    size ".q " is introduced.

    For 64-bit architecture, 64-bit data is enabled by default, by detecting
    compiler __LP64__. It is optional for other architectures.

    Signed-off-by: York Sun

    York Sun
     
  • This documentation pertains to the planned implementation of driver model
    in U-Boot for each subsystem, but it has not been superseded. It is
    probably better to have this documentation in the source code for each
    subsystem where possible, so that docbook will pick it up. Where this does
    not make sense, new documentation can be placed in some suitable file in
    doc/driver-model.

    Signed-off-by: Simon Glass

    Simon Glass
     
  • Now that named GPIO banks are supported, along with a way of obtaining
    the status of a GPIO (input or output), we can provide an enhanced
    GPIO command for driver model. Where the driver provides its own operation
    for obtaining the GPIO state, this is used, otherwise a generic version
    is sufficient.

    Signed-off-by: Simon Glass

    Simon Glass
     
  • Convert sandbox over to use driver model GPIOs.

    Signed-off-by: Simon Glass

    Simon Glass
     
  • Add driver model support for GPIOs. Since existing GPIO drivers do not use
    driver model, this feature must be enabled by CONFIG_DM_GPIO. After all
    GPO drivers are converted over we can perhaps remove this config.

    Tests are provided for the sandbox implementation, and are a sufficient
    sanity check for basic operation.

    The GPIO uclass understands the concept of named banks of GPIOs, with each
    GPIO device providing a single bank. Within each bank the GPIOs are numbered
    using an offset from 0 to n-1. For example a bank named 'b' with 20
    offsets will provide GPIOs named b0 to b19.

    Anonymous GPIO banks are also supported, and are just numbered without any
    prefix.

    Each time a GPIO driver is added to the uclass, the GPIOs are renumbered
    accordinging, so there is always a global GPIO numbering order.

    Signed-off-by: Simon Glass
    Signed-off-by: Marek Vasut
    Signed-off-by: Pavel Herrmann
    Signed-off-by: Viktor Křivák
    Signed-off-by: Tomas Hlavacek

    Simon Glass
     
  • As an example of how to write a uclass and a driver, provide a demo version
    of each, accessible through the 'demo' command.

    To use these with driver model, define CONFIG_CMD_DEMO and CONFIG_DM_DEMO.

    The two demo drivers are enabled with CONFIG_DM_DEMO_SIMPLE and
    CONFIG_DM_DEMO_SHAPE.

    Signed-off-by: Simon Glass
    Signed-off-by: Marek Vasut
    Signed-off-by: Pavel Herrmann
    Signed-off-by: Viktor Křivák
    Signed-off-by: Tomas Hlavacek

    Simon Glass
     
  • This command is not required for driver model operation, but can be useful
    for testing. It provides simple dumps of internal data structures.

    Signed-off-by: Simon Glass
    Signed-off-by: Marek Vasut
    Signed-off-by: Pavel Herrmann
    Signed-off-by: Viktor Křivák
    Signed-off-by: Tomas Hlavacek

    Simon Glass