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


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
     

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

2 commits

  • Instead of creating a rockchip SPL SD card image with 32KB of zeros
    which can be written to the start of an SD card, create the images with
    only the useful data that should be written to an offset of 32KB on the
    SD card.

    The first 32 kilobytes aren't needed for bootup and only serve as
    convenient way of accidentally obliterating your partition table.

    Signed-off-by: Sjoerd Simons
    Acked-by: Simon Glass
    Signed-off-by: Simon Glass

    Sjoerd Simons
     
  • The Rockchip boot ROM requires a particular file format. It consists of
    64KB of zeroes, a 512-byte header encoded with RC4, and then some executable
    code.

    Add support to mkimage so that an SPL image (u-boot-spl-dtb.bin) can be
    converted to this format.

    Signed-off-by: Simon Glass

    Simon Glass