Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 96ce2385 authored by Ben Dooks's avatar Ben Dooks Committed by Russell King
Browse files

[ARM] 3559/1: S3C2442: core and serial port



Patch from Ben Dooks

Core support for the Samsung S3C2442, and the
serial port driver update to allow the serial
port blocks to be used.

Signed-off-by: default avatarBen Dooks <ben-linux@fluff.org>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 66a9b49a
Loading
Loading
Loading
Loading
+26 −0
Original line number Original line Diff line number Diff line
@@ -70,6 +70,18 @@ config ARCH_S3C2440
	help
	help
	  Say Y here if you are using the SMDK2440.
	  Say Y here if you are using the SMDK2440.


config SMDK2440_CPU2440
	bool "SMDK2440 with S3C2440 cpu module"
	depends on ARCH_S3C2440
	default y if ARCH_S3C2440
	select CPU_S3C2440

config SMDK2440_CPU2442
	bool "SMDM2440 with S3C2442 cpu module"
	depends on ARCH_S3C2440
	select CPU_S3C2442


config MACH_VR1000
config MACH_VR1000
	bool "Thorcom VR1000"
	bool "Thorcom VR1000"
	select CPU_S3C2410
	select CPU_S3C2410
@@ -109,12 +121,26 @@ config CPU_S3C2410
	  Support for S3C2410 and S3C2410A family from the S3C24XX line
	  Support for S3C2410 and S3C2410A family from the S3C24XX line
	  of Samsung Mobile CPUs.
	  of Samsung Mobile CPUs.


config CPU_S3C244X
	bool
	depends on ARCH_S3C2410 && (CPU_S3C2440 || CPU_S3C2442)
	help
	  Support for S3C2440 and S3C2442 Samsung Mobile CPU based systems.

config CPU_S3C2440
config CPU_S3C2440
	bool
	bool
	depends on ARCH_S3C2410
	depends on ARCH_S3C2410
	select CPU_S3C244X
	help
	help
	  Support for S3C2440 Samsung Mobile CPU based systems.
	  Support for S3C2440 Samsung Mobile CPU based systems.


config CPU_S3C2442
	bool
	depends on ARCH_S3C2420
	select CPU_S3C244X
	help
	  Support for S3C2442 Samsung Mobile CPU based systems.

comment "S3C2410 Boot"
comment "S3C2410 Boot"


config S3C2410_BOOT_WATCHDOG
config S3C2410_BOOT_WATCHDOG
+10 −0
Original line number Original line Diff line number Diff line
@@ -24,6 +24,11 @@ obj-$(CONFIG_S3C2410_DMA) += dma.o
obj-$(CONFIG_PM)	   += pm.o sleep.o
obj-$(CONFIG_PM)	   += pm.o sleep.o
obj-$(CONFIG_PM_SIMTEC)	   += pm-simtec.o
obj-$(CONFIG_PM_SIMTEC)	   += pm-simtec.o


# S3C244X support

obj-$(CONFIG_CPU_S3C244X)  += s3c244x.o
obj-$(CONFIG_CPU_S3C244X)  += s3c244x-irq.o

# S3C2440 support
# S3C2440 support


obj-$(CONFIG_CPU_S3C2440)  += s3c2440.o s3c2440-dsc.o
obj-$(CONFIG_CPU_S3C2440)  += s3c2440.o s3c2440-dsc.o
@@ -31,6 +36,11 @@ obj-$(CONFIG_CPU_S3C2440) += s3c2440-irq.o
obj-$(CONFIG_CPU_S3C2440)  += s3c2440-clock.o
obj-$(CONFIG_CPU_S3C2440)  += s3c2440-clock.o
obj-$(CONFIG_CPU_S3C2440)  += s3c2410-gpio.o
obj-$(CONFIG_CPU_S3C2440)  += s3c2410-gpio.o


# S3C2442 support

obj-$(CONFIG_CPU_S3C2442)  += s3c2442.o
obj-$(CONFIG_CPU_S3C2442)  += s3c2442-clock.o

# bast extras
# bast extras


