[PATCH v2 2/2] tty: serial: samsung: Clean-up selection of number of available UARTs
Kukjin Kim
kgene at kernel.org
Tue Oct 28 03:31:40 PDT 2014
Abhilash Kesavan wrote:
>
Hi,
Sorry for late response.
> Remove symbols SERIAL_SAMSUNG_UARTS_4 and SERIAL_SAMSUNG_UARTS which
> select the number of UART ports available on the SoC. Replace the usage
> of SERIAL_SAMSUNG_UARTS in the serial driver with the maximum number of
Well, as you know the number of uart ports are different on each Samsung SoCs
so I don't think just using maximum number of uart ports are possible for new
exynos7 SoC at this moment.
> UART ports possible. Removal of these symbols also helps in Exynos7
> serial enablement.
>
> Signed-off-by: Abhilash Kesavan <a.kesavan at samsung.com>
> Reviewed-by: Tomasz Figa <tomasz.figa at gmail.com>
> Cc: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
> ---
> drivers/tty/serial/Kconfig | 16 ----------------
> drivers/tty/serial/samsung.c | 11 +++--------
> drivers/tty/serial/samsung.h | 5 ++++-
> 3 files changed, 7 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig
> index 81f6ee7..9fc9092 100644
> --- a/drivers/tty/serial/Kconfig
> +++ b/drivers/tty/serial/Kconfig
> @@ -247,22 +247,6 @@ config SERIAL_SAMSUNG
> provide all of these ports, depending on how the serial port
> pins are configured.
>
> -config SERIAL_SAMSUNG_UARTS_4
> - bool
> - depends on PLAT_SAMSUNG
> - default y if !(CPU_S3C2410 || CPU_S3C2412 || CPU_S3C2440 || CPU_S3C2442)
> - help
> - Internal node for the common case of 4 Samsung compatible UARTs
> -
> -config SERIAL_SAMSUNG_UARTS
> - int
> - depends on PLAT_SAMSUNG
> - default 4 if SERIAL_SAMSUNG_UARTS_4 || CPU_S3C2416
> - default 3
> - help
> - Select the number of available UART ports for the Samsung S3C
> - serial driver
> -
> config SERIAL_SAMSUNG_DEBUG
> bool "Samsung SoC serial debug"
> depends on SERIAL_SAMSUNG && DEBUG_LL
> diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c
> index c78f43a..ba04c6d 100644
> --- a/drivers/tty/serial/samsung.c
> +++ b/drivers/tty/serial/samsung.c
> @@ -962,14 +962,14 @@ static struct uart_ops s3c24xx_serial_ops = {
> static struct uart_driver s3c24xx_uart_drv = {
> .owner = THIS_MODULE,
> .driver_name = "s3c2410_serial",
> - .nr = CONFIG_SERIAL_SAMSUNG_UARTS,
> + .nr = MAX_SAMSUNG_UARTS,
> .cons = S3C24XX_SERIAL_CONSOLE,
> .dev_name = S3C24XX_SERIAL_NAME,
> .major = S3C24XX_SERIAL_MAJOR,
> .minor = S3C24XX_SERIAL_MINOR,
> };
>
> -static struct s3c24xx_uart_port s3c24xx_serial_ports[CONFIG_SERIAL_SAMSUNG_UARTS] = {
> +static struct s3c24xx_uart_port s3c24xx_serial_ports[MAX_SAMSUNG_UARTS] = {
> [0] = {
> .port = {
> .lock = __SPIN_LOCK_UNLOCKED(s3c24xx_serial_ports[0].port.lock),
> @@ -992,8 +992,6 @@ static struct s3c24xx_uart_port s3c24xx_serial_ports[CONFIG_SERIAL_SAMSUNG_UARTS
> .line = 1,
> }
> },
> -#if CONFIG_SERIAL_SAMSUNG_UARTS > 2
> -
> [2] = {
> .port = {
> .lock = __SPIN_LOCK_UNLOCKED(s3c24xx_serial_ports[2].port.lock),
> @@ -1005,8 +1003,6 @@ static struct s3c24xx_uart_port s3c24xx_serial_ports[CONFIG_SERIAL_SAMSUNG_UARTS
> .line = 2,
> }
> },
> -#endif
> -#if CONFIG_SERIAL_SAMSUNG_UARTS > 3
> [3] = {
> .port = {
> .lock = __SPIN_LOCK_UNLOCKED(s3c24xx_serial_ports[3].port.lock),
> @@ -1018,7 +1014,6 @@ static struct s3c24xx_uart_port s3c24xx_serial_ports[CONFIG_SERIAL_SAMSUNG_UARTS
> .line = 3,
> }
> }
> -#endif
> };
>
> /* s3c24xx_serial_resetport
> @@ -1590,7 +1585,7 @@ s3c24xx_serial_console_setup(struct console *co, char *options)
>
> /* is this a valid port */
>
> - if (co->index == -1 || co->index >= CONFIG_SERIAL_SAMSUNG_UARTS)
> + if (co->index == -1 || co->index >= MAX_SAMSUNG_UARTS)
If we use max number, second condition is not required...
> co->index = 0;
>
> port = &s3c24xx_serial_ports[co->index].port;
> diff --git a/drivers/tty/serial/samsung.h b/drivers/tty/serial/samsung.h
> index eb071dd..484b49e 100644
> --- a/drivers/tty/serial/samsung.h
> +++ b/drivers/tty/serial/samsung.h
> @@ -1,6 +1,9 @@
> #ifndef __SAMSUNG_H
> #define __SAMSUNG_H
>
> +/* Maximum UART ports available */
> +#define MAX_SAMSUNG_UARTS 4
If there is a Samsung SoC having 5 UARTS, we need to update?
And hmm...maybe we need to keep the useless array sometimes...
> +
> /*
> * Driver for Samsung SoC onboard UARTs.
> *
> @@ -38,7 +41,7 @@ struct s3c24xx_uart_info {
> struct s3c24xx_serial_drv_data {
> struct s3c24xx_uart_info *info;
> struct s3c2410_uartcfg *def_cfg;
> - unsigned int fifosize[CONFIG_SERIAL_SAMSUNG_UARTS];
> + unsigned int fifosize[MAX_SAMSUNG_UARTS];
> };
>
> struct s3c24xx_uart_port {
> --
> 1.7.9.5
More information about the linux-arm-kernel
mailing list