From: Sam Protsenko <semen.protsenko@linaro.org> To: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>, Rob Herring <robh+dt@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Jiri Slaby <jirislaby@kernel.org>, Jaewon Kim <jaewon02.kim@samsung.com>, Chanho Park <chanho61.park@samsung.com>, David Virag <virag.david003@gmail.com>, Youngmin Nam <youngmin.nam@samsung.com>, devicetree@vger.kernel.org, linux-serial@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org Subject: [PATCH v2 RESEND 4/5] tty: serial: samsung: Enable console as module Date: Tue, 30 Nov 2021 13:13:24 +0200 [thread overview] Message-ID: <20211130111325.29328-5-semen.protsenko@linaro.org> (raw) In-Reply-To: <20211130111325.29328-1-semen.protsenko@linaro.org> 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(). This is needed for proper support of USI driver (which can be built as a module, which in turn makes SERIAL_SAMSUNG be a module too). It also might be useful for Android GKI modularization efforts. Inspired by commit 87a0b9f98ac5 ("tty: serial: meson: enable console as module"). Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> --- Changes in v2: - Added error path handling in samsung_serial_init() - Added console unregister in samsung_serial_exit() drivers/tty/serial/Kconfig | 2 +- drivers/tty/serial/samsung_tty.c | 36 ++++++++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig index fc543ac97c13..0e5ccb25bdb1 100644 --- a/drivers/tty/serial/Kconfig +++ b/drivers/tty/serial/Kconfig @@ -263,7 +263,7 @@ config SERIAL_SAMSUNG_UARTS config SERIAL_SAMSUNG_CONSOLE bool "Support for console on Samsung SoC serial port" - depends on SERIAL_SAMSUNG=y + depends on SERIAL_SAMSUNG select SERIAL_CORE_CONSOLE select SERIAL_EARLYCON help diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c index f986a9253dc8..61ccb359620a 100644 --- a/drivers/tty/serial/samsung_tty.c +++ b/drivers/tty/serial/samsung_tty.c @@ -1715,15 +1715,21 @@ s3c24xx_serial_verify_port(struct uart_port *port, struct serial_struct *ser) 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); - 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 #else +static inline void s3c24xx_serial_register_console(void) { } +static inline void s3c24xx_serial_unregister_console(void) { } #define S3C24XX_SERIAL_CONSOLE NULL #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 /* -- 2.30.2
WARNING: multiple messages have this Message-ID (diff)
From: Sam Protsenko <semen.protsenko@linaro.org> To: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>, Rob Herring <robh+dt@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Jiri Slaby <jirislaby@kernel.org>, Jaewon Kim <jaewon02.kim@samsung.com>, Chanho Park <chanho61.park@samsung.com>, David Virag <virag.david003@gmail.com>, Youngmin Nam <youngmin.nam@samsung.com>, devicetree@vger.kernel.org, linux-serial@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org Subject: [PATCH v2 RESEND 4/5] tty: serial: samsung: Enable console as module Date: Tue, 30 Nov 2021 13:13:24 +0200 [thread overview] Message-ID: <20211130111325.29328-5-semen.protsenko@linaro.org> (raw) In-Reply-To: <20211130111325.29328-1-semen.protsenko@linaro.org> 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(). This is needed for proper support of USI driver (which can be built as a module, which in turn makes SERIAL_SAMSUNG be a module too). It also might be useful for Android GKI modularization efforts. Inspired by commit 87a0b9f98ac5 ("tty: serial: meson: enable console as module"). Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> --- Changes in v2: - Added error path handling in samsung_serial_init() - Added console unregister in samsung_serial_exit() drivers/tty/serial/Kconfig | 2 +- drivers/tty/serial/samsung_tty.c | 36 ++++++++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig index fc543ac97c13..0e5ccb25bdb1 100644 --- a/drivers/tty/serial/Kconfig +++ b/drivers/tty/serial/Kconfig @@ -263,7 +263,7 @@ config SERIAL_SAMSUNG_UARTS config SERIAL_SAMSUNG_CONSOLE bool "Support for console on Samsung SoC serial port" - depends on SERIAL_SAMSUNG=y + depends on SERIAL_SAMSUNG select SERIAL_CORE_CONSOLE select SERIAL_EARLYCON help diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c index f986a9253dc8..61ccb359620a 100644 --- a/drivers/tty/serial/samsung_tty.c +++ b/drivers/tty/serial/samsung_tty.c @@ -1715,15 +1715,21 @@ s3c24xx_serial_verify_port(struct uart_port *port, struct serial_struct *ser) 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); - 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 #else +static inline void s3c24xx_serial_register_console(void) { } +static inline void s3c24xx_serial_unregister_console(void) { } #define S3C24XX_SERIAL_CONSOLE NULL #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 /* -- 2.30.2 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-11-30 11:13 UTC|newest] Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-11-30 11:13 [PATCH v2 RESEND 0/5] soc: samsung: Add USI driver Sam Protsenko 2021-11-30 11:13 ` Sam Protsenko 2021-11-30 11:13 ` [PATCH v2 RESEND 1/5] dt-bindings: soc: samsung: Add Exynos USI bindings Sam Protsenko 2021-11-30 11:13 ` Sam Protsenko 2021-11-30 17:43 ` Rob Herring 2021-11-30 17:43 ` Rob Herring 2021-11-30 20:04 ` Krzysztof Kozlowski 2021-11-30 20:04 ` Krzysztof Kozlowski 2021-12-01 16:19 ` Rob Herring 2021-12-01 16:19 ` Rob Herring 2021-12-02 11:00 ` Sam Protsenko 2021-12-02 11:00 ` Sam Protsenko 2021-12-02 20:44 ` Rob Herring 2021-12-02 20:44 ` Rob Herring 2021-12-03 18:39 ` Sam Protsenko 2021-12-03 18:39 ` Sam Protsenko 2021-11-30 19:31 ` Rob Herring 2021-11-30 19:31 ` Rob Herring 2021-12-03 19:35 ` Sam Protsenko 2021-12-03 19:35 ` Sam Protsenko 2021-12-03 20:40 ` Rob Herring 2021-12-03 20:40 ` Rob Herring 2021-12-04 0:18 ` Sam Protsenko 2021-12-04 0:18 ` Sam Protsenko 2021-12-04 11:31 ` Krzysztof Kozlowski 2021-12-04 11:31 ` Krzysztof Kozlowski 2021-12-04 11:28 ` Krzysztof Kozlowski 2021-12-04 11:28 ` Krzysztof Kozlowski 2021-12-04 14:27 ` Sam Protsenko 2021-12-04 14:27 ` Sam Protsenko 2021-11-30 11:13 ` [PATCH v2 RESEND 2/5] soc: samsung: Add USI driver Sam Protsenko 2021-11-30 11:13 ` Sam Protsenko 2021-12-01 10:52 ` Andy Shevchenko 2021-12-01 10:52 ` Andy Shevchenko 2021-12-03 15:31 ` Sam Protsenko 2021-12-03 15:31 ` Sam Protsenko 2021-11-30 11:13 ` [PATCH v2 RESEND 3/5] tty: serial: samsung: Remove USI initialization Sam Protsenko 2021-11-30 11:13 ` Sam Protsenko 2021-12-01 10:54 ` Andy Shevchenko 2021-12-01 10:54 ` Andy Shevchenko 2021-12-03 16:22 ` Sam Protsenko 2021-12-03 16:22 ` Sam Protsenko 2021-12-04 11:22 ` Krzysztof Kozlowski 2021-12-04 11:22 ` Krzysztof Kozlowski 2021-11-30 11:13 ` Sam Protsenko [this message] 2021-11-30 11:13 ` [PATCH v2 RESEND 4/5] tty: serial: samsung: Enable console as module Sam Protsenko 2021-11-30 11:13 ` [PATCH v2 RESEND 5/5] tty: serial: samsung: Fix console registration from module Sam Protsenko 2021-11-30 11:13 ` Sam Protsenko
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20211130111325.29328-5-semen.protsenko@linaro.org \ --to=semen.protsenko@linaro.org \ --cc=chanho61.park@samsung.com \ --cc=devicetree@vger.kernel.org \ --cc=gregkh@linuxfoundation.org \ --cc=jaewon02.kim@samsung.com \ --cc=jirislaby@kernel.org \ --cc=krzysztof.kozlowski@canonical.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-samsung-soc@vger.kernel.org \ --cc=linux-serial@vger.kernel.org \ --cc=robh+dt@kernel.org \ --cc=virag.david003@gmail.com \ --cc=youngmin.nam@samsung.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.