27 Apr, 2018

1 commit

  • Porting the cadence USB3 (CDNS3) driver from kernel to u-boot. We only support
    the gadget (device mode), while the host mode is not supported. Users remains
    to use xhci-imx8 driver for host mode.

    Some changes in the CDNS3 driver porting:

    1. Add match_ep call back to usb_gadget_ops. The CDNS3 gadget driver replies
    on this operation to bind the usb_ep/usb_ss_ep with the endpoint descriptor
    when function layer uses usb_ep_autoconfig to add endpoint descriptors to gadget.
    So that CDNS3 driver can know the EP information and configure the EP once the
    set configuration request is received.

    2. U-boot does not have CMA, so it won't allocate uncached memory. Need to flush
    TRB and its DMA buffer before prime to usb controller and after complete transfer.

    3. In core.c, we add functions to hook with u-boot. It needs uplayer like
    to pass the register base address of each part of the USB controller.

    4. Force the CDNS3 gadget max speed to HS. The SuperSpeed is not supported by u-boot,
    so disable it in gadget driver. A configuration USB_CDNS3_GADGET_FORCE_HIGHSPEED is
    selected.

    5. Added gadget_is_cdns3 checking to provide bcdUSB value in device descriptor.

    6. Moved some new fields in usb_ep structure to usb_ss_ep, since u-boot does not have them.

    7. Remove host part codes as it is not supported by this driver.

    Signed-off-by: Ye Li
    Acked-by: Peter Chen
    (cherry picked from commit 70514bd095ff9a94e9a523845641381486284257)

    Ye Li
     

13 Mar, 2018

1 commit


06 Mar, 2018

1 commit


28 Feb, 2018

2 commits


23 Feb, 2018

1 commit

  • Most of architectures have .text section situated in the very beginning
    of U-Boot binary and thus it is very logical that CONFIG_SYS_TEXT_BASE
    is used on final linkage step to specify where U-Boot gets linked to.

    For that we pass the following construction to the LD:
    ---------------------------->8-----------------------
    xxx-ld ... -Ttext $(CONFIG_SYS_TEXT_BASE) ...
    ---------------------------->8-----------------------

    But there could be exceptions. For example:
    1. In case of ARCv2 we want to put vectors table in its own section
    .ivt in front of .text section which means we need either add an
    offset to CONFIG_SYS_TEXT_BASE to compensate for .ivt or don't
    pass "-Ttext" to the LD at all and specify link base in linker
    script directly.

    2. Some architectures even though have .text section in the very
    beginning of the U-Boot image still use different symbols to
    specify link-base:
    * NIOS2: CONFIG_SYS_MONITOR_BASE (which I really like because
    that exactly what makes sense - where out image starts but not
    beginning of its .text section which just happened to match the
    whole image beginning)
    * EXTENSA: CONFIG_SYS_TEXT_ADDR
    * X86: Which doesn't use CONFIG_SYS_MONITOR_BASE in case of EFI
    otherwise sets explicit link base in u-boot.lds

    I think that's good to allow for flexibility and don't require each and
    every architecture or even platform to specify CONFIG_SYS_TEXT_BASE as well
    as use it to set .text section location.

    So let's only pass "-Ttext xxx" for those architectures who don't set
    link-base explicitly in their linker scripts.

    This patch iaddresses comments for previously sent
    https://patchwork.ozlabs.org/patch/867540/.

    Signed-off-by: Alexey Brodkin
    Cc: Masahiro Yamada
    Cc: Marek Vasut
    Cc: Max Filippov
    Cc: Simon Glass
    Cc: Tom Rini

    Alexey Brodkin
     

21 Feb, 2018

1 commit


13 Feb, 2018

1 commit


30 Jan, 2018

1 commit


26 Jan, 2018

1 commit


13 Jan, 2018

2 commits


12 Jan, 2018

1 commit

  • Add prelink-riscv to arrange .rela.dyn and .rela.got
    in compile time. So that u-boot can be directly
    executed without fixup.

    Signed-off-by: Chih-Mao Chen
    Signed-off-by: Rick Chen
    Signed-off-by: Rick Chen
    Signed-off-by: Greentime Hu

    Rick Chen
     

09 Jan, 2018

1 commit


02 Jan, 2018

1 commit


