All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ben Dooks <ben-linux@fluff.org>
To: Kukjin Kim <kgene.kim@samsung.com>
Cc: linux-samsung-soc@vger.kernel.org, ben-linux@fluff.org,
	Adityapratap Sharma <aditya.ps@samsung.com>,
	Thomas Abraham <thomas.ab@samsung.com>,
	Atul Dahiya <atul.dahiya@samsung.com>
Subject: Re: [PATCH v3 7/7] ARM: S5P6440: Add serial port support
Date: Mon, 11 Jan 2010 06:51:23 +0000	[thread overview]
Message-ID: <20100111065123.GL3738@trinity.fluff.org> (raw)
In-Reply-To: <1263182119-14588-1-git-send-email-kgene.kim@samsung.com>

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.

      parent reply	other threads:[~2010-01-11  6:51 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100111065123.GL3738@trinity.fluff.org \
    --to=ben-linux@fluff.org \
    --cc=aditya.ps@samsung.com \
    --cc=atul.dahiya@samsung.com \
    --cc=kgene.kim@samsung.com \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=thomas.ab@samsung.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.