[PATCH 12/13] ARM: S5P64X0: Add UART serial support for S5P6450

Kyungmin Park kmpark at infradead.org
Wed Sep 1 21:43:55 EDT 2010


On Wed, Sep 1, 2010 at 4:09 PM, Kukjin Kim <kgene.kim at samsung.com> wrote:
> This patch adds UART serial port support for S5P6450 SoC.
> The S5P6450 has 6 UARTs, so adds resource of UART4 and UART5.
> And to fix membase which is in serial/samsung.c is from Ben Dooks.
>
> Signed-off-by: Kukjin Kim <kgene.kim at samsung.com>
> Cc: Ben Dooks <ben-linux at fluff.org>
> ---
>  arch/arm/plat-s5p/dev-uart.c |   58 ++++++++++++++++++++++++++++++++++++++++++
>  drivers/serial/Kconfig       |    7 +++--
>  drivers/serial/samsung.c     |    2 +-
>  3 files changed, 63 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/plat-s5p/dev-uart.c b/arch/arm/plat-s5p/dev-uart.c
> index a89331e..6a73428 100644
> --- a/arch/arm/plat-s5p/dev-uart.c
> +++ b/arch/arm/plat-s5p/dev-uart.c
> @@ -119,6 +119,56 @@ static struct resource s5p_uart3_resource[] = {
>  #endif
>  };
>
> +static struct resource s5p_uart4_resource[] = {
> +#if CONFIG_SERIAL_SAMSUNG_UARTS > 4
> +       [0] = {
> +               .start  = S5P_PA_UART4,
> +               .end    = S5P_PA_UART4 + S5P_SZ_UART,
> +               .flags  = IORESOURCE_MEM,
> +       },
> +       [1] = {
> +               .start  = IRQ_S5P_UART_RX4,
> +               .end    = IRQ_S5P_UART_RX4,
> +               .flags  = IORESOURCE_IRQ,
> +       },
> +       [2] = {
> +               .start  = IRQ_S5P_UART_TX4,
> +               .end    = IRQ_S5P_UART_TX4,
> +               .flags  = IORESOURCE_IRQ,
> +       },
> +       [3] = {
> +               .start  = IRQ_S5P_UART_ERR4,
> +               .end    = IRQ_S5P_UART_ERR4,
> +               .flags  = IORESOURCE_IRQ,
> +       },
> +#endif
> +};
> +
> +static struct resource s5p_uart5_resource[] = {
> +#if CONFIG_SERIAL_SAMSUNG_UARTS > 5
> +       [0] = {
> +               .start  = S5P_PA_UART5,
> +               .end    = S5P_PA_UART5 + S5P_SZ_UART,
> +               .flags  = IORESOURCE_MEM,
> +       },
> +       [1] = {
> +               .start  = IRQ_S5P_UART_RX5,
> +               .end    = IRQ_S5P_UART_RX5,
> +               .flags  = IORESOURCE_IRQ,
> +       },
> +       [2] = {
> +               .start  = IRQ_S5P_UART_TX5,
> +               .end    = IRQ_S5P_UART_TX5,
> +               .flags  = IORESOURCE_IRQ,
> +       },
> +       [3] = {
> +               .start  = IRQ_S5P_UART_ERR5,
> +               .end    = IRQ_S5P_UART_ERR5,
> +               .flags  = IORESOURCE_IRQ,
> +       },
> +#endif
> +};
> +
>  struct s3c24xx_uart_resources s5p_uart_resources[] __initdata = {
>        [0] = {
>                .resources      = s5p_uart0_resource,
> @@ -136,4 +186,12 @@ struct s3c24xx_uart_resources s5p_uart_resources[] __initdata = {
>                .resources      = s5p_uart3_resource,
>                .nr_resources   = ARRAY_SIZE(s5p_uart3_resource),
>        },
> +       [4] = {
> +               .resources      = s5p_uart4_resource,
> +               .nr_resources   = ARRAY_SIZE(s5p_uart4_resource),
> +       },
> +       [5] = {
> +               .resources      = s5p_uart5_resource,
> +               .nr_resources   = ARRAY_SIZE(s5p_uart5_resource),
> +       },
>  };
> diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
> index 12900f7..3198c53 100644
> --- a/drivers/serial/Kconfig
> +++ b/drivers/serial/Kconfig
> @@ -458,6 +458,7 @@ config SERIAL_SAMSUNG_UARTS
>        int
>        depends on ARM && PLAT_SAMSUNG
>        default 2 if ARCH_S3C2400
> +       default 6 if ARCH_S5P6450
>        default 4 if SERIAL_SAMSUNG_UARTS_4
>        default 3
>        help

How about to remove SERIAL_SAMSUNG_UARTS_4 and use the
SERIAL_SAMSUNG_UARTS only?

> @@ -526,12 +527,12 @@ config SERIAL_S3C24A0
>          Serial port support for the Samsung S3C24A0 SoC
>
>  config SERIAL_S3C6400
> -       tristate "Samsung S3C6400/S3C6410/S5P6440/S5PC100 Serial port support"
> -       depends on SERIAL_SAMSUNG && (CPU_S3C6400 || CPU_S3C6410 || CPU_S5P6440 || CPU_S5PC100)
> +       tristate "Samsung S3C6400/S3C6410/S5P6440/S5P6450/S5PC100 Serial port support"
> +       depends on SERIAL_SAMSUNG && (CPU_S3C6400 || CPU_S3C6410 || CPU_S5P6440 || CPU_S5P6450 || CPU_S5PC100)
>        select SERIAL_SAMSUNG_UARTS_4
>        default y
>        help
> -         Serial port support for the Samsung S3C6400, S3C6410, S5P6440
> +         Serial port support for the Samsung S3C6400, S3C6410, S5P6440, S5P6450
>          and S5PC100 SoCs
>
>  config SERIAL_S5PV210
> diff --git a/drivers/serial/samsung.c b/drivers/serial/samsung.c
> index b1156ba..7ac2bf5 100644
> --- a/drivers/serial/samsung.c
> +++ b/drivers/serial/samsung.c
> @@ -1101,7 +1101,7 @@ static int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport,
>        dbg("resource %p (%lx..%lx)\n", res, res->start, res->end);
>
>        port->mapbase = res->start;
> -       port->membase = S3C_VA_UART + res->start - (S3C_PA_UART & 0xfff00000);
> +       port->membase = S3C_VA_UART + (res->start & 0xfffff);
>        ret = platform_get_irq(platdev, 0);
>        if (ret < 0)
>                port->irq = 0;
> --
> 1.6.2.5
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>



More information about the linux-arm-kernel mailing list