[PATCH v4] ARM: S5PV310: Add Samsung UNIVERSAL_C210 support
From: Kyungmin Park kyungmin.p...@samsung.com This patch adds Samsung Mobile S5PC210 Reference Board, UNIVERSAL_C210 board support. Signed-off-by: Kyungmin Park kyungmin.p...@samsung.com [kgene@samsung.com: changed machine name] Signed-off-by: Kukjin Kim kgene@samsung.com --- Kyungmin, Maybe as you know, should be changed all universal_ functions when adding other universal board for avoiding confusing later. And need this so that we can support single kernel image in future. Thanks. NOTE: Changes since v3: - Changed only machine name not functions based on v1 patch Changes since v2: - Changed machine name from 'UNIVERSAL' to 'UNIVERSAL_C210' Changes since v1: - Changed default UFCON tx/rx trigger level arch/arm/mach-s5pv310/Kconfig |9 +++ arch/arm/mach-s5pv310/Makefile |1 + arch/arm/mach-s5pv310/mach-universal_c210.c | 86 +++ 3 files changed, 96 insertions(+), 0 deletions(-) create mode 100644 arch/arm/mach-s5pv310/mach-universal_c210.c diff --git a/arch/arm/mach-s5pv310/Kconfig b/arch/arm/mach-s5pv310/Kconfig index f9b1892..331b5bd 100644 --- a/arch/arm/mach-s5pv310/Kconfig +++ b/arch/arm/mach-s5pv310/Kconfig @@ -33,4 +33,13 @@ config MACH_SMDKV310 select ARCH_SPARSEMEM_ENABLE help Machine support for Samsung SMDKV310 + +config MACH_UNIVERSAL_C210 + bool Mobile UNIVERSAL_C210 Board + select CPU_S5PV310 + select ARCH_SPARSEMEM_ENABLE + help + Machine support for Samsung Mobile Universal S5PC210 Reference + Board. S5PC210(MCP) is one of package option of S5PV310 + endif diff --git a/arch/arm/mach-s5pv310/Makefile b/arch/arm/mach-s5pv310/Makefile index 967e2c8..d5b51c7 100644 --- a/arch/arm/mach-s5pv310/Makefile +++ b/arch/arm/mach-s5pv310/Makefile @@ -22,6 +22,7 @@ obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o # machine support obj-$(CONFIG_MACH_SMDKV310)+= mach-smdkv310.o +obj-$(CONFIG_MACH_UNIVERSAL_C210) += mach-universal_c210.o # device support diff --git a/arch/arm/mach-s5pv310/mach-universal_c210.c b/arch/arm/mach-s5pv310/mach-universal_c210.c new file mode 100644 index 000..2388cb9 --- /dev/null +++ b/arch/arm/mach-s5pv310/mach-universal_c210.c @@ -0,0 +1,86 @@ +/* linux/arch/arm/mach-s5pv310/mach-universal_c210.c + * + * Copyright (c) 2010 Samsung Electronics Co., Ltd. + * + * 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/serial_core.h + +#include asm/mach/arch.h +#include asm/mach-types.h +#include asm/hardware/cache-l2x0.h + +#include plat/regs-serial.h +#include plat/s5pv310.h +#include plat/cpu.h + +#include mach/map.h + +/* Following are default values for UCON, ULCON and UFCON UART registers */ +#define UNIVERSAL_UCON_DEFAULT (S3C2410_UCON_TXILEVEL |\ +S3C2410_UCON_RXILEVEL |\ +S3C2410_UCON_TXIRQMODE | \ +S3C2410_UCON_RXIRQMODE | \ +S3C2410_UCON_RXFIFO_TOI | \ +S3C2443_UCON_RXERR_IRQEN) + +#define UNIVERSAL_ULCON_DEFAULTS3C2410_LCON_CS8 + +#define UNIVERSAL_UFCON_DEFAULT(S3C2410_UFCON_FIFOMODE | \ +S5PV210_UFCON_TXTRIG256 | \ +S5PV210_UFCON_RXTRIG256) + +static struct s3c2410_uartcfg universal_uartcfgs[] __initdata = { + [0] = { + .hwport = 0, + .ucon = UNIVERSAL_UCON_DEFAULT, + .ulcon = UNIVERSAL_ULCON_DEFAULT, + .ufcon = UNIVERSAL_UFCON_DEFAULT, + }, + [1] = { + .hwport = 1, + .ucon = UNIVERSAL_UCON_DEFAULT, + .ulcon = UNIVERSAL_ULCON_DEFAULT, + .ufcon = UNIVERSAL_UFCON_DEFAULT, + }, + [2] = { + .hwport = 2, + .ucon = UNIVERSAL_UCON_DEFAULT, + .ulcon = UNIVERSAL_ULCON_DEFAULT, + .ufcon = UNIVERSAL_UFCON_DEFAULT, + }, + [3] = { + .hwport = 3, + .ucon = UNIVERSAL_UCON_DEFAULT, + .ulcon = UNIVERSAL_ULCON_DEFAULT, + .ufcon = UNIVERSAL_UFCON_DEFAULT, + }, +}; + +static void __init universal_map_io(void) +{ + s5p_init_io(NULL, 0, S5P_VA_CHIPID); + s3c24xx_init_clocks(2400); + s3c24xx_init_uarts(universal_uartcfgs, ARRAY_SIZE(universal_uartcfgs)); +} + +static void __init universal_machine_init(void) +{ +#ifdef CONFIG_CACHE_L2X0 + l2x0_init(S5P_VA_L2CC, 1 28, 0x); +#endif +} + +MACHINE_START(UNIVERSAL_C210, UNIVERSAL_C210) + /* Maintainer:
Re: [PATCH v4] ARM: S5PV310: Add Samsung UNIVERSAL_C210 support
On Fri, Aug 6, 2010 at 9:14 PM, Kukjin Kim kgene@samsung.com wrote: From: Kyungmin Park kyungmin.p...@samsung.com This patch adds Samsung Mobile S5PC210 Reference Board, UNIVERSAL_C210 board support. Signed-off-by: Kyungmin Park kyungmin.p...@samsung.com [kgene@samsung.com: changed machine name] Signed-off-by: Kukjin Kim kgene@samsung.com --- Kyungmin, Maybe as you know, should be changed all universal_ functions when adding other universal board for avoiding confusing later. And need this so that we can support single kernel image in future. Thanks. Keep in mind. but as you see other universal patches. it's almost static variables do don't make a problem when other universal board comes. Yes. some time later it needs to change the name, but current samsung socs has each SoCs directory so it also don't make a problem. Thank you, Kyungmin Park NOTE: Changes since v3: - Changed only machine name not functions based on v1 patch Changes since v2: - Changed machine name from 'UNIVERSAL' to 'UNIVERSAL_C210' Changes since v1: - Changed default UFCON tx/rx trigger level arch/arm/mach-s5pv310/Kconfig | 9 +++ arch/arm/mach-s5pv310/Makefile | 1 + arch/arm/mach-s5pv310/mach-universal_c210.c | 86 +++ 3 files changed, 96 insertions(+), 0 deletions(-) create mode 100644 arch/arm/mach-s5pv310/mach-universal_c210.c diff --git a/arch/arm/mach-s5pv310/Kconfig b/arch/arm/mach-s5pv310/Kconfig index f9b1892..331b5bd 100644 --- a/arch/arm/mach-s5pv310/Kconfig +++ b/arch/arm/mach-s5pv310/Kconfig @@ -33,4 +33,13 @@ config MACH_SMDKV310 select ARCH_SPARSEMEM_ENABLE help Machine support for Samsung SMDKV310 + +config MACH_UNIVERSAL_C210 + bool Mobile UNIVERSAL_C210 Board + select CPU_S5PV310 + select ARCH_SPARSEMEM_ENABLE + help + Machine support for Samsung Mobile Universal S5PC210 Reference + Board. S5PC210(MCP) is one of package option of S5PV310 + endif diff --git a/arch/arm/mach-s5pv310/Makefile b/arch/arm/mach-s5pv310/Makefile index 967e2c8..d5b51c7 100644 --- a/arch/arm/mach-s5pv310/Makefile +++ b/arch/arm/mach-s5pv310/Makefile @@ -22,6 +22,7 @@ obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o # machine support obj-$(CONFIG_MACH_SMDKV310) += mach-smdkv310.o +obj-$(CONFIG_MACH_UNIVERSAL_C210) += mach-universal_c210.o # device support diff --git a/arch/arm/mach-s5pv310/mach-universal_c210.c b/arch/arm/mach-s5pv310/mach-universal_c210.c new file mode 100644 index 000..2388cb9 --- /dev/null +++ b/arch/arm/mach-s5pv310/mach-universal_c210.c @@ -0,0 +1,86 @@ +/* linux/arch/arm/mach-s5pv310/mach-universal_c210.c + * + * Copyright (c) 2010 Samsung Electronics Co., Ltd. + * + * 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/serial_core.h + +#include asm/mach/arch.h +#include asm/mach-types.h +#include asm/hardware/cache-l2x0.h + +#include plat/regs-serial.h +#include plat/s5pv310.h +#include plat/cpu.h + +#include mach/map.h + +/* Following are default values for UCON, ULCON and UFCON UART registers */ +#define UNIVERSAL_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \ + S3C2410_UCON_RXILEVEL | \ + S3C2410_UCON_TXIRQMODE | \ + S3C2410_UCON_RXIRQMODE | \ + S3C2410_UCON_RXFIFO_TOI | \ + S3C2443_UCON_RXERR_IRQEN) + +#define UNIVERSAL_ULCON_DEFAULT S3C2410_LCON_CS8 + +#define UNIVERSAL_UFCON_DEFAULT (S3C2410_UFCON_FIFOMODE | \ + S5PV210_UFCON_TXTRIG256 | \ + S5PV210_UFCON_RXTRIG256) + +static struct s3c2410_uartcfg universal_uartcfgs[] __initdata = { + [0] = { + .hwport = 0, + .ucon = UNIVERSAL_UCON_DEFAULT, + .ulcon = UNIVERSAL_ULCON_DEFAULT, + .ufcon = UNIVERSAL_UFCON_DEFAULT, + }, + [1] = { + .hwport = 1, + .ucon = UNIVERSAL_UCON_DEFAULT, + .ulcon = UNIVERSAL_ULCON_DEFAULT, + .ufcon = UNIVERSAL_UFCON_DEFAULT, + }, + [2] = { + .hwport = 2, + .ucon = UNIVERSAL_UCON_DEFAULT, + .ulcon = UNIVERSAL_ULCON_DEFAULT, + .ufcon = UNIVERSAL_UFCON_DEFAULT, + }, + [3] = { + .hwport = 3, + .ucon = UNIVERSAL_UCON_DEFAULT, + .ulcon = UNIVERSAL_ULCON_DEFAULT, + .ufcon