]> git.sur5r.net Git - u-boot/commitdiff
rockchip: Add max spl size & spl header configs
authorJeffy Chen <jeffy.chen@rock-chips.com>
Tue, 17 Nov 2015 06:20:29 +0000 (14:20 +0800)
committerSimon Glass <sjg@chromium.org>
Tue, 1 Dec 2015 15:07:22 +0000 (08:07 -0700)
Our chips may have different max spl size and spl header, so
we need to add configs for that.

Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
Acked-by: Simon Glass <sjg@chromium.org>
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 <sjg@chromium.org>
Series-changes: 8
- Drop CONFIG_ROCKCHIP_MAX_SPL_SIZE from rk3288_common.h,
- Add $(if...) to tools/Makefile to fix widespread build breakage

arch/arm/mach-rockchip/Kconfig
arch/arm/mach-rockchip/rk3036/Kconfig
arch/arm/mach-rockchip/rk3288/Kconfig
tools/Makefile
tools/rkcommon.c
tools/rkcommon.h
tools/rkimage.c
tools/rksd.c
tools/rkspi.c

index a2069f878d94db0662d210c51d00e66360a0f25b..961a40264a55cdf31f7e3cb8c86a31792f20db03 100644 (file)
@@ -17,6 +17,21 @@ config ROCKCHIP_RK3036
          and video codec support. Peripherals include Gigabit Ethernet,
          USB2 host and OTG, SDIO, I2S, UART, SPI, I2C and PWMs.
 
+config ROCKCHIP_SPL_HDR
+       string "Header of rockchip's spl loader"
+       help
+         Rockchip's bootrom requires the spl loader to start with a 4-bytes
+         header. The content of this header depends on the chip type.
+
+config ROCKCHIP_MAX_SPL_SIZE
+       hex "Max size of rockchip's spl loader"
+       help
+         Different chip may have different sram size. And if we want to jump
+         back to the bootrom after spl, we may need to reserve some sram space
+         for the bootrom.
+         The max spl loader size should be sram size minus reserved
+         size(if needed)
+
 config SYS_MALLOC_F
        default y
 
index 0fbc58eba2894a3e54ddfba599840bb2fbe5c344..95fb2b946338f493cc22b4dbf008c45092ade872 100644 (file)
@@ -9,6 +9,12 @@ config SYS_SOC
 config SYS_MALLOC_F_LEN
        default 0x400
 
+config ROCKCHIP_SPL_HDR
+        default "RK30"
+
+config ROCKCHIP_MAX_SPL_SIZE
+        default 0x1000
+
 config ROCKCHIP_COMMON
        bool "Support rk common fuction"
 
index d0a72767c88075ba78846bb2631313f02e0d789c..3de3878cd6e1284986288f975f8dcc5616432a49 100644 (file)
@@ -16,6 +16,12 @@ config TARGET_CHROMEBOOK_JERRY
          WiFi. It includes a Chrome OS EC (Cortex-M3) to provide access to
          the keyboard and battery functions.
 
+config ROCKCHIP_SPL_HDR
+       default "RK32"
+
+config ROCKCHIP_MAX_SPL_SIZE
+       default 0x8000
+
 config SYS_SOC
        default "rockchip"
 
index 9cfd80b67095d449812d4341446cbf488b93ca0d..7b4cd3f538f2f7f36cd82a7259e8c480bfc4802c 100644 (file)
@@ -64,7 +64,7 @@ RSA_OBJS-$(CONFIG_FIT_SIGNATURE) := $(addprefix lib/rsa/, \
                                        rsa-sign.o rsa-verify.o rsa-checksum.o \
                                        rsa-mod-exp.o)
 
-ROCKCHIP_OBS = lib/rc4.o rkcommon.o rkimage.o rksd.o
+ROCKCHIP_OBS = $(if $(CONFIG_ARCH_ROCKCHIP),lib/rc4.o rkcommon.o rkimage.o rksd.o,)
 
 # common objs for dumpimage and mkimage
 dumpimage-mkimage-objs := aisimage.o \
@@ -109,6 +109,12 @@ fit_check_sign-objs   := $(dumpimage-mkimage-objs) fit_check_sign.o
 
 # TODO(sjg@chromium.org): Is this correct on Mac OS?
 
