tty: serial: samsung: Enable console as module
Enable serial driver to be built as a module. To do so, init the console
support on driver/module load instead of using console_initcall().
Inspired by commit 87a0b9f98a
("tty: serial: meson: enable console as
module").
Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Link: https://lore.kernel.org/r/20211204195757.8600-5-semen.protsenko@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
59f37b7370
commit
0882b473b0
|
@ -263,7 +263,7 @@ config SERIAL_SAMSUNG_UARTS
|
||||||
|
|
||||||
config SERIAL_SAMSUNG_CONSOLE
|
config SERIAL_SAMSUNG_CONSOLE
|
||||||
bool "Support for console on Samsung SoC serial port"
|
bool "Support for console on Samsung SoC serial port"
|
||||||
depends on SERIAL_SAMSUNG=y
|
depends on SERIAL_SAMSUNG
|
||||||
select SERIAL_CORE_CONSOLE
|
select SERIAL_CORE_CONSOLE
|
||||||
select SERIAL_EARLYCON
|
select SERIAL_EARLYCON
|
||||||
help
|
help
|
||||||
|
|
|
@ -1715,15 +1715,21 @@ s3c24xx_serial_verify_port(struct uart_port *port, struct serial_struct *ser)
|
||||||
|
|
||||||
static struct console s3c24xx_serial_console;
|
static struct console s3c24xx_serial_console;
|
||||||
|
|
||||||
static int __init s3c24xx_serial_console_init(void)
|
static void __init s3c24xx_serial_register_console(void)
|
||||||
{
|
{
|
||||||
register_console(&s3c24xx_serial_console);
|
register_console(&s3c24xx_serial_console);
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
console_initcall(s3c24xx_serial_console_init);
|
|
||||||
|
static void s3c24xx_serial_unregister_console(void)
|
||||||
|
{
|
||||||
|
if (s3c24xx_serial_console.flags & CON_ENABLED)
|
||||||
|
unregister_console(&s3c24xx_serial_console);
|
||||||
|
}
|
||||||
|
|
||||||
#define S3C24XX_SERIAL_CONSOLE &s3c24xx_serial_console
|
#define S3C24XX_SERIAL_CONSOLE &s3c24xx_serial_console
|
||||||
#else
|
#else
|
||||||
|
static inline void s3c24xx_serial_register_console(void) { }
|
||||||
|
static inline void s3c24xx_serial_unregister_console(void) { }
|
||||||
#define S3C24XX_SERIAL_CONSOLE NULL
|
#define S3C24XX_SERIAL_CONSOLE NULL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -2898,7 +2904,29 @@ static struct platform_driver samsung_serial_driver = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
module_platform_driver(samsung_serial_driver);
|
static int __init samsung_serial_init(void)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
s3c24xx_serial_register_console();
|
||||||
|
|
||||||
|
ret = platform_driver_register(&samsung_serial_driver);
|
||||||
|
if (ret) {
|
||||||
|
s3c24xx_serial_unregister_console();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __exit samsung_serial_exit(void)
|
||||||
|
{
|
||||||
|
platform_driver_unregister(&samsung_serial_driver);
|
||||||
|
s3c24xx_serial_unregister_console();
|
||||||
|
}
|
||||||
|
|
||||||
|
module_init(samsung_serial_init);
|
||||||
|
module_exit(samsung_serial_exit);
|
||||||
|
|
||||||
#ifdef CONFIG_SERIAL_SAMSUNG_CONSOLE
|
#ifdef CONFIG_SERIAL_SAMSUNG_CONSOLE
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue