earlycon: mark earlycon code as __used iif the caller is built-in
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Mon, 6 Jun 2016 09:41:00 +0000 (18:41 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 25 Jun 2016 21:31:04 +0000 (14:31 -0700)
Keep earlycon related symbols only when CONFIG_SERIAL_EARLYCON is
enabled and the driver is built-in.  This will be helpful to clean
up ifdefs surrounding earlycon code in serial drivers.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/linux/serial_core.h

index a3d7c0d4a03e75016023184a5fea18c91d9d8dbc..2f44e20136545162d15ee9a39c2eae38352580d1 100644 (file)
@@ -352,9 +352,15 @@ struct earlycon_id {
 extern const struct earlycon_id __earlycon_table[];
 extern const struct earlycon_id __earlycon_table_end[];
 
+#if defined(CONFIG_SERIAL_EARLYCON) && !defined(MODULE)
+#define EARLYCON_USED_OR_UNUSED        __used
+#else
+#define EARLYCON_USED_OR_UNUSED        __maybe_unused
+#endif
+
 #define OF_EARLYCON_DECLARE(_name, compat, fn)                         \
        static const struct earlycon_id __UNIQUE_ID(__earlycon_##_name) \
-            __used __section(__earlycon_table)                         \
+            EARLYCON_USED_OR_UNUSED __section(__earlycon_table)        \
                = { .name = __stringify(_name),                         \
                    .compatible = compat,                               \
                    .setup = fn  }