summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Vasut <marex@denx.de>2012-09-12 17:49:58 +0200
committerTom Rini <trini@ti.com>2012-10-15 11:53:49 -0700
commit2a333aeb8ff4e7b05c47bfaec1816fc2eb8e0198 (patch)
tree2da089ff67c1cf23ebacc9543c158c375ae4a9dd
parentbfb3127938edf672277ec745e1e2d7d5cad9dbff (diff)
downloadu-boot-imx-2a333aeb8ff4e7b05c47bfaec1816fc2eb8e0198.zip
u-boot-imx-2a333aeb8ff4e7b05c47bfaec1816fc2eb8e0198.tar.gz
u-boot-imx-2a333aeb8ff4e7b05c47bfaec1816fc2eb8e0198.tar.bz2
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 <marex@denx.de> Cc: Marek Vasut <marek.vasut@gmail.com> Cc: Tom Rini <trini@ti.com> Cc: Anatolij Gustschin <agust@denx.de> Cc: Stefan Roese <sr@denx.de> Cc: Mike Frysinger <vapier@gentoo.org>
-rw-r--r--common/serial.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/common/serial.c b/common/serial.c
index c4b111c..7423920 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