19 Dec, 2017

1 commit


13 Dec, 2017

1 commit

  • Update tegra to use binman for image creation. This still includes the
    current Makefile logic, but a later patch will remove this. Three output
    files are created, all of which combine
    SPL and U-Boot:

    u-boot-tegra.bin - standard image
    u-boot-dtb-tegra.bin - same as u-boot-tegra.bin
    u-boot-nodtb-target.bin - includes U-Boot without the appended device tree

    The latter is useful for build systems where the device is appended later,
    perhaps after being modified.

    Signed-off-by: Simon Glass

    Simon Glass
     

05 Dec, 2017

1 commit


21 Nov, 2017

3 commits

  • With commit 84d46e7e8948 ("tools: env: allow to print U-Boot version")
    the fw_env utilities need the version.h header file. Building only
    the envtools in a pristine build directory will fail due to missing
    header files.

    Make sure the header files are a dependency of the envtools target.

    Fixes: 84d46e7e8948 ("tools: env: allow to print U-Boot version")
    Signed-off-by: Stefan Agner
    Tested-by: Peter Robinson
    Reviewed-by: Simon Glass

    Stefan Agner
     
  • When building on a multi-core machine for an SPL-enabled board that
    also uses CONFIG_OF_EMBED, the following error can be encountered
    due to a race condition:

    make[3]: *** No rule to make target 'spl/dts/dt.dtb.o', needed by
    'spl/dts/built-in.o'. Stop.
    ../scripts/Makefile.spl:364: recipe for target 'spl/dts' failed
    make[2]: *** [spl/dts] Error 2
    make[2]: *** Waiting for unfinished jobs....

    A reliable way to trigger this race condition is to add "sleep 60" to
    the end of the "arch-dtbs" rule's recipe in "dts/Makefile" and to build
    U-Boot against a board which uses the CONFIG_OF_EMBED and CONFIG_SPL
    options using "make -j8" or a similar command.

    This commit corrects this race condition via the use of CONFIG_OF_EMBED
    in the same way that commit 3c00a2c8b5e2 ("Makefile: Correct dependency
    race condition with TPL") and commit 054b3a1e80fc ("dm: Makefile: Build
    of-platdata before SPL") use CONFIG_OF_SEPARATE.

    Signed-off-by: M. Vefa Bicakci
    Reviewed-by: Simon Glass

    M. Vefa Bicakci
     
  • Coccinelle is a program for static code analysis.
    For details on Coccinelle see

    http://coccinelle.lip6.fr/

    Add scripts/coccicheck copied from Linux kernel v4.14.

    The coccicheck script executes the tests *.cocci in
    directory scripts/coccinelle by calling spatch.

    In Makefile add a coccicheck target. You can use it with

    make coccicheck MODE=

    where mode in patch, report, context, org.

    Add a copy of Linux v4.14 file Documentation/dev-tools/coccinelle.rst
    as doc/README.coccinelle.

    Cc: Simon Glass
    Signed-off-by: Heinrich Schuchardt

    Heinrich Schuchardt
     

17 Nov, 2017

2 commits

  • Currently, pylibfdt is always compiled if swig is installed on your
    machine. It is really annoying because most of targets (excepts
    x86, sunxi, rockchip) do not use dtoc or binman.

    "checkbinman" and "checkdtoc" are wrong. It is odd that the final
    build stage checks if we have built necessary tools. If your platform
    depends on dtoc/binman, you must be able to build pylibfdt. If swig
    is not installed, it should fail immediately.

    I added PYLIBFDT, DTOC, BINMAN entries to Kconfig. They should be
    property select:ed by platforms that need them. Kbuild will descend
    into scripts/dtc/pylibfdt/ only when CONFIG_PYLIBFDT is enabled.

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Simon Glass

    Masahiro Yamada
     
  • The pylibfdt is used by dtoc (and, indirectly by binman), but there
    is no reason why it must be generated in the tools/ directory.

    Recently, U-Boot switched over to the bundled DTC, and the directory
    structure under scripts/dtc/ now mirrors the upstream DTC project.
    So, scripts/dtc/pylibfdt is the best location.

    I also rewrote the Makefile in a cleaner Kbuild style.

    The scripts from the upstream have been moved as follows:

    lib/libfdt/pylibfdt/setup.py -> scripts/dtc/pylibfdt/setup.py
    lib/libfdt/pylibfdt/libfdt.i -> scripts/dtc/pylibfdt/libfdt.i_shipped

    The .i_shipped is coped to .i during building because the .i must be
    located in the objtree when we build it out of tree.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

14 Nov, 2017

1 commit


07 Nov, 2017

1 commit


31 Oct, 2017

1 commit


19 Oct, 2017

1 commit

  • Up to now we depended on an exported variable to build u-boot.rom.
    We should be able to specify it in the configuration file, too.

    With this patch this becomes possible using the new Kconfig option
    CONFIG_BUILD_ROM.

    This option depends on CONFIG_X86 and is selected in
    qemu-x86_defconfig and qemu-x86_64_defconfig.

    Cc: Simon Glass
    Cc: Bin Meng
    Signed-off-by: Heinrich Schuchardt
    Reviewed-by: Bin Meng

    Heinrich Schuchardt
     

17 Oct, 2017

1 commit


06 Oct, 2017

1 commit


03 Oct, 2017

1 commit


24 Sep, 2017

1 commit

  • This makes us act like the Linux Kernel does and allow for dtc to be
    provided externally but otherwise we use the version of dtc that is
    included in the sources. This in turn means that we can drop the
    checkdtc logic. We select DTC in the cases where we will need the dtc
    tool provided.

    Signed-off-by: Tom Rini

    Tom Rini
     

22 Sep, 2017

1 commit


13 Sep, 2017

1 commit

  • EFI_LOADER really wants UTF-16 strings (ie. %ls and L"string" are 16bit
    chars instead of 32bit chars). But rather than enabling -fshort-wchar
    conditionally if EFI_LOADER is enabled, it was deemed preferrable to
    globally switch.

    Signed-off-by: Rob Clark
    Acked-by: Masahiro Yamada

    Rob Clark
     

12 Sep, 2017

1 commit


06 Sep, 2017

3 commits

  • The target is not currently mentioned anywhere. Add it to the help so
    people can find it.

    Signed-off-by: Simon Glass

    Simon Glass
     
  • This was broken by the recent environment refactoring. Specifically:

    $ make environ
    scripts/Makefile.build:59: tools/environ/Makefile: No such file or directory
    make[1]: *** No rule to make target 'tools/environ/Makefile'. Stop.
    make: *** [Makefile:1469: environ] Error 2

    Fix this by updating the Makefile and adjusting the #include filesnames in
    two C files.

    Fixes: ec74f5f (Makefile: Rename 'env' target to 'environ')
    Reported-by: Måns Rullgård
    Signed-off-by: Simon Glass

    Simon Glass
     
  • With the move of environment code from common/ to env/ a number of
    changes needed to be made to various make targets. We missed updating
    some of the files required for out of tree builds of the tools. Correct
    the 'environ' target to know that we need to work under tools/env/ still
    (not tools/environ/) and then update the wrappers in env_attr.c and
    env_flags.c to point to the new correct file.

    Reported-by: Peter Robinson
    Tested-by: Peter Robinson
    Signed-off-by: Tom Rini

    Tom Rini
     

04 Sep, 2017

1 commit


29 Aug, 2017

1 commit


20 Aug, 2017

1 commit

  • On some systems `python` is `python3` (for instance, Archlinux). The
    `PYTHON` variable can be used to point to `python2` to have a successful
    build.

    The use of `PYTHON` is currently limited in the Makefile and needs to be
    extended in other places:

    First, pylibfdt is required to be a Python 2 binding (binman imports
    pylibfdt and is only compatible Python 2), so its setup.py needs to be
    called accordingly. An alternative would be to change the libfdt
    setup.py shebang to python2, but the binding is actually portable. Also,
    it would break on system where there is no such thing as `python2`.

    Secondly, the libfdt import checks need to be done against Python 2 as
    well since the Python 2 compiled modules (in this case _libdft.so) can
    not be imported from Python 3.

    Note on the libfdt imports: "@if ! PYTHONPATH=tools $(PYTHON) -c 'import
    libfdt'; then..." is probably simpler than the currently sub-optimal
    pipe.
    Reviewed-by: Jonathan Gray

    Clément Bœsch