From mboxrd@z Thu Jan 1 00:00:00 1970 From: Simon Glass Date: Fri, 13 Nov 2015 11:13:54 -0700 Subject: [U-Boot] [PATCH v5 19/21] rockchip: Add max init size & chip tag configs In-Reply-To: <1447151098-2628-20-git-send-email-hl@rock-chips.com> References: <1447151098-2628-1-git-send-email-hl@rock-chips.com> <1447151098-2628-20-git-send-email-hl@rock-chips.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Lin, On 10 November 2015 at 03:24, Lin Huang wrote: > From: Jeffy Chen > > Our chips may have different sram size limits and chip tag, so > we need to add configs for that. > > Signed-off-by: Jeffy Chen > --- > 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 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 at 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