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-koe...@pengutronix.de>
---
 arch/powerpc/kernel/legacy_serial.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/arch/powerpc/kernel/legacy_serial.c 
b/arch/powerpc/kernel/legacy_serial.c
index c9ad12461d44..fdbd85aafeb1 100644
--- a/arch/powerpc/kernel/legacy_serial.c
+++ b/arch/powerpc/kernel/legacy_serial.c
@@ -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,
-- 
2.39.2

Reply via email to