
Hi Lin,
On 10 November 2015 at 03:24, Lin Huang hl@rock-chips.com wrote:
From: Jeffy Chen jeffy.chen@rock-chips.com
Our chips may have different sram size limits and chip tag, so we need to add configs for that.
Signed-off-by: Jeffy Chen jeffy.chen@rock-chips.com
Changes in v1: None Changes in v2: None Changes in v3: None Changes in v4: None Changes in v5:
- Adviced by Simon:
- move CONFIG_ROCKCHIP_MAX_INIT_SIZE and CONFIG_ROCKCHIP_CHIP_TAG
- to arch/arm/mach-rokchip/Kconfig
arch/arm/mach-rockchip/Kconfig | 11 +++++++++++ arch/arm/mach-rockchip/rk3036/Kconfig | 6 ++++++ arch/arm/mach-rockchip/rk3288/Kconfig | 6 ++++++ include/configs/rk3036_common.h | 3 --- tools/Makefile | 6 ++++++ tools/rkcommon.c | 2 +- tools/rkcommon.h | 1 - tools/rkimage.c | 2 +- tools/rksd.c | 4 ++-- tools/rkspi.c | 4 ++-- 10 files changed, 35 insertions(+), 10 deletions(-)
Acked-by: Simon Glass sjg@chromium.org
But please see ideas below.
diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig index 6b608db..6dddbab 100644 --- a/arch/arm/mach-rockchip/Kconfig +++ b/arch/arm/mach-rockchip/Kconfig @@ -17,6 +17,17 @@ config ROCKCHIP_RK3036 and video codec support. Peripherals include Gigabit Ethernet, USB2 host and OTG, SDIO, I2S, UART, SPI, I2C and PWMs.
+config ROCKCHIP_CHIP_TAG
string "Tag of initial loader"
help
Tag of initial loader, which depends on the chip type.
What is a tag? This should be more descriptive with more detail. E.g. the tag is a 4-byte header at the start of the image. It is required by the boot ROM...
+config ROCKCHIP_MAX_INIT_SIZE
hex "Max size of initial loader"
help
Max size of initial loader, which is mostly limited by chip's sram
size.
Is the initial loader the 'SPL' image, or is it more than that? I am not keen on the name INIT, since it could mean anything. So if it means SPL, can we use that name? Also please add more detail to the help: exactly how is it limited? Does the loader need to be the same size as SRAM, or at most xx bytes smaller.
config SYS_MALLOC_F default y
diff --git a/arch/arm/mach-rockchip/rk3036/Kconfig b/arch/arm/mach-rockchip/rk3036/Kconfig index 0fbc58e..3fa67bc 100644 --- a/arch/arm/mach-rockchip/rk3036/Kconfig +++ b/arch/arm/mach-rockchip/rk3036/Kconfig @@ -9,6 +9,12 @@ config SYS_SOC config SYS_MALLOC_F_LEN default 0x400
+config ROCKCHIP_CHIP_TAG
default "RK30"
+config ROCKCHIP_MAX_INIT_SIZE
default 0x1000
config ROCKCHIP_COMMON bool "Support rk common fuction"
diff --git a/arch/arm/mach-rockchip/rk3288/Kconfig b/arch/arm/mach-rockchip/rk3288/Kconfig index d0a7276..ac4dd94 100644 --- a/arch/arm/mach-rockchip/rk3288/Kconfig +++ b/arch/arm/mach-rockchip/rk3288/Kconfig @@ -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_CHIP_TAG
default "RK32"
+config ROCKCHIP_MAX_INIT_SIZE
default 0x8000
config SYS_SOC default "rockchip"
diff --git a/include/configs/rk3036_common.h b/include/configs/rk3036_common.h index 92b6119..b7f78d5 100644 --- a/include/configs/rk3036_common.h +++ b/include/configs/rk3036_common.h @@ -37,9 +37,6 @@ #define CONFIG_SPL_STACK 0x10081fff #define CONFIG_SPL_TEXT_BASE 0x10081004
-#define CONFIG_ROCKCHIP_MAX_INIT_SIZE (4 << 10) -#define CONFIG_ROCKCHIP_CHIP_TAG "RK30"
#define CONFIG_ROCKCHIP_COMMON
/* MMC/SD IP block */ diff --git a/tools/Makefile b/tools/Makefile index 9082bda..39a852f 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -108,6 +108,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_INIT_SIZE=$(CONFIG_ROCKCHIP_MAX_INIT_SIZE) \
-DCONFIG_ROCKCHIP_CHIP_TAG="\"$(CONFIG_ROCKCHIP_CHIP_TAG)\""
+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 . diff --git a/tools/rkcommon.c b/tools/rkcommon.c index 4389622..7aa4c7c 100644 --- a/tools/rkcommon.c +++ b/tools/rkcommon.c @@ -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_INIT_SIZE) return -ENOSPC; memset(buf, '\0', RK_CODE1_OFFSET * RK_BLK_SIZE);
diff --git a/tools/rkcommon.h b/tools/rkcommon.h index 57fd726..39b1d52 100644 --- a/tools/rkcommon.h +++ b/tools/rkcommon.h @@ -11,7 +11,6 @@ enum { RK_BLK_SIZE = 512, RK_CODE1_OFFSET = 4,
RK_MAX_CODE1_SIZE = 32 << 10,
};
/** diff --git a/tools/rkimage.c b/tools/rkimage.c index 7b292f4..efd91bb 100644 --- a/tools/rkimage.c +++ b/tools/rkimage.c @@ -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_CHIP_TAG, 4);
}
static int rkimage_extract_subimage(void *buf, struct image_tool_params *params) diff --git a/tools/rksd.c b/tools/rksd.c index a8dbe98..2dccb78 100644 --- a/tools/rksd.c +++ b/tools/rksd.c @@ -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_CHIP_TAG, 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_INIT_SIZE; debug("pad_size %x\n", pad_size); return pad_size - params->file_size;
diff --git a/tools/rkspi.c b/tools/rkspi.c index a3c4c73..e16d5c0 100644 --- a/tools/rkspi.c +++ b/tools/rkspi.c @@ -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_CHIP_TAG, 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_INIT_SIZE + 0x7ff) / 0x800 * 0x800; params->orig_file_size = pad_size; /* We will double the image size due to the SPI format */
-- 1.9.1
Regards, Simon