Re: [PATCH v3 7/7] ARM: S5P6440: Add serial port support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jan 11, 2010 at 12:55:19PM +0900, Kukjin Kim wrote:
> This patch adds UART serial port support for S5P6440 CPU. Most of the
> serial support of Samsung's 6400 CPU is reused for 6440 CPU.
> 
> Signed-off-by: Kukjin Kim <kgene.kim@xxxxxxxxxxx>
> Signed-off-by: Adityapratap Sharma <aditya.ps@xxxxxxxxxxx>
> Signed-off-by: Thomas Abraham <thomas.ab@xxxxxxxxxxx>
> Signed-off-by: Atul Dahiya <atul.dahiya@xxxxxxxxxxx>
> ---
>  arch/arm/plat-s3c/include/plat/devs.h        |    1 +
>  arch/arm/plat-s3c/include/plat/regs-serial.h |    1 +
>  arch/arm/plat-s5p/dev-uart.c                 |  165 ++++++++++++++++++++++++++
>  drivers/serial/Kconfig                       |    9 ++-
>  drivers/serial/Makefile                      |    1 +
>  5 files changed, 176 insertions(+), 1 deletions(-)
>  create mode 100644 arch/arm/plat-s5p/dev-uart.c
> 
> diff --git a/arch/arm/plat-s3c/include/plat/devs.h b/arch/arm/plat-s3c/include/plat/devs.h
> index c1c20b0..8a4153b 100644
> --- a/arch/arm/plat-s3c/include/plat/devs.h
> +++ b/arch/arm/plat-s3c/include/plat/devs.h
> @@ -18,6 +18,7 @@ struct s3c24xx_uart_resources {
>  
>  extern struct s3c24xx_uart_resources s3c2410_uart_resources[];
>  extern struct s3c24xx_uart_resources s3c64xx_uart_resources[];
> +extern struct s3c24xx_uart_resources s5p_uart_resources[];
>  
>  extern struct platform_device *s3c24xx_uart_devs[];
>  extern struct platform_device *s3c24xx_uart_src[];
> diff --git a/arch/arm/plat-s3c/include/plat/regs-serial.h b/arch/arm/plat-s3c/include/plat/regs-serial.h
> index 85d8904..243a17e 100644
> --- a/arch/arm/plat-s3c/include/plat/regs-serial.h
> +++ b/arch/arm/plat-s3c/include/plat/regs-serial.h
> @@ -193,6 +193,7 @@
>  #define S3C64XX_UINTP		0x30
>  #define S3C64XX_UINTSP		0x34
>  #define S3C64XX_UINTM		0x38
> +#define S3C64XX_ULCON_WORD_8BIT (3 << 0)
>  
>  #ifndef __ASSEMBLY__
>  
> diff --git a/arch/arm/plat-s5p/dev-uart.c b/arch/arm/plat-s5p/dev-uart.c
> new file mode 100644
> index 0000000..af726f4
> --- /dev/null
> +++ b/arch/arm/plat-s5p/dev-uart.c
> @@ -0,0 +1,165 @@
> +/* linux/arch/arm/plat-s5p/dev-uart.c
> + *
> + * Copyright (c) 2009 Samsung Electronics Co., Ltd.
> + *		http://www.samsung.com/
> + *
> + * Base S5P UART resource and device definitions
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> +*/
> +
> +#include <linux/kernel.h>
> +#include <linux/types.h>
> +#include <linux/interrupt.h>
> +#include <linux/list.h>
> +#include <linux/platform_device.h>
> +
> +#include <asm/mach/arch.h>
> +#include <asm/mach/irq.h>
> +#include <mach/hardware.h>
> +#include <mach/map.h>
> +
> +#include <plat/devs.h>
> +
> + /* Serial port registrations */
> +
> +static struct resource s5p_uart0_resource[] = {
> +	[0] = {
> +		.start	= S5P_PA_UART0,
> +		.end	= S5P_PA_UART0 + S5P_SZ_UART,
> +		.flags	= IORESOURCE_MEM,
> +	},
> +	[1] = {
> +		.start	= IRQ_S5P_UART_RX0,
> +		.end	= IRQ_S5P_UART_RX0,
> +		.flags	= IORESOURCE_IRQ,
> +	},
> +	[2] = {
> +		.start	= IRQ_S5P_UART_TX0,
> +		.end	= IRQ_S5P_UART_TX0,
> +		.flags	= IORESOURCE_IRQ,
> +	},
> +	[3] = {
> +		.start	= IRQ_S5P_UART_ERR0,
> +		.end	= IRQ_S5P_UART_ERR0,
> +		.flags	= IORESOURCE_IRQ,
> +	}
> +};
> +
> +static struct resource s5p_uart1_resource[] = {
> +	[0] = {
> +		.start	= S5P_PA_UART1,
> +		.end	= S5P_PA_UART1 + S5P_SZ_UART,
> +		.flags	= IORESOURCE_MEM,
> +	},
> +	[1] = {
> +		.start	= IRQ_S5P_UART_RX1,
> +		.end	= IRQ_S5P_UART_RX1,
> +		.flags	= IORESOURCE_IRQ,
> +	},
> +	[2] = {
> +		.start	= IRQ_S5P_UART_TX1,
> +		.end	= IRQ_S5P_UART_TX1,
> +		.flags	= IORESOURCE_IRQ,
> +	},
> +	[3] = {
> +		.start	= IRQ_S5P_UART_ERR1,
> +		.end	= IRQ_S5P_UART_ERR1,
> +		.flags	= IORESOURCE_IRQ,
> +	},
> +};
> +
> +static struct resource s5p_uart2_resource[] = {
> +	[0] = {
> +		.start	= S5P_PA_UART2,
> +		.end	= S5P_PA_UART2 + S5P_SZ_UART,
> +		.flags	= IORESOURCE_MEM,
> +	},
> +	[1] = {
> +		.start	= IRQ_S5P_UART_RX2,
> +		.end	= IRQ_S5P_UART_RX2,
> +		.flags	= IORESOURCE_IRQ,
> +	},
> +	[2] = {
> +		.start	= IRQ_S5P_UART_TX2,
> +		.end	= IRQ_S5P_UART_TX2,
> +		.flags	= IORESOURCE_IRQ,
> +	},
> +	[3] = {
> +		.start	= IRQ_S5P_UART_ERR2,
> +		.end	= IRQ_S5P_UART_ERR2,
> +		.flags	= IORESOURCE_IRQ,
> +	},
> +};
> +
> +static struct resource s5p_uart3_resource[] = {
> +	[0] = {
> +		.start	= S5P_PA_UART3,
> +		.end	= S5P_PA_UART3 + S5P_SZ_UART,
> +		.flags	= IORESOURCE_MEM,
> +	},
> +	[1] = {
> +		.start	= IRQ_S5P_UART_RX3,
> +		.end	= IRQ_S5P_UART_RX3,
> +		.flags	= IORESOURCE_IRQ,
> +	},
> +	[2] = {
> +		.start	= IRQ_S5P_UART_TX3,
> +		.end	= IRQ_S5P_UART_TX3,
> +		.flags	= IORESOURCE_IRQ,
> +	},
> +	[3] = {
> +		.start	= IRQ_S5P_UART_ERR3,
> +		.end	= IRQ_S5P_UART_ERR3,
> +		.flags	= IORESOURCE_IRQ,
> +	},
> +};
> +
> +struct s3c24xx_uart_resources s5p_uart_resources[] __initdata = {
> +	[0] = {
> +		.resources	= s5p_uart0_resource,
> +		.nr_resources	= ARRAY_SIZE(s5p_uart0_resource),
> +	},
> +	[1] = {
> +		.resources	= s5p_uart1_resource,
> +		.nr_resources	= ARRAY_SIZE(s5p_uart1_resource),
> +	},
> +	[2] = {
> +		.resources	= s5p_uart2_resource,
> +		.nr_resources	= ARRAY_SIZE(s5p_uart2_resource),
> +	},
> +	[3] = {
> +		.resources	= s5p_uart3_resource,
> +		.nr_resources	= ARRAY_SIZE(s5p_uart3_resource),
> +	},
> +};
> +
> +/* uart devices */
> +
> +static struct platform_device s5p_uart_device0 = {
> +	.id		= 0,
> +};
> +
> +static struct platform_device s5p_uart_device1 = {
> +	.id		= 1,
> +};
> +
> +static struct platform_device s5p_uart_device2 = {
> +	.id		= 2,
> +};
> +
> +static struct platform_device s5p_uart_device3 = {
> +	.id		= 3,
> +};
> +
> +struct platform_device *s3c24xx_uart_src[4] = {
> +	&s5p_uart_device0,
> +	&s5p_uart_device1,
> +	&s5p_uart_device2,
> +	&s5p_uart_device3,
> +};
> +
> +struct platform_device *s3c24xx_uart_devs[4] = {
> +};
> diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
> index 9ff47db..5e9bc3a 100644
> --- a/drivers/serial/Kconfig
> +++ b/drivers/serial/Kconfig
> @@ -459,7 +459,7 @@ config SERIAL_SAMSUNG_UARTS
>  	int
>  	depends on ARM && PLAT_S3C
>  	default 2 if ARCH_S3C2400
> -	default 4 if ARCH_S5PC1XX || ARCH_S3C64XX || CPU_S3C2443
> +	default 4 if ARCH_S5P6440 || ARCH_S5PC1XX || ARCH_S3C64XX || CPU_S3C2443
>  	default 3
>  	help
>  	  Select the number of available UART ports for the Samsung S3C
> @@ -533,6 +533,13 @@ config SERIAL_S3C6400
>  	  Serial port support for the Samsung S3C6400 and S3C6410
>  	  SoCs
>  
> +config SERIAL_S5P6440
> +        tristate "Samsung S5P Serial port support"
> +	depends on SERIAL_SAMSUNG && CPU_S5P6440
> +	default y
> +	help
> +	  Serial port support for Samsung's S5P6440 SoC.
> +
>  config SERIAL_S5PC100
>  	tristate "Samsung S5PC100 Serial port support"
>  	depends on SERIAL_SAMSUNG && CPU_S5PC100
> diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile
> index 5548fe7..899d5cb 100644
> --- a/drivers/serial/Makefile
> +++ b/drivers/serial/Makefile
> @@ -44,6 +44,7 @@ obj-$(CONFIG_SERIAL_S3C2412) += s3c2412.o
>  obj-$(CONFIG_SERIAL_S3C2440) += s3c2440.o
>  obj-$(CONFIG_SERIAL_S3C24A0) += s3c24a0.o
>  obj-$(CONFIG_SERIAL_S3C6400) += s3c6400.o
> +obj-$(CONFIG_SERIAL_S5P6440) += s3c6400.o
>  obj-$(CONFIG_SERIAL_S5PC100) += s3c6400.o
>  obj-$(CONFIG_SERIAL_MAX3100) += max3100.o
>  obj-$(CONFIG_SERIAL_IP22_ZILOG) += ip22zilog.o

This is a problem, you've got two configurations with the same target
file. Forget the fact S5PC100 sneaked in a third, I will remove this and
elide the configuration now i've seen it. It should not have been merged
in the first place, must have missed it.

Please re-use CONFIG_SERIAL_S3C6400, building the same file from different
configurations provides the possibility of not only confusing the build
system, but with ending up with the same object as both a module and a
builtin.

-- 
Ben

Q:      What's a light-year?
A:      One-third less calories than a regular year.

--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux SoC Development]     [Linux Rockchip Development]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Linux SCSI]     [Yosemite News]

  Powered by Linux