From: Greg KH <gregkh@linuxfoundation.org>
To: Hyunki Koo <kkoos00@naver.com>
Cc: jslaby@suse.com, linux-serial@vger.kernel.org,
linux-kernel@vger.kernel.org, kkoos00@gmail.com,
Shinbeom Choi <sbeom.choi@samsung.com>,
Hyunki Koo <hyunki00.koo@samsung.com>
Subject: Re: [PATCH] tty: serial: samsung: support driver modulization
Date: Sun, 1 Dec 2019 09:03:14 +0100 [thread overview]
Message-ID: <20191201080314.GA3716559@kroah.com> (raw)
In-Reply-To: <20191201075914.23512-1-kkoos00@naver.com>
On Sun, Dec 01, 2019 at 04:59:14PM +0900, Hyunki Koo wrote:
> From: Shinbeom Choi <sbeom.choi@samsung.com>
>
> This commit enables modulization of samsung uart driver.
>
> There was no way to make use of this driver in other module,
> because uart functions were static.
>
> By exporting required functions, user can use this driver
> in other module.
>
> Signed-off-by: Shinbeom Choi <sbeom.choi@samsung.com>
> Signed-off-by: Hyunki Koo <hyunki00.koo@samsung.com>
> ---
> drivers/tty/serial/samsung.h | 32 ++++++++++++
> drivers/tty/serial/samsung_tty.c | 85 +++++++++++++++-----------------
> 2 files changed, 73 insertions(+), 44 deletions(-)
>
> diff --git a/drivers/tty/serial/samsung.h b/drivers/tty/serial/samsung.h
> index f93022113f59..25be0962284d 100644
> --- a/drivers/tty/serial/samsung.h
> +++ b/drivers/tty/serial/samsung.h
> @@ -144,4 +144,36 @@ static inline void s3c24xx_clear_bit(struct uart_port *port, int idx,
> local_irq_restore(flags);
> }
>
> +#if defined(CONFIG_ARCH_EXYNOS)
> +#define EXYNOS_COMMON_SERIAL_DRV_DATA \
> + .info = &(struct s3c24xx_uart_info) { \
> + .name = "Samsung Exynos UART", \
> + .type = PORT_S3C6400, \
> + .has_divslot = 1, \
> + .rx_fifomask = S5PV210_UFSTAT_RXMASK, \
> + .rx_fifoshift = S5PV210_UFSTAT_RXSHIFT, \
> + .rx_fifofull = S5PV210_UFSTAT_RXFULL, \
> + .tx_fifofull = S5PV210_UFSTAT_TXFULL, \
> + .tx_fifomask = S5PV210_UFSTAT_TXMASK, \
> + .tx_fifoshift = S5PV210_UFSTAT_TXSHIFT, \
> + .def_clk_sel = S3C2410_UCON_CLKSEL0, \
> + .num_clks = 1, \
> + .clksel_mask = 0, \
> + .clksel_shift = 0, \
> + }, \
> + .def_cfg = &(struct s3c2410_uartcfg) { \
> + .ucon = S5PV210_UCON_DEFAULT, \
> + .ufcon = S5PV210_UFCON_DEFAULT, \
> + .has_fracval = 1, \
> + } \
> +
> +#endif
> +
> +int s3c24xx_serial_get_ports(struct s3c24xx_uart_port **ourport, int index);
> +int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport,
> + struct platform_device *platdev);
> +int s3c24xx_serial_unregister_port(struct platform_device *dev);
> +int s3c24xx_serial_suspend(struct device *dev);
> +int s3c24xx_serial_resume(struct device *dev);
> +int s3c24xx_serial_resume_noirq(struct device *dev);
> #endif
> diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c
> index 83fd51607741..15414ecd9008 100644
> --- a/drivers/tty/serial/samsung_tty.c
> +++ b/drivers/tty/serial/samsung_tty.c
> @@ -1735,7 +1735,7 @@ static int s3c24xx_serial_enable_baudclk(struct s3c24xx_uart_port *ourport)
> * initialise a single serial port from the platform device given
> */
>
> -static int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport,
> +int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport,
> struct platform_device *platdev)
> {
> struct uart_port *port = &ourport->port;
> @@ -1842,12 +1842,24 @@ static int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport,
> /* reset the fifos (and setup the uart) */
> s3c24xx_serial_resetport(port, cfg);
>
> + if (!s3c24xx_uart_drv.state) {
> + ret = uart_register_driver(&s3c24xx_uart_drv);
> + if (ret < 0) {
> + dev_err(port->dev, "Failed to register Samsung UART driver\n");
> + return ret;
> + }
> + }
> +
> + dbg("%s: adding port\n", __func__);
> + uart_add_one_port(&s3c24xx_uart_drv, &ourport->port);
> +
> return 0;
>
> err:
> port->mapbase = 0;
> return ret;
> }
> +EXPORT_SYMBOL_GPL(s3c24xx_serial_init_port);
Why are you exporting all of these functions? What other code uses
them? Why are you converting them all to global functions I don't see
any other in-kernel callers, so why are those changes needed here?
totally confused,
greg k-h
next parent reply other threads:[~2019-12-01 8:03 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20191201075914.23512-1-kkoos00@naver.com>
2019-12-01 8:03 ` Greg KH [this message]
2019-12-05 15:36 ` [PATCH] tty: serial: samsung: support driver modulization Krzysztof Kozlowski
2019-12-05 16:02 ` Greg KH
2019-12-06 1:44 ` 구현기/HYUN-KI KOO
2019-12-06 6:40 ` 'Greg KH'
2019-12-06 8:09 ` Krzysztof Kozlowski
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=20191201080314.GA3716559@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=hyunki00.koo@samsung.com \
--cc=jslaby@suse.com \
--cc=kkoos00@gmail.com \
--cc=kkoos00@naver.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=sbeom.choi@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: link
Be 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.