From: Marek Vasut Date: Wed, 12 Sep 2012 15:49:58 +0000 (+0200) Subject: serial: Implement serial_initfunc() macro X-Git-Tag: v2013.01-rc1~342 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=2a333aeb8ff4e7b05c47bfaec1816fc2eb8e0198;p=u-boot serial: Implement serial_initfunc() macro This macro simplifies declaration of weak aliases for per-driver functions, which register these drivers with the serial subsystem. The idea here is to push serial_register() calls from serial.c into the drivers. To avoid pile of ifdef construct as it is now, create weak aliases to these functions, which in case the driver is not present alias onto an empty function, which is in turn optimized out altogether. Signed-off-by: Marek Vasut Cc: Marek Vasut Cc: Tom Rini Cc: Anatolij Gustschin Cc: Stefan Roese Cc: Mike Frysinger --- diff --git a/common/serial.c b/common/serial.c index c4b111c496..7423920b93 100644 --- a/common/serial.c +++ b/common/serial.c @@ -32,6 +32,14 @@ DECLARE_GLOBAL_DATA_PTR; static struct serial_device *serial_devices; static struct serial_device *serial_current; +static void serial_null(void) +{ +} + +#define serial_initfunc(name) \ + void name(void) \ + __attribute__((weak, alias("serial_null"))); + void serial_register(struct serial_device *dev) { #ifdef CONFIG_NEEDS_MANUAL_RELOC