spl: Allow tiny printf() to be controlled in SPL and TPL

At present there is only one control for this and it is used for both SPL
and TPL. But SPL might have a lot more space than TPL so the extra cost of
a full printf() might be acceptable.

Split the option into two, providing separate SPL and TPL controls. The
TPL setting defaults to the same as SPL.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
Simon Glass 2019-09-25 08:56:27 -06:00 committed by Bin Meng
parent 535e07846a
commit 27084c03d3
18 changed files with 43 additions and 31 deletions

View File

@ -954,7 +954,7 @@ config ARCH_SUNXI
select USB if DISTRO_DEFAULTS select USB if DISTRO_DEFAULTS
select USB_KEYBOARD if DISTRO_DEFAULTS select USB_KEYBOARD if DISTRO_DEFAULTS
select USB_STORAGE if DISTRO_DEFAULTS select USB_STORAGE if DISTRO_DEFAULTS
select USE_TINY_PRINTF select SPL_USE_TINY_PRINTF
imply CMD_DM imply CMD_DM
imply CMD_GPT imply CMD_GPT
imply CMD_UBI if NAND imply CMD_UBI if NAND

View File

@ -11,7 +11,7 @@ config OMAP34XX
select ARM_ERRATA_454179 select ARM_ERRATA_454179
select ARM_ERRATA_621766 select ARM_ERRATA_621766
select ARM_ERRATA_725233 select ARM_ERRATA_725233
select USE_TINY_PRINTF if SPL select SPL_USE_TINY_PRINTF if SPL
imply NAND_OMAP_GPMC imply NAND_OMAP_GPMC
imply SPL_FS_EXT4 imply SPL_FS_EXT4
imply SPL_FS_FAT imply SPL_FS_FAT
@ -31,7 +31,7 @@ config OMAP34XX
config OMAP44XX config OMAP44XX
bool "OMAP44XX SoC" bool "OMAP44XX SoC"
select USE_TINY_PRINTF select SPL_USE_TINY_PRINTF
imply NAND_OMAP_ELM imply NAND_OMAP_ELM
imply NAND_OMAP_GPMC imply NAND_OMAP_GPMC
imply SPL_DISPLAY_PRINT imply SPL_DISPLAY_PRINT
@ -124,7 +124,7 @@ config AM33XX
imply SPL_NAND_SUPPORT imply SPL_NAND_SUPPORT
imply SYS_I2C_OMAP24XX imply SYS_I2C_OMAP24XX
imply SYS_THUMB_BUILD imply SYS_THUMB_BUILD
imply USE_TINY_PRINTF imply SPL_USE_TINY_PRINTF
help help
Support for AM335x SOC from Texas Instruments. Support for AM335x SOC from Texas Instruments.
The AM335x high performance SOC features a Cortex-A8 The AM335x high performance SOC features a Cortex-A8

View File

@ -32,7 +32,7 @@ config RCAR_GEN3
imply SPL_SYS_MALLOC_SIMPLE imply SPL_SYS_MALLOC_SIMPLE
imply SPL_TINY_MEMSET imply SPL_TINY_MEMSET
imply SPL_YMODEM_SUPPORT imply SPL_YMODEM_SUPPORT
imply USE_TINY_PRINTF imply SPL_USE_TINY_PRINTF
config RZA1 config RZA1
prompt "Renesas ARM SoCs RZ/A1 (32bit)" prompt "Renesas ARM SoCs RZ/A1 (32bit)"

View File

