serial: 8250/ingenic: fix building with SERIAL_8250=m
authorArnd Bergmann <arnd@arndb.de>
Wed, 17 Feb 2016 15:02:34 +0000 (16:02 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 8 Mar 2016 00:11:14 +0000 (16:11 -0800)
The Ingenic 8250 driver has a 'bool' Kconfig symbol, but that
breaks when SERIAL_8250 is a loadable module:

drivers/tty/built-in.o: In function `ingenic_uart_probe':
8250_ingenic.c:(.text+0x1c1a0): undefined reference to `serial8250_register_8250_port'

This changes the symbol to a 'tristate', plus a dependency on
SERIAL_8250, which makes it work again. Unlike the other
soc-specific backends, this one has no dependency on an
architecture or a platform. I'm adding a dependency on
MIPS || COMPILE_TEST as well here, to avoid showing the driver
on architectures that are not interested in it.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_ingenic.c
drivers/tty/serial/8250/Kconfig

index 97b78558caed11032e53652deb87a8c444f8bc07..b0677f610863d3a6a61423623e7627bae35638d2 100644 (file)
@@ -48,7 +48,7 @@ static const struct of_device_id of_match[];
 #define UART_MCR_MDCE  BIT(7)
 #define UART_MCR_FCM   BIT(6)
 
-#ifdef CONFIG_SERIAL_EARLYCON
+#if defined(CONFIG_SERIAL_EARLYCON) && !defined(MODULE)
 static struct earlycon_device *early_device;
 
 static uint8_t __init early_in(struct uart_port *port, int offset)
index dca2031256d95983b423d8331c9b171f57141fe1..a9d25871540606f66d4f2c4aa681cf278a9146a3 100644 (file)
@@ -385,9 +385,10 @@ config SERIAL_8250_UNIPHIER
          serial ports, say Y to this option. If unsure, say N.
 
 config SERIAL_8250_INGENIC
-       bool "Support for Ingenic SoC serial ports"
-       depends on OF_FLATTREE
-       select LIBFDT
+       tristate "Support for Ingenic SoC serial ports"
+       depends on SERIAL_8250
+       depends on (OF_FLATTREE && SERIAL_8250_CONSOLE) || !SERIAL_EARLYCON
+       depends on MIPS || COMPILE_TEST
        help
          If you have a system using an Ingenic SoC and wish to make use of
          its UARTs, say Y to this option. If unsure, say N.