[U-Boot] [PATCH 62/71] serial: spl: Implement empty functions for SPL

Marek Vasut marex at denx.de
Tue Sep 18 20:01:37 CEST 2012


Dear Tom Rini,

> On 09/18/12 10:13, Marek Vasut wrote:
> > Dear Tom Rini,
> > 
> >> On Mon, Sep 17, 2012 at 01:21:27AM +0200, Marek Vasut wrote:
> >>> Implement empty serial_* functions for SPL without serial
> >>> support enabled. This is imperative to haave once serial multi
> >>> is enabled unconditionally.
> >>> 
> >>> Signed-off-by: Marek Vasut <marex at denx.de> Cc: Marek Vasut
> >>> <marek.vasut at gmail.com> Cc: Tom Rini <trini at ti.com> ---
> >>> 
> >>> common/serial.c |   12 ++++++++++++ 1 file changed, 12
> >>> insertions(+)
> >>> 
> >>> diff --git a/common/serial.c b/common/serial.c index
> >>> 631af65..cef4ba8 100644 --- a/common/serial.c +++
> >>> b/common/serial.c @@ -27,6 +27,16 @@
> >>> 
> >>> #include <post.h> #include <linux/compiler.h>
> >>> 
> >>> +/* Implement prototypes for SPL without serial support */
> >>> +#if defined(CONFIG_SPL_BUILD) &&
> >>> !defined(CONFIG_SPL_SERIAL_SUPPORT) +int serial_init(void) {
> >>> return 0; } +void serial_setbrg(void) {} +int
> >>> serial_getc(void) { return 0; } +int serial_tstc(void) { return
> >>> 0; } +void serial_putc(const char c) {} +void serial_puts(const
> >>> char *s) {}
> >> 
> >> This isn't quite right.  We need to allow for: - No output SPL,
> >> strings collected (so #defined to do{} while (0))
> > 
> > Which is not type-checked and will drag in bugs.
> 
> Scott has addressed this.
> 
> >> - puts + printf SPL (CONFIG_SPL_SERIAL_SUPPORT +
> >> CONFIG_SPL_LIBCOMMON_SUPPORT) - puts only SPL
> >> (CONFIG_SPL_SERIAL_SUPPORT + #define puts serial_puts/putc).
> >> 
> >> I'm not asking you to do that, but you will have to adapt to it
> >> once Jose is done with it.  What that means, off the top of my
> >> head, is we can just drop this patch as in the first and last
> >> case serial.o will be garbage-collected (or not built) and in
> >> the middle case, this will be fully used.
> > 
> > I can't drop this patch as it will break all of SPL when
> > CONFIG_SERIAL_MULTI is unconditionally enabled.
> 
> Why is it breaking _all_ of SPL?  Have you run-tested this anywhere,
> especially with SPL?  In most cases it should be used and real
> functions provided or garbage collected away.

Yes, try compiling m28evk without this patch for example, it's going to break 
it. Because CONFIG_SPL_SERIAL_SUPPORT is disabled, yet it uses code that 
contains references to puts() etc.

Best regards,
Marek Vasut


More information about the U-Boot mailing list