@ -65,7 +65,7 @@ config TARGET_GOSE
select DM_SERIAL select DM_SERIAL
select SPL_TINY_MEMSET select SPL_TINY_MEMSET
select SUPPORT_SPL select SUPPORT_SPL
select USE_TINY_PRINTF select SPL_USE_TINY_PRINTF
imply CMD_DM imply CMD_DM
config TARGET_KOELSCH config TARGET_KOELSCH
@ -74,7 +74,7 @@ config TARGET_KOELSCH
select DM_SERIAL select DM_SERIAL
select SPL_TINY_MEMSET select SPL_TINY_MEMSET
select SUPPORT_SPL select SUPPORT_SPL
select USE_TINY_PRINTF select SPL_USE_TINY_PRINTF
imply CMD_DM imply CMD_DM
config TARGET_LAGER config TARGET_LAGER
@ -83,7 +83,7 @@ config TARGET_LAGER
select DM_SERIAL select DM_SERIAL
select SPL_TINY_MEMSET select SPL_TINY_MEMSET
select SUPPORT_SPL select SUPPORT_SPL
select USE_TINY_PRINTF select SPL_USE_TINY_PRINTF
imply CMD_DM imply CMD_DM
config TARGET_KZM9G config TARGET_KZM9G
@ -95,7 +95,7 @@ config TARGET_ALT
select DM_SERIAL select DM_SERIAL
select SPL_TINY_MEMSET select SPL_TINY_MEMSET
select SUPPORT_SPL select SUPPORT_SPL
select USE_TINY_PRINTF select SPL_USE_TINY_PRINTF
imply CMD_DM imply CMD_DM
config TARGET_SILK config TARGET_SILK
@ -104,7 +104,7 @@ config TARGET_SILK
select DM_SERIAL select DM_SERIAL
select SPL_TINY_MEMSET select SPL_TINY_MEMSET
select SUPPORT_SPL select SUPPORT_SPL
select USE_TINY_PRINTF select SPL_USE_TINY_PRINTF
imply CMD_DM imply CMD_DM
config TARGET_PORTER config TARGET_PORTER
@ -113,7 +113,7 @@ config TARGET_PORTER
select DM_SERIAL select DM_SERIAL
select SPL_TINY_MEMSET select SPL_TINY_MEMSET
select SUPPORT_SPL select SUPPORT_SPL
select USE_TINY_PRINTF select SPL_USE_TINY_PRINTF
imply CMD_DM imply CMD_DM
config TARGET_STOUT config TARGET_STOUT
@ -122,7 +122,7 @@ config TARGET_STOUT
select DM_SERIAL select DM_SERIAL
select SPL_TINY_MEMSET select SPL_TINY_MEMSET
select SUPPORT_SPL select SUPPORT_SPL
select USE_TINY_PRINTF select SPL_USE_TINY_PRINTF
imply CMD_DM imply CMD_DM
endchoice endchoice

View File

@ -45,7 +45,7 @@ config TARGET_SOCFPGA_ARRIA10
select SPL_SYSCON if SPL select SPL_SYSCON if SPL
select ETH_DESIGNWARE_SOCFPGA select ETH_DESIGNWARE_SOCFPGA
imply FPGA_SOCFPGA imply FPGA_SOCFPGA
imply USE_TINY_PRINTF imply SPL_USE_TINY_PRINTF
config TARGET_SOCFPGA_CYCLONE5 config TARGET_SOCFPGA_CYCLONE5
bool bool
@ -59,7 +59,7 @@ config TARGET_SOCFPGA_GEN5
imply SPL_SIZE_LIMIT_SUBTRACT_MALLOC imply SPL_SIZE_LIMIT_SUBTRACT_MALLOC
imply SPL_STACK_R imply SPL_STACK_R
imply SPL_SYS_MALLOC_SIMPLE imply SPL_SYS_MALLOC_SIMPLE
imply USE_TINY_PRINTF imply SPL_USE_TINY_PRINTF
config TARGET_SOCFPGA_STRATIX10 config TARGET_SOCFPGA_STRATIX10
bool bool

View File

@ -963,7 +963,7 @@ config SPL_SERIAL_SUPPORT
for displaying messages while SPL is running. It also brings in for displaying messages while SPL is running. It also brings in
printf() and panic() functions. This should normally be enabled printf() and panic() functions. This should normally be enabled
unless there are space reasons not to. Even then, consider unless there are space reasons not to. Even then, consider
enabling USE_TINY_PRINTF which is a small printf() version. enabling SPL_USE_TINY_PRINTF which is a small printf() version.
config SPL_SPI_FLASH_SUPPORT config SPL_SPI_FLASH_SUPPORT
bool "Support SPI flash drivers" bool "Support SPI flash drivers"

View File

@ -173,7 +173,7 @@ parse_num (char *s, unsigned long *val, char **es, char *delim)
} }
#if defined(DEBUG) && !defined(CONFIG_USE_TINY_PRINTF) #if defined(DEBUG) && !CONFIG_IS_ENABLED(USE_TINY_PRINTF)
/* /*
* Note: this debug setup works by storing the strings in a fixed buffer * Note: this debug setup works by storing the strings in a fixed buffer
*/ */

View File