+ifneq ($(CONFIG_ARCH_ROCKCHIP),)
+HOST_EXTRACFLAGS += \
+               -DCONFIG_ROCKCHIP_MAX_SPL_SIZE=$(CONFIG_ROCKCHIP_MAX_SPL_SIZE) \
+               -DCONFIG_ROCKCHIP_SPL_HDR="\"$(CONFIG_ROCKCHIP_SPL_HDR)\""
+endif
+
 ifneq ($(CONFIG_MX23)$(CONFIG_MX28),)
 # Add CONFIG_MXS into host CFLAGS, so we can check whether or not register
 # the mxsimage support within tools/mxsimage.c .
index 43896226c0d70fdb7f91d318e99fab3df0887072..18778aae3e5b936f2f2b44a6a46a5b663a8b09e1 100644 (file)
@@ -50,7 +50,7 @@ int rkcommon_set_header(void *buf, uint file_size)
 {
        struct header0_info *hdr;
 
-       if (file_size > RK_MAX_CODE1_SIZE)
+       if (file_size > CONFIG_ROCKCHIP_MAX_SPL_SIZE)
                return -ENOSPC;
 
        memset(buf,  '\0', RK_CODE1_OFFSET * RK_BLK_SIZE);
index 57fd726004c89f324b420793f3549903a300ff01..39b1d521efea1b975d82443f324455962054e96a 100644 (file)
@@ -11,7 +11,6 @@
 enum {
        RK_BLK_SIZE             = 512,
        RK_CODE1_OFFSET         = 4,
-       RK_MAX_CODE1_SIZE       = 32 << 10,
 };
 
 /**
index 7b292f4235d1f43216c933cc5260b615bb73fbb0..73634e316bc7ff1955707b7ab421b4adf4010eca 100644 (file)
@@ -30,7 +30,7 @@ static void rkimage_print_header(const void *buf)
 static void rkimage_set_header(void *buf, struct stat *sbuf, int ifd,
                               struct image_tool_params *params)
 {
-       memcpy(buf, "RK32", 4);
+       memcpy(buf, CONFIG_ROCKCHIP_SPL_HDR, 4);
 }
 
 static int rkimage_extract_subimage(void *buf, struct image_tool_params *params)
index a8dbe9875094a81238d6ced076b661709981477e..30b149dd7b01b1107251937018d315ab902581a4 100644 (file)
@@ -50,7 +50,7 @@ static void rksd_set_header(void *buf,  struct stat *sbuf,  int ifd,
                       size);
        }
 
-       memcpy(buf + RKSD_SPL_HDR_START, "RK32", 4);
+       memcpy(buf + RKSD_SPL_HDR_START, CONFIG_ROCKCHIP_SPL_HDR, 4);
 }
 
 static int rksd_extract_subimage(void *buf,  struct image_tool_params *params)
@@ -72,7 +72,7 @@ static int rksd_vrec_header(struct image_tool_params *params,
 {
        int pad_size;
 
-       pad_size = RKSD_SPL_HDR_START + RK_MAX_CODE1_SIZE;
+       pad_size = RKSD_SPL_HDR_START + CONFIG_ROCKCHIP_MAX_SPL_SIZE;
        debug("pad_size %x\n", pad_size);
 
        return pad_size - params->file_size;
index a3c4c73916440b3d1bb7b06ba192374cea04fc7f..13cc5932795e6304efc6deb4d1086088070495e2 100644 (file)
@@ -53,7 +53,7 @@ static void rkspi_set_header(void *buf, struct stat *sbuf, int ifd,
                       size);
        }
 
-       memcpy(buf + RKSPI_SPL_HDR_START, "RK32", 4);
+       memcpy(buf + RKSPI_SPL_HDR_START, CONFIG_ROCKCHIP_SPL_HDR, 4);
 
        /*
         * Spread the image out so we only use the first 2KB of each 4KB
@@ -89,7 +89,7 @@ static int rkspi_vrec_header(struct image_tool_params *params,
 {
        int pad_size;
 
-       pad_size = (RK_MAX_CODE1_SIZE + 0x7ff) / 0x800 * 0x800;
+       pad_size = (CONFIG_ROCKCHIP_MAX_SPL_SIZE + 0x7ff) / 0x800 * 0x800;
        params->orig_file_size = pad_size;
 
        /* We will double the image size due to the SPI format */