obj-$(CONFIG_BAST_PC104_IRQ)	+= bast-irq.o
obj-$(CONFIG_BAST_PC104_IRQ)	+= bast-irq.o
+1 −1
Original line number Original line Diff line number Diff line
@@ -70,7 +70,7 @@ void inline s3c24xx_clk_enable(unsigned int clocks, unsigned int enable)
		clkcon &= ~clocks;
		clkcon &= ~clocks;


	/* ensure none of the special function bits set */
	/* ensure none of the special function bits set */
	clkcon &= ~(S3C2410_CLKCON_IDLE|S3C2410_CLKCON_POWER);
	clkcon &= ~(S3C2410_CLKCON_IDLE|S3C2410_CLKCON_POWER | 3);


	__raw_writel(clkcon, S3C2410_CLKCON);
	__raw_writel(clkcon, S3C2410_CLKCON);
}
}
+18 −6
Original line number Original line Diff line number Diff line
@@ -44,7 +44,9 @@
#include "clock.h"
#include "clock.h"
#include "s3c2400.h"
#include "s3c2400.h"
#include "s3c2410.h"
#include "s3c2410.h"
#include "s3c244x.h"
#include "s3c2440.h"
#include "s3c2440.h"
#include "s3c2442.h"


struct cpu_table {
struct cpu_table {
	unsigned long	idcode;
	unsigned long	idcode;
@@ -61,6 +63,7 @@ struct cpu_table {
static const char name_s3c2400[]  = "S3C2400";
static const char name_s3c2400[]  = "S3C2400";
static const char name_s3c2410[]  = "S3C2410";
static const char name_s3c2410[]  = "S3C2410";
static const char name_s3c2440[]  = "S3C2440";
static const char name_s3c2440[]  = "S3C2440";
static const char name_s3c2442[]  = "S3C2442";
static const char name_s3c2410a[] = "S3C2410A";
static const char name_s3c2410a[] = "S3C2410A";
static const char name_s3c2440a[] = "S3C2440A";
static const char name_s3c2440a[] = "S3C2440A";


@@ -86,21 +89,30 @@ static struct cpu_table cpu_ids[] __initdata = {
	{
	{
		.idcode		= 0x32440000,
		.idcode		= 0x32440000,
		.idmask		= 0xffffffff,
		.idmask		= 0xffffffff,
		.map_io		= s3c2440_map_io,
		.map_io		= s3c244x_map_io,
		.init_clocks	= s3c2440_init_clocks,
		.init_clocks	= s3c244x_init_clocks,
		.init_uarts	= s3c2440_init_uarts,
		.init_uarts	= s3c244x_init_uarts,
		.init		= s3c2440_init,
		.init		= s3c2440_init,
		.name		= name_s3c2440
		.name		= name_s3c2440
	},
	},
	{
	{
		.idcode		= 0x32440001,
		.idcode		= 0x32440001,
		.idmask		= 0xffffffff,
		.idmask		= 0xffffffff,
		.map_io		= s3c2440_map_io,
		.map_io		= s3c244x_map_io,
		.init_clocks	= s3c2440_init_clocks,
		.init_clocks	= s3c244x_init_clocks,
		.init_uarts	= s3c2440_init_uarts,
		.init_uarts	= s3c244x_init_uarts,
		.init		= s3c2440_init,
		.init		= s3c2440_init,
		.name		= name_s3c2440a
		.name		= name_s3c2440a
	},
	},
	{
		.idcode		= 0x32440aaa,
		.idmask		= 0xffffffff,
		.map_io		= s3c244x_map_io,
		.init_clocks	= s3c244x_init_clocks,
		.init_uarts	= s3c244x_init_uarts,
		.init		= s3c2442_init,
		.name		= name_s3c2442
	},
	{
	{
		.idcode		= 0x0,   /* S3C2400 doesn't have an idcode */
		.idcode		= 0x0,   /* S3C2400 doesn't have an idcode */
		.idmask		= 0xffffffff,
		.idmask		= 0xffffffff,
+1 −0
Original line number Original line Diff line number Diff line
@@ -74,3 +74,4 @@ extern struct sys_timer s3c24xx_timer;
/* system device classes */
/* system device classes */


extern struct sysdev_class s3c2440_sysclass;
extern struct sysdev_class s3c2440_sysclass;
extern struct sysdev_class s3c2442_sysclass;
Loading