@ -51,5 +51,5 @@ CONFIG_SPL_DM_REGULATOR=y
CONFIG_DM_REGULATOR_FIXED=y CONFIG_DM_REGULATOR_FIXED=y
CONFIG_DM_REGULATOR_TPS65910=y CONFIG_DM_REGULATOR_TPS65910=y
CONFIG_CONS_INDEX=4 CONFIG_CONS_INDEX=4
# CONFIG_USE_TINY_PRINTF is not set # CONFIG_SPL_USE_TINY_PRINTF is not set
# CONFIG_EFI_LOADER is not set # CONFIG_EFI_LOADER is not set

View File

@ -67,7 +67,7 @@ CONFIG_USB=y
CONFIG_DM_USB=y CONFIG_DM_USB=y
CONFIG_USB_XHCI_HCD=y CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_DWC3=y CONFIG_USB_XHCI_DWC3=y
# CONFIG_USE_TINY_PRINTF is not set # CONFIG_SPL_USE_TINY_PRINTF is not set
CONFIG_RSA=y CONFIG_RSA=y
CONFIG_SPL_RSA=y CONFIG_SPL_RSA=y
CONFIG_EFI_LOADER_BOUNCE_BUFFER=y CONFIG_EFI_LOADER_BOUNCE_BUFFER=y

View File

@ -67,5 +67,5 @@ CONFIG_USB=y
CONFIG_DM_USB=y CONFIG_DM_USB=y
CONFIG_USB_XHCI_HCD=y CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_DWC3=y CONFIG_USB_XHCI_DWC3=y
# CONFIG_USE_TINY_PRINTF is not set # CONFIG_SPL_USE_TINY_PRINTF is not set
CONFIG_EFI_LOADER_BOUNCE_BUFFER=y CONFIG_EFI_LOADER_BOUNCE_BUFFER=y

View File

@ -65,7 +65,7 @@ CONFIG_USB=y
CONFIG_DM_USB=y CONFIG_DM_USB=y
CONFIG_USB_XHCI_HCD=y CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_DWC3=y CONFIG_USB_XHCI_DWC3=y
# CONFIG_USE_TINY_PRINTF is not set # CONFIG_SPL_USE_TINY_PRINTF is not set
CONFIG_RSA=y CONFIG_RSA=y
CONFIG_SPL_RSA=y CONFIG_SPL_RSA=y
CONFIG_EFI_LOADER_BOUNCE_BUFFER=y CONFIG_EFI_LOADER_BOUNCE_BUFFER=y

View File

@ -65,5 +65,5 @@ CONFIG_USB=y
CONFIG_DM_USB=y CONFIG_DM_USB=y
CONFIG_USB_XHCI_HCD=y CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_DWC3=y CONFIG_USB_XHCI_DWC3=y
# CONFIG_USE_TINY_PRINTF is not set # CONFIG_SPL_USE_TINY_PRINTF is not set
CONFIG_EFI_LOADER_BOUNCE_BUFFER=y CONFIG_EFI_LOADER_BOUNCE_BUFFER=y

View File

@ -191,7 +191,7 @@ CONFIG_OSD=y
CONFIG_SANDBOX_OSD=y CONFIG_SANDBOX_OSD=y
CONFIG_FS_CBFS=y CONFIG_FS_CBFS=y
CONFIG_FS_CRAMFS=y CONFIG_FS_CRAMFS=y
# CONFIG_USE_TINY_PRINTF is not set # CONFIG_SPL_USE_TINY_PRINTF is not set
CONFIG_CMD_DHRYSTONE=y CONFIG_CMD_DHRYSTONE=y
CONFIG_TPM=y CONFIG_TPM=y
CONFIG_LZ4=y CONFIG_LZ4=y

View File

@ -294,7 +294,7 @@ int dm_gpio_request(struct gpio_desc *desc, const char *label)
static int dm_gpio_requestf(struct gpio_desc *desc, const char *fmt, ...) static int dm_gpio_requestf(struct gpio_desc *desc, const char *fmt, ...)
{ {
#if !defined(CONFIG_SPL_BUILD) || !defined(CONFIG_USE_TINY_PRINTF) #if !defined(CONFIG_SPL_BUILD) || !CONFIG_IS_ENABLED(USE_TINY_PRINTF)
va_list args; va_list args;
char buf[40]; char buf[40];
@ -343,7 +343,7 @@ int gpio_request(unsigned gpio, const char *label)
*/ */
int gpio_requestf(unsigned gpio, const char *fmt, ...) int gpio_requestf(unsigned gpio, const char *fmt, ...)
{ {
#if !defined(CONFIG_SPL_BUILD) || !defined(CONFIG_USE_TINY_PRINTF) #if !defined(CONFIG_SPL_BUILD) || !CONFIG_IS_ENABLED(USE_TINY_PRINTF)
va_list args; va_list args;
char buf[40]; char buf[40];

View File

@ -2577,7 +2577,7 @@ static int mmc_startup(struct mmc *mmc)
bdesc->lba = lldiv(mmc->capacity, mmc->read_bl_len); bdesc->lba = lldiv(mmc->capacity, mmc->read_bl_len);
#if !defined(CONFIG_SPL_BUILD) || \ #if !defined(CONFIG_SPL_BUILD) || \
(defined(CONFIG_SPL_LIBCOMMON_SUPPORT) && \ (defined(CONFIG_SPL_LIBCOMMON_SUPPORT) && \
!defined(CONFIG_USE_TINY_PRINTF)) !CONFIG_IS_ENABLED(USE_TINY_PRINTF))
sprintf(bdesc->vendor, "Man %06x Snr %04x%04x", sprintf(bdesc->vendor, "Man %06x Snr %04x%04x",
mmc->cid[0] >> 24, (mmc->cid[2] & 0xffff), mmc->cid[0] >> 24, (mmc->cid[2] & 0xffff),
(mmc->cid[3] >> 16) & 0xffff); (mmc->cid[3] >> 16) & 0xffff);

View File

@ -66,7 +66,7 @@ int spi_flash_probe_bus_cs(unsigned int busnum, unsigned int cs,
char *str; char *str;
int ret; int ret;
#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_USE_TINY_PRINTF) #if defined(CONFIG_SPL_BUILD) && CONFIG_IS_ENABLED(USE_TINY_PRINTF)
str = "spi_flash"; str = "spi_flash";
#else #else
char name[30]; char name[30];

View File

@ -40,12 +40,12 @@ config PRINTF
config SPL_PRINTF config SPL_PRINTF
bool bool
select SPL_SPRINTF select SPL_SPRINTF
select SPL_STRTO if !USE_TINY_PRINTF select SPL_STRTO if !SPL_USE_TINY_PRINTF
config TPL_PRINTF config TPL_PRINTF
bool bool
select TPL_SPRINTF select TPL_SPRINTF
select TPL_STRTO if !USE_TINY_PRINTF select TPL_STRTO if !TPL_USE_TINY_PRINTF
config SPRINTF config SPRINTF
bool bool
@ -95,9 +95,9 @@ config SYS_HZ
get_timer() must operate in milliseconds and this option must be get_timer() must operate in milliseconds and this option must be
set to 1000. set to 1000.
config USE_TINY_PRINTF config SPL_USE_TINY_PRINTF
bool "Enable tiny printf() version" bool "Enable tiny printf() version"
depends on SPL || TPL depends on SPL
default y default y
help help
This option enables a tiny, stripped down printf version. This option enables a tiny, stripped down printf version.
@ -107,6 +107,18 @@ config USE_TINY_PRINTF
The supported format specifiers are %c, %s, %u/%d and %x. The supported format specifiers are %c, %s, %u/%d and %x.
config TPL_USE_TINY_PRINTF
bool "Enable tiny printf() version"
depends on TPL
default y if SPL_USE_TINY_PRINTF
help
This option enables a tiny, stripped down printf version.
This should only be used in space limited environments,
like SPL versions with hard memory limits. This version
reduces the code size by about 2.5KiB on armv7.
The supported format specifiers are %c, %s, %u/%d and %x.
config PANIC_HANG config PANIC_HANG
bool "Do not reset the system on fatal error" bool "Do not reset the system on fatal error"
help help

View File

@ -106,7 +106,7 @@ obj-y += panic.o
ifeq ($(CONFIG_$(SPL_TPL_)BUILD),y) ifeq ($(CONFIG_$(SPL_TPL_)BUILD),y)
# SPL U-Boot may use full-printf, tiny-printf or none at all # SPL U-Boot may use full-printf, tiny-printf or none at all
ifdef CONFIG_USE_TINY_PRINTF ifdef CONFIG_$(SPL_TPL_)USE_TINY_PRINTF
obj-$(CONFIG_$(SPL_TPL_)SPRINTF) += tiny-printf.o obj-$(CONFIG_$(SPL_TPL_)SPRINTF) += tiny-printf.o
else else
obj-$(CONFIG_$(SPL_TPL_)SPRINTF) += vsprintf.o strmhz.o obj-$(CONFIG_$(SPL_TPL_)SPRINTF) += vsprintf.o strmhz.o