Message ID | 1434370862-8203-2-git-send-email-hs@denx.de |
---|---|
State | Superseded |
Delegated to: | Tom Rini |
Headers | show |
On Mon, Jun 15, 2015 at 02:20:59PM +0200, Heiko Schocher wrote: > This patch enables building SPL without > CONFIG_SPL_SERIAL_SUPPORT support. > > Signed-off-by: Heiko Schocher <hs@denx.de> I like that we're starting down this path. But can you explain why we need each of these changes: > arch/arm/lib/interrupts.c | 4 ++-- > arch/arm/mach-at91/arm926ejs/cpu.c | 2 +- > common/cli_readline.c | 2 +- > common/cli_simple.c | 2 +- > lib/display_options.c | 4 ++-- Having gone down the path of disabling output in SPL before due to size constraints I didn't need to modify those files (but it was on an older version) > common/image.c | 8 ++++++-- In this case I just said we only need those functions (and their strings!) when we have SPL_SERIAL available. It may be worth re-checking what parts of this file we really need available in SPL even. > common/spl/spl.c | 9 +++++++++ We should be able to be fine without a preloader_console_init() func I think.
Hello Tom, Am 15.06.2015 17:32, schrieb Tom Rini: > On Mon, Jun 15, 2015 at 02:20:59PM +0200, Heiko Schocher wrote: > >> This patch enables building SPL without >> CONFIG_SPL_SERIAL_SUPPORT support. >> >> Signed-off-by: Heiko Schocher <hs@denx.de> > > I like that we're starting down this path. But can you explain why we > need each of these changes: I try it ... The determining change is in "include/common.h", which twist the putc, puts, printf and vprintf functions to /dev/null ... so the compiler/linker can drop all them ... all other changes are only fixing compiler warnings, as for example vars no longer used ... >> arch/arm/lib/interrupts.c | 4 ++-- >> arch/arm/mach-at91/arm926ejs/cpu.c | 2 +- >> common/cli_readline.c | 2 +- >> common/cli_simple.c | 2 +- >> lib/display_options.c | 4 ++-- > > Having gone down the path of disabling output in SPL before due to size > constraints I didn't need to modify those files (but it was on an older > version) Do you have a patch? >> common/image.c | 8 ++++++-- > > In this case I just said we only need those functions (and their > strings!) when we have SPL_SERIAL available. It may be worth > re-checking what parts of this file we really need available in SPL > even. Hmm... my change is only to get rid of compiler warning "var defined but not used" with marking this vars with "__maybe_unused" ... so it is the less intrusive way ... If we have a header before the kernel image, we need functions from here in SPL, and maybe FIT is sometime supported/used in SPL ... maybe someone wants to print header info in SPL before booting it ... so I do not know if this would be an easy job ... >> common/spl/spl.c | 9 +++++++++ > > We should be able to be fine without a preloader_console_init() func I > think. I just defined a version for the non serial case, at this place there is already this function ... I only set: gd->bd = &bdata; gd->have_console = 0; which seems not to bad to me ... ok, "gd->have_console" should be 0. And why is in preloader_console_init() "gd->bd = &bdata;" ... this seems not the right place to me, as it has nothing to do with "console init" ... so maybe we really can drop it, but it gets called from: $ grep -lr preloader_console_init . ./arch/microblaze/cpu/spl.c ./arch/powerpc/cpu/ppc4xx/spl_boot.c ./arch/powerpc/cpu/mpc5xxx/spl_boot.c ./arch/arm/mach-davinci/spl.c ./arch/arm/mach-uniphier/spl.c ./arch/arm/mach-mvebu/spl.c ./arch/arm/mach-at91/spl_at91.c ./arch/arm/mach-at91/spl_atmel.c ./arch/arm/mach-tegra/spl.c ./arch/arm/mach-zynq/spl.c ./arch/arm/cpu/armv7/omap-common/boot-common.c ./arch/arm/cpu/armv7/omap-common/boot-common.c.orig ./arch/arm/cpu/armv7/sunxi/board.c ./arch/arm/cpu/armv7/omap3/board.c ./arch/arm/mach-socfpga/spl.c ./20150615/0004-spl-common-serial-build-SPL-without-serial-support.patch ./board/compulab/cm_fx6/spl.c ./board/gateworks/gw_ventana/gw_ventana_spl.c ./board/solidrun/mx6cuboxi/mx6cuboxi.c ./board/barco/platinum/spl_titanium.c ./board/barco/platinum/spl_picon.c ./board/kosagi/novena/novena_spl.c ./board/ti/ks2_evm/board.c ./board/LaCie/edminiv2/edminiv2.c ./board/wandboard/spl.c ./board/freescale/mx6sxsabresd/mx6sxsabresd.c ./board/freescale/ls1021aqds/ls1021aqds.c ./board/freescale/ls1021atwr/ls1021atwr.c ./board/freescale/mx6sabresd/mx6sabresd.c ./board/bachmann/ot1200/ot1200_spl.c ./board/work-microwave/work_92105/work_92105_spl.c ./board/woodburn/woodburn.c so ... we need a dummy function ... or? Thanks for your comments! bye, Heiko
diff --git a/arch/arm/lib/interrupts.c b/arch/arm/lib/interrupts.c index 06f4679..ec3fb77 100644 --- a/arch/arm/lib/interrupts.c +++ b/arch/arm/lib/interrupts.c @@ -123,8 +123,8 @@ void bad_mode (void) void show_regs (struct pt_regs *regs) { - unsigned long flags; - const char *processor_modes[] = { + unsigned long __maybe_unused flags; + const char __maybe_unused *processor_modes[] = { "USER_26", "FIQ_26", "IRQ_26", "SVC_26", "UK4_26", "UK5_26", "UK6_26", "UK7_26", "UK8_26", "UK9_26", "UK10_26", "UK11_26", diff --git a/arch/arm/mach-at91/arm926ejs/cpu.c b/arch/arm/mach-at91/arm926ejs/cpu.c index da1d359..990c689 100644 --- a/arch/arm/mach-at91/arm926ejs/cpu.c +++ b/arch/arm/mach-at91/arm926ejs/cpu.c @@ -42,7 +42,7 @@ void arch_preboot_os(void) #if defined(CONFIG_DISPLAY_CPUINFO) int print_cpuinfo(void) { - char buf[32]; + char __maybe_unused buf[32]; printf("CPU: %s\n", ATMEL_CPU_NAME); printf("Crystal frequency: %8s MHz\n", diff --git a/arch/arm/mach-at91/spl_at91.c b/arch/arm/mach-at91/spl_at91.c index a79a9dc..b19f95b 100644 --- a/arch/arm/mach-at91/spl_at91.c +++ b/arch/arm/mach-at91/spl_at91.c @@ -123,9 +123,12 @@ void board_init_f(ulong dummy) at91_periph_clk_enable(ATMEL_ID_PIOB); at91_periph_clk_enable(ATMEL_ID_PIOC); #endif + +#if defined(CONFIG_SPL_SERIAL_SUPPORT) /* init console */ at91_seriald_hw_init(); preloader_console_init(); +#endif mem_init(); diff --git a/common/Makefile b/common/Makefile index d6c1d48..516c299 100644 --- a/common/Makefile +++ b/common/Makefile @@ -250,7 +250,11 @@ obj-$(CONFIG_DDR_SPD) += ddr_spd.o obj-$(CONFIG_SPD_EEPROM) += ddr_spd.o obj-$(CONFIG_HWCONFIG) += hwconfig.o obj-$(CONFIG_BOUNCE_BUFFER) += bouncebuf.o +ifdef CONFIG_SPL_BUILD +obj-$(CONFIG_SPL_SERIAL_SUPPORT) += console.o +else obj-y += console.o +endif obj-$(CONFIG_CROS_EC) += cros_ec.o obj-y += dlmalloc.o ifdef CONFIG_SYS_MALLOC_F_LEN diff --git a/common/cli_readline.c b/common/cli_readline.c index 9a9fb35..c1476e4 100644 --- a/common/cli_readline.c +++ b/common/cli_readline.c @@ -597,7 +597,7 @@ int cli_readline_into_buffer(const char *const prompt, char *buffer, puts(tab_seq + (col & 07)); col += 8 - (col & 07); } else { - char buf[2]; + char __maybe_unused buf[2]; /* * Echo input using puts() to force an diff --git a/common/cli_simple.c b/common/cli_simple.c index 6c65cc6..00a8d2f 100644 --- a/common/cli_simple.c +++ b/common/cli_simple.c @@ -68,7 +68,7 @@ void cli_simple_process_macros(const char *input, char *output) /* 1 = waiting for '(' or '{' */ /* 2 = waiting for ')' or '}' */ /* 3 = waiting for ''' */ - char *output_start = output; + char __maybe_unused *output_start = output; debug_parser("[PROCESS_MACROS] INPUT len %zd: \"%s\"\n", strlen(input), input); diff --git a/common/image.c b/common/image.c index f0f0135..eaa98d3 100644 --- a/common/image.c +++ b/common/image.c @@ -54,6 +54,10 @@ static const image_header_t *image_get_ramdisk(ulong rd_addr, uint8_t arch, #include <u-boot/md5.h> #include <time.h> #include <image.h> + +#ifndef __maybe_unused +# define __maybe_unused /* unimplemented */ +#endif #endif /* !USE_HOSTCC*/ #include <u-boot/crc.h> @@ -274,7 +278,7 @@ void image_multi_getimg(const image_header_t *hdr, ulong idx, static void image_print_type(const image_header_t *hdr) { - const char *os, *arch, *type, *comp; + const char __maybe_unused *os, *arch, *type, *comp; os = genimg_get_os_name(image_get_os(hdr)); arch = genimg_get_arch_name(image_get_arch(hdr)); @@ -299,7 +303,7 @@ static void image_print_type(const image_header_t *hdr) void image_print_contents(const void *ptr) { const image_header_t *hdr = (const image_header_t *)ptr; - const char *p; + const char __maybe_unused *p; p = IMAGE_INDENT_STRING; printf("%sImage Name: %.*s\n", p, IH_NMLEN, image_get_name(hdr)); diff --git a/common/spl/spl.c b/common/spl/spl.c index aeb0645..7f5e37f 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -288,6 +288,14 @@ void board_init_r(gd_t *dummy1, ulong dummy2) jump_to_image_no_args(&spl_image); } +#if !defined(CONFIG_SPL_SERIAL_SUPPORT) +/* we have no console ... so define some dummy functions ... */ +void preloader_console_init(void) +{ + gd->bd = &bdata; + gd->have_console = 0; +} +#else /* * This requires UART clocks to be enabled. In order for this to work the * caller must ensure that the gd pointer is valid. @@ -307,6 +315,7 @@ void preloader_console_init(void) spl_display_print(); #endif } +#endif /** * spl_relocate_stack_gd() - Relocate stack ready for board_init_r() execution diff --git a/include/common.h b/include/common.h index 8f4b2ec..bafe120 100644 --- a/include/common.h +++ b/include/common.h @@ -830,11 +830,18 @@ int getc(void); int tstc(void); /* stdout */ +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_SPL_SERIAL_SUPPORT) +#define putc(...) do { } while (0) +#define puts(...) do { } while (0) +#define printf(...) do { } while (0) +#define vprintf(...) do { } while (0) +#else void putc(const char c); void puts(const char *s); int printf(const char *fmt, ...) __attribute__ ((format (__printf__, 1, 2))); int vprintf(const char *fmt, va_list args); +#endif /* stderr */ #define eputc(c) fputc(stderr, c) diff --git a/include/configs/apf27.h b/include/configs/apf27.h index 7554023..849eb1a 100644 --- a/include/configs/apf27.h +++ b/include/configs/apf27.h @@ -40,6 +40,7 @@ #define CONFIG_SPL_LDSCRIPT "arch/$(ARCH)/cpu/u-boot-spl.lds" #define CONFIG_SPL_MAX_SIZE 2048 #define CONFIG_SPL_TEXT_BASE 0xA0000000 +#define CONFIG_SPL_SERIAL_SUPPORT /* NAND boot config */ #define CONFIG_SPL_NAND_SUPPORT diff --git a/include/configs/mx31pdk.h b/include/configs/mx31pdk.h index 1282a6e..e01dfe6 100644 --- a/include/configs/mx31pdk.h +++ b/include/configs/mx31pdk.h @@ -35,6 +35,7 @@ #define CONFIG_SPL_MAX_SIZE 2048 #define CONFIG_SPL_NAND_SUPPORT #define CONFIG_SPL_LIBGENERIC_SUPPORT +#define CONFIG_SPL_SERIAL_SUPPORT #define CONFIG_SPL_TEXT_BASE 0x87dc0000 #define CONFIG_SYS_TEXT_BASE 0x87e00000 diff --git a/include/configs/mxs.h b/include/configs/mxs.h index 38b1e93..9d823de 100644 --- a/include/configs/mxs.h +++ b/include/configs/mxs.h @@ -55,6 +55,7 @@ #define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds" #define CONFIG_SPL_LIBCOMMON_SUPPORT #define CONFIG_SPL_LIBGENERIC_SUPPORT +#define CONFIG_SPL_SERIAL_SUPPORT #define CONFIG_SPL_GPIO_SUPPORT /* Memory sizes */ diff --git a/include/configs/tx25.h b/include/configs/tx25.h index 622bd53..95fcdac 100644 --- a/include/configs/tx25.h +++ b/include/configs/tx25.h @@ -26,6 +26,7 @@ #define CONFIG_SPL_MAX_SIZE 2048 #define CONFIG_SPL_NAND_SUPPORT #define CONFIG_SPL_LIBGENERIC_SUPPORT +#define CONFIG_SPL_SERIAL_SUPPORT #define CONFIG_SPL_TEXT_BASE 0x810c0000 #define CONFIG_SYS_TEXT_BASE 0x81200000 diff --git a/lib/display_options.c b/lib/display_options.c index 57fb974..6d9c6aa 100644 --- a/lib/display_options.c +++ b/lib/display_options.c @@ -121,9 +121,9 @@ int print_buffer(ulong addr, const void *data, uint width, uint count, } lb; int i; #ifdef CONFIG_SYS_SUPPORT_64BIT_DATA - uint64_t x; + uint64_t __maybe_unsued x; #else - uint32_t x; + uint32_t __maybe_unused x; #endif if (linelen*width > MAX_LINE_LENGTH_BYTES)
This patch enables building SPL without CONFIG_SPL_SERIAL_SUPPORT support. Signed-off-by: Heiko Schocher <hs@denx.de> --- arch/arm/lib/interrupts.c | 4 ++-- arch/arm/mach-at91/arm926ejs/cpu.c | 2 +- arch/arm/mach-at91/spl_at91.c | 3 +++ common/Makefile | 4 ++++ common/cli_readline.c | 2 +- common/cli_simple.c | 2 +- common/image.c | 8 ++++++-- common/spl/spl.c | 9 +++++++++ include/common.h | 7 +++++++ include/configs/apf27.h | 1 + include/configs/mx31pdk.h | 1 + include/configs/mxs.h | 1 + include/configs/tx25.h | 1 + lib/display_options.c | 4 ++-- 14 files changed, 40 insertions(+), 9 deletions(-)