27 Dec, 2019

1 commit

  • Support packing optional second level boot-loader:

    $ ./tools/mkimage -n rk3399 -T rksd -d \
    rk3399_ddr_800MHz_v1.24.bin:rk3399_miniloader_v1.19.bin out -v
    Adding Image rk3399_ddr_800MHz_v1.24.bin
    Size 116492(pad to 116736)
    Adding Image rk3399_miniloader_v1.19.bin
    Size 88060(pad to 88064)
    Image Type: Rockchip RK33 (SD/MMC) boot image
    Init Data Size: 116736 bytes
    Boot Data Size: 88064 bytes

    Mainly parse init file and boot file from datafile option, copy them to
    the image with 2KB alignment.

    Signed-off-by: Jeffy Chen
    Reviewed-by: Kever Yang

    Jeffy Chen
     

07 May, 2018

1 commit

  • When U-Boot started using SPDX tags we were among the early adopters and
    there weren't a lot of other examples to borrow from. So we picked the
    area of the file that usually had a full license text and replaced it
    with an appropriate SPDX-License-Identifier: entry. Since then, the
    Linux Kernel has adopted SPDX tags and they place it as the very first
    line in a file (except where shebangs are used, then it's second line)
    and with slightly different comment styles than us.

    In part due to community overlap, in part due to better tag visibility
    and in part for other minor reasons, switch over to that style.

    This commit changes all instances where we have a single declared
    license in the tag as both the before and after are identical in tag
    contents. There's also a few places where I found we did not have a tag
    and have introduced one.

    Signed-off-by: Tom Rini

    Tom Rini
     

07 Jun, 2017

2 commits

  • The Rockchip BootROM relies on init_size being aligned to 2KB
    (see https://lists.denx.de/pipermail/u-boot/2017-May/293268.html).

    This pads the image to 2KB both for SD card images and SPI images
    and uses a common symbolic constant for the alignment.

    Signed-off-by: Philipp Tomsich
    Reviewed-by: Simon Glass

    Philipp Tomsich
     
  • The rockchip image generation was previously missing the ability to
    verify the generated header (and dump the image-type) without having
    to resort to hexdump or od. Experience in our testing has showed it
    to be very easy to get the rkspi and rksd images mixed up and the
    lab... so we add the necessary support to have dumpimage tell us
    what image type we're dealing with.

    This change set adds the verify_header and print_header capability
    to the rksd/rkspi image drivers (through shared code in rkcommon).

    As of now, we only support images fully that are not RC4-encoded for
    the SPL payload (i.e. header1 and payload). For RC4-encoded payloads,
    the outer header (header0) is checked, but no detection of whether
    this is a SD/MMC or SPI formatted payload takes place.

    The output of dumpsys now prints the image type (spl_hdr), whether it
    is a SD/MMC or SPI image, and the (padded) size of the image:
    $ ./tools/dumpimage -l ./spl.img
    Image Type: Rockchip RK33 (SD/MMC) boot image
    ^^^^^^ SD/MMC vs. SPI indication
    ^^^^ spl_hdr indicated by the image
    Data Size: 79872 bytes

    Signed-off-by: Philipp Tomsich
    Acked-by: Simon Glass

    Philipp Tomsich
     

11 May, 2017

2 commits

  • In (first) breaking and (then) fixing the rkspi tool, I realised that
    the calculation of the required padding (for the header-size and the
    2K-in-every-4K SPI layout) was not as self-explainatory as it could
    have been. This change rewrites the code (using new, common functions
    in rkcommon.c) and adds verbose in-line comments to ensure that we
    won't fall into the same pit in the future...

    Tested on the RK3399 (with has a boot0-style payload) with SD/MMC and SPI.

    Signed-off-by: Philipp Tomsich
    Acked-by: Simon Glass

    Philipp Tomsich
     
  • Our earlier change broke the generation of SPI images, by excluding the
    2K used for header0 from the size-calculation.

    This commit makes sure that these are included before calculating the
    required total size (including the padding from the 2K-from-every-4K
    conversion).

    Signed-off-by: Philipp Tomsich
    Acked-by: Simon Glass

    Philipp Tomsich
     

05 Apr, 2017

2 commits

  • The RK3399 boot code (running as AArch64) poses a bit of a challenge
    for SPL image generation:
    * The BootROM will start execution right after the 4-byte header (at
    the odd instruction word loaded into SRAM at 0xff8c2004, with the
    'RK33' boot magic residing at 0xff8c2000).
    * The default padding (during ELF generation) for AArch64 is 0x0,
    which is an illegal instruction and the .text section needs to be
    naturally aligned (someone might locate a 64bit constant relative
    to the section start and unaligned loads trigger a fault for all
    privileged modes of an ARMv8)... so we can't simply define the
    CONFIG_SPL_TEXT_BASE option to the odd address (0xff8c2004).
    * Finally, we don't want to change the values used for padding of
    the SPL .text section for all ARMv8 targets to the instruction
    word encoding 'nop', as this would affect all padding in this
    section and might hide errors that would otherwise quickly trigger
    an illegal insn exception.

    To deal with this situation, we modify the rkimage generation to
    - understand the fact that the RK3399 needs to pad the header to an
    8 byte boundary using an AArch64 'nop'
    - the necessary logic to adjust the header_size (which controls the
    location where the payload is copied into the image) and to insert
    this padding (AArch64 insn words are always little-endian) into
    the image following the 4-byte header magic.

    X-AffectedPlatforms: RK3399-Q7
    Signed-off-by: Philipp Tomsich
    Tested-by: Klaus Goger

    Philipp Tomsich
     
  • The RC4 encoding works on full blocks, but the calculation of the
    starting offset and size are needlessly complicated by using a
    reference value known to be offset into a block by the size of the
    header and then correcting for the (hard-coded) size of the header
    (i.e. 4 bytes).

    We change this over to use the RK_SPL_HDR_START directly (which is
    known to be on a block boundary).

    X-AffectedPlatforms: RK3399-Q7
    Signed-off-by: Philipp Tomsich
    Tested-by: Klaus Goger

    Philipp Tomsich
     

17 Mar, 2017

1 commit

  • Rockchip SoCs allow the spl code to be rc4-encoded, not only the
    image header, but only newer SoCs allow this encoding to be disabled.

    The rk3188 is not part of those and requires its boot code to be
    rc4-encoded with the regular key. So add the ability to do this
    encoding via a setting on a per-soc basis when building spl images.

    Signed-off-by: Heiko Stuebner
    Reviewed-by: Simon Glass
    Reviewed-by: Kever Yang
    Tested-by: Kever Yang

    Heiko Stübner
     

08 Jan, 2016

1 commit


14 Dec, 2015

2 commits


01 Dec, 2015

2 commits

  • The Rockchip boot ROM could load & run an initial spl loader,
    and continue to load a second level boot-loader(which stored
    right after the initial loader) when it returns.
    Modify idblock generation code to support it.

    Signed-off-by: Jeffy Chen
    Acked-by: Simon Glass

    Jeffy Chen
     
  • Our chips may have different max spl size and spl header, so
    we need to add configs for that.

    Signed-off-by: Jeffy Chen
    Acked-by: Simon Glass
    Dropped CONFIG_ROCKCHIP_MAX_SPL_SIZE from rk3288_common.h,
    Added $(if...) to tools/Makefile to fix widespread build breakage
    Signed-off-by: Simon Glass

    Series-changes: 8
    - Drop CONFIG_ROCKCHIP_MAX_SPL_SIZE from rk3288_common.h,
    - Add $(if...) to tools/Makefile to fix widespread build breakage

    Jeffy Chen
     

03 Sep, 2015

1 commit

  • The Rockchip boot ROM requires a particular file format for booting from SPI.
    It consists of a 512-byte header encoded with RC4, some padding and then up
    to 32KB of executable code in 2KB blocks, separated by 2KB empty blocks.

    Add support to mkimage so that an SPL image (u-boot-spl-dtb.bin) can be
    converted to this format. This allows booting from SPI flash on supported
    machines.

    Signed-off-by: Simon Glass

    Simon Glass