u-boot: add support for full image socfpga mkpimage
authorLionel Flandrin <lionel@svkt.org>
Mon, 13 Feb 2017 15:33:29 +0000 (16:33 +0100)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sun, 5 Mar 2017 21:28:21 +0000 (22:28 +0100)
On older SoCFPGA SoCs, there was not enough SRAM to fit the entire
U-Boot, so a SPL model was used. The SPL was therefore the binary that
had to be "prepared" to be loaded by the ROM code using the mkpimage
tool.

With newer SoCFPGA SoCs, there is enough SRAM to fit the entire U-Boot,
and therefore the ROM code directly loads U-Boot. In this case, it's the
real U-Boot image (not the SPL) that needs to be prepared using
mkpimage.

This code adds support for the newer SoCFPGA SoCs, by adjusting the
mkpimage related logic to apply on the SPL if an SPL is enabled, or on
the full U-Boot image otherwise.

Signed-off-by: Lionel Flandrin <lionel@svkt.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
boot/uboot/Config.in
boot/uboot/uboot.mk

index 1aa2cb7b43f0a4187d283ac293e2f5a28f86e478..5601e01b48510a328fe0dd48d4099566374cafe5 100644 (file)
@@ -343,13 +343,29 @@ config BR2_TARGET_UBOOT_ZYNQ_IMAGE
          to be set.
 
 config BR2_TARGET_UBOOT_ALTERA_SOCFPGA_IMAGE_CRC
-       bool "CRC SPL image for Altera SoC FPGA"
+       bool "CRC image for Altera SoC FPGA (mkpimage)"
        depends on BR2_arm
-       depends on BR2_TARGET_UBOOT_SPL
+       depends on BR2_TARGET_UBOOT_SPL || BR2_TARGET_UBOOT_FORMAT_DTB_BIN
        help
-         Generate SPL image fixed by the mkpimage tool to enable
+         Pass the U-Boot image through the mkpimage tool to enable
          booting on the Altera SoC FPGA based platforms.
 
+         On some platforms, it's the SPL that needs to be passed
+         through mkpimage. On some other platforms there is no SPL
+         because the internal SRAM is big enough to store the full
+         U-Boot. In this case, it's directly the full U-Boot image
+         that is passed through mkpimage.
+
+         If BR2_TARGET_UBOOT_SPL is enabled then
+         BR2_TARGET_UBOOT_SPL_NAME is converted by mkpimage using
+         header version 0.
+
+         Otherwise the full u-boot-dtb.bin is converted using
+         mkpimage header version 1.
+
+         In either case the resulting file will be given a .crc
+         extension.
+
 menuconfig BR2_TARGET_UBOOT_ENVIMAGE
        bool "Environment image"
        help
index ac3b42e42ddaca32646eb471a23bcd2d5ed10828..1e22eaa8eab1ff67cf5ad3502fff00c629cee716 100644 (file)
@@ -262,9 +262,17 @@ UBOOT_POST_INSTALL_IMAGES_HOOKS += UBOOT_GENERATE_ZYNQ_IMAGE
 endif
 
 ifeq ($(BR2_TARGET_UBOOT_ALTERA_SOCFPGA_IMAGE_CRC),y)
+ifeq ($(BR2_TARGET_UBOOT_SPL),y)
+UBOOT_CRC_ALTERA_SOCFPGA_INPUT_IMAGES = $(call qstrip,$(BR2_TARGET_UBOOT_SPL_NAME))
+UBOOT_CRC_ALTERA_SOCFPGA_HEADER_VERSION = 0
+else
+UBOOT_CRC_ALTERA_SOCFPGA_INPUT_IMAGES = u-boot-dtb.bin
+UBOOT_CRC_ALTERA_SOCFPGA_HEADER_VERSION = 1
+endif
 define UBOOT_CRC_ALTERA_SOCFPGA_IMAGE
-       $(foreach f,$(call qstrip,$(BR2_TARGET_UBOOT_SPL_NAME)), \
+       $(foreach f,$(UBOOT_CRC_ALTERA_SOCFPGA_INPUT_IMAGES), \
                $(HOST_DIR)/usr/bin/mkpimage \
+                       -v $(UBOOT_CRC_ALTERA_SOCFPGA_HEADER_VERSION) \
                        -o $(BINARIES_DIR)/$(notdir $(call qstrip,$(f))).crc \
                        $(@D)/$(call qstrip,$(f))
        )