
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@denx.de Cc: Marek Vasut marek.vasut@gmail.com Cc: Tom Rini trini@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