[U-Boot] [PATCH v5 19/21] rockchip: Add max init size & chip tag configs

Simon Glass sjg at chromium.org
Fri Nov 13 19:13:54 CET 2015


Hi Lin,

On 10 November 2015 at 03:24, Lin Huang <hl at rock-chips.com> wrote:
> From: Jeffy Chen <jeffy.chen at 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 at 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 at 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 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


More information about the U-Boot mailing list