All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 7/7] ARM: S5P6440: Add serial port support
@ 2010-01-11  3:55 Kukjin Kim
  2010-01-11  6:42 ` Ben Dooks
  2010-01-11  6:51 ` Ben Dooks
  0 siblings, 2 replies; 3+ messages in thread
From: Kukjin Kim @ 2010-01-11  3:55 UTC (permalink / raw)
  To: linux-samsung-soc
  Cc: ben-linux, Kukjin Kim, Adityapratap Sharma, Thomas Abraham,
	Atul Dahiya

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@samsung.com>
Signed-off-by: Adityapratap Sharma <aditya.ps@samsung.com>
Signed-off-by: Thomas Abraham <thomas.ab@samsung.com>
Signed-off-by: Atul Dahiya <atul.dahiya@samsung.com>
---
 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
-- 
1.6.2.5

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v3 7/7] ARM: S5P6440: Add serial port support
  2010-01-11  3:55 [PATCH v3 7/7] ARM: S5P6440: Add serial port support Kukjin Kim
@ 2010-01-11  6:42 ` Ben Dooks
  2010-01-11  6:51 ` Ben Dooks
  1 sibling, 0 replies; 3+ messages in thread
From: Ben Dooks @ 2010-01-11  6:42 UTC (permalink / raw)
  To: Kukjin Kim
  Cc: linux-samsung-soc, ben-linux, Adityapratap Sharma, Thomas Abraham,
	Atul Dahiya

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@samsung.com>
> Signed-off-by: Adityapratap Sharma <aditya.ps@samsung.com>
> Signed-off-by: Thomas Abraham <thomas.ab@samsung.com>
> Signed-off-by: Atul Dahiya <atul.dahiya@samsung.com>
> ---
>  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)

I can't see this being used anywhere. Another thing is that it looks
like a re-defined on S3C2410_LCON_CS8 (it seems S3C2410_LCON is a mis-type
f S3C2410_ULCON). Please get rid of this change unless it breaks the build.
  
>  #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
> -- 
> 1.6.2.5
> 

-- 
-- 
Ben

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v3 7/7] ARM: S5P6440: Add serial port support
  2010-01-11  3:55 [PATCH v3 7/7] ARM: S5P6440: Add serial port support Kukjin Kim
  2010-01-11  6:42 ` Ben Dooks
@ 2010-01-11  6:51 ` Ben Dooks
  1 sibling, 0 replies; 3+ messages in thread
From: Ben Dooks @ 2010-01-11  6:51 UTC (permalink / raw)
  To: Kukjin Kim
  Cc: linux-samsung-soc, ben-linux, Adityapratap Sharma, Thomas Abraham,
	Atul Dahiya

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@samsung.com>
> Signed-off-by: Adityapratap Sharma <aditya.ps@samsung.com>
> Signed-off-by: Thomas Abraham <thomas.ab@samsung.com>
> Signed-off-by: Atul Dahiya <atul.dahiya@samsung.com>
> ---
>  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.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2010-01-11  6:51 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-11  3:55 [PATCH v3 7/7] ARM: S5P6440: Add serial port support Kukjin Kim
2010-01-11  6:42 ` Ben Dooks
2010-01-11  6:51 ` Ben Dooks

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.