powerpc/legacy_serial: Warn about 8250 devices operated without active FSL workarounds
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Mon, 5 Jun 2023 13:08:56 +0000 (15:08 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 6 Jun 2023 12:42:15 +0000 (14:42 +0200)
If the 8250 driver is built as a module (or built-in without console
support) the Freescale specific workaround were silently not activated.
Add a warning in this case.

Currently CONFIG_SERIAL_8250_FSL=y implies that the function
fsl8250_handle_irq() is built-in and can be used. However with the
changes of the next commit CONFIG_SERIAL_8250_FSL might be enabled also
when the 8250 driver is a module and so more care is needed when
fsl8250_handle_irq() is to be used. The code added here is able to
handle the new situation already.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Message-ID: <20230605130857.85543-2-u.kleine-koenig@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/powerpc/kernel/legacy_serial.c

index c9ad12461d44bbcfd0bed1cf84804344bb952230..fdbd85aafeb1fc4cc57781306a3f83eba9ffceda 100644 (file)
@@ -508,12 +508,16 @@ static void __init fixup_port_irq(int index,
 
        port->irq = virq;
 
-#ifdef CONFIG_SERIAL_8250_FSL
-       if (of_device_is_compatible(np, "fsl,ns16550")) {
-               port->handle_irq = fsl8250_handle_irq;
-               port->has_sysrq = IS_ENABLED(CONFIG_SERIAL_8250_CONSOLE);
+       if (IS_ENABLED(CONFIG_SERIAL_8250) &&
+           of_device_is_compatible(np, "fsl,ns16550")) {
+               if (IS_REACHABLE(CONFIG_SERIAL_8250)) {
+                       port->handle_irq = fsl8250_handle_irq;
+                       port->has_sysrq = IS_ENABLED(CONFIG_SERIAL_8250_CONSOLE);
+               } else {
+                       pr_warn_once("Not activating Freescale specific workaround for device %pOFP\n",
+                                    np);
+               }
        }
-#endif
 }
 
 static void __init fixup_port_pio(int index,