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