Commit b85b64cc authored by Kukjin Kim's avatar Kukjin Kim

Merge branch 'next/timer-samsung' into next/clk-exynos

parents c877533c ad38bdd1
...@@ -770,8 +770,10 @@ config ARCH_SA1100 ...@@ -770,8 +770,10 @@ config ARCH_SA1100
config ARCH_S3C24XX config ARCH_S3C24XX
bool "Samsung S3C24XX SoCs" bool "Samsung S3C24XX SoCs"
select ARCH_HAS_CPUFREQ select ARCH_HAS_CPUFREQ
select ARCH_USES_GETTIMEOFFSET
select CLKDEV_LOOKUP select CLKDEV_LOOKUP
select CLKSRC_MMIO
select GENERIC_CLOCKEVENTS
select GENERIC_GPIO
select HAVE_CLK select HAVE_CLK
select HAVE_S3C2410_I2C if I2C select HAVE_S3C2410_I2C if I2C
select HAVE_S3C2410_WATCHDOG if WATCHDOG select HAVE_S3C2410_WATCHDOG if WATCHDOG
...@@ -788,10 +790,11 @@ config ARCH_S3C64XX ...@@ -788,10 +790,11 @@ config ARCH_S3C64XX
bool "Samsung S3C64XX" bool "Samsung S3C64XX"
select ARCH_HAS_CPUFREQ select ARCH_HAS_CPUFREQ
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
select ARCH_USES_GETTIMEOFFSET
select ARM_VIC select ARM_VIC
select CLKDEV_LOOKUP select CLKDEV_LOOKUP
select CLKSRC_MMIO
select CPU_V6 select CPU_V6
select GENERIC_CLOCKEVENTS
select HAVE_CLK select HAVE_CLK
select HAVE_S3C2410_I2C if I2C select HAVE_S3C2410_I2C if I2C
select HAVE_S3C2410_WATCHDOG if WATCHDOG select HAVE_S3C2410_WATCHDOG if WATCHDOG
...@@ -825,9 +828,11 @@ config ARCH_S5P64X0 ...@@ -825,9 +828,11 @@ config ARCH_S5P64X0
config ARCH_S5PC100 config ARCH_S5PC100
bool "Samsung S5PC100" bool "Samsung S5PC100"
select ARCH_USES_GETTIMEOFFSET
select CLKDEV_LOOKUP select CLKDEV_LOOKUP
select CLKSRC_MMIO
select CPU_V7 select CPU_V7
select GENERIC_CLOCKEVENTS
select GENERIC_GPIO
select HAVE_CLK select HAVE_CLK
select HAVE_S3C2410_I2C if I2C select HAVE_S3C2410_I2C if I2C
select HAVE_S3C2410_WATCHDOG if WATCHDOG select HAVE_S3C2410_WATCHDOG if WATCHDOG
......
...@@ -277,8 +277,8 @@ config MACH_UNIVERSAL_C210 ...@@ -277,8 +277,8 @@ config MACH_UNIVERSAL_C210
select S5P_DEV_ONENAND select S5P_DEV_ONENAND
select S5P_DEV_TV select S5P_DEV_TV
select S5P_GPIO_INT select S5P_GPIO_INT
select S5P_HRT
select S5P_SETUP_MIPIPHY select S5P_SETUP_MIPIPHY
select SAMSUNG_HRT
help help
Machine support for Samsung Mobile Universal S5PC210 Reference Machine support for Samsung Mobile Universal S5PC210 Reference
Board. Board.
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
#include <plat/mfc.h> #include <plat/mfc.h>
#include <plat/sdhci.h> #include <plat/sdhci.h>
#include <plat/fimc-core.h> #include <plat/fimc-core.h>
#include <plat/s5p-time.h> #include <plat/samsung-time.h>
#include <plat/camport.h> #include <plat/camport.h>
#include <mach/map.h> #include <mach/map.h>
...@@ -1094,7 +1094,7 @@ static void __init universal_map_io(void) ...@@ -1094,7 +1094,7 @@ static void __init universal_map_io(void)
exynos_init_io(NULL, 0); exynos_init_io(NULL, 0);
s3c24xx_init_clocks(clk_xusbxti.rate); s3c24xx_init_clocks(clk_xusbxti.rate);
s3c24xx_init_uarts(universal_uartcfgs, ARRAY_SIZE(universal_uartcfgs)); s3c24xx_init_uarts(universal_uartcfgs, ARRAY_SIZE(universal_uartcfgs));
s5p_set_timer_source(S5P_PWM2, S5P_PWM4); samsung_set_timer_source(SAMSUNG_PWM2, SAMSUNG_PWM4);
} }
static void s5p_tv_setup(void) static void s5p_tv_setup(void)
...@@ -1152,7 +1152,7 @@ MACHINE_START(UNIVERSAL_C210, "UNIVERSAL_C210") ...@@ -1152,7 +1152,7 @@ MACHINE_START(UNIVERSAL_C210, "UNIVERSAL_C210")
.map_io = universal_map_io, .map_io = universal_map_io,
.init_machine = universal_machine_init, .init_machine = universal_machine_init,
.init_late = exynos_init_late, .init_late = exynos_init_late,
.init_time = s5p_timer_init, .init_time = samsung_timer_init,
.reserve = &universal_reserve, .reserve = &universal_reserve,
.restart = exynos4_restart, .restart = exynos4_restart,
MACHINE_END MACHINE_END
...@@ -30,6 +30,7 @@ config CPU_S3C2410 ...@@ -30,6 +30,7 @@ config CPU_S3C2410
select S3C2410_CLOCK select S3C2410_CLOCK
select S3C2410_CPUFREQ if CPU_FREQ_S3C24XX select S3C2410_CPUFREQ if CPU_FREQ_S3C24XX
select S3C2410_PM if PM select S3C2410_PM if PM
select SAMSUNG_HRT
help help
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.
...@@ -41,6 +42,7 @@ config CPU_S3C2412 ...@@ -41,6 +42,7 @@ config CPU_S3C2412
select CPU_LLSERIAL_S3C2440 select CPU_LLSERIAL_S3C2440
select S3C2412_DMA if S3C24XX_DMA select S3C2412_DMA if S3C24XX_DMA
select S3C2412_PM if PM select S3C2412_PM if PM
select SAMSUNG_HRT
help help
Support for the S3C2412 and S3C2413 SoCs from the S3C24XX line Support for the S3C2412 and S3C2413 SoCs from the S3C24XX line
...@@ -53,6 +55,7 @@ config CPU_S3C2416 ...@@ -53,6 +55,7 @@ config CPU_S3C2416
select S3C2443_COMMON select S3C2443_COMMON
select S3C2443_DMA if S3C24XX_DMA select S3C2443_DMA if S3C24XX_DMA
select SAMSUNG_CLKSRC select SAMSUNG_CLKSRC
select SAMSUNG_HRT
help help
Support for the S3C2416 SoC from the S3C24XX line Support for the S3C2416 SoC from the S3C24XX line
...@@ -63,6 +66,7 @@ config CPU_S3C2440 ...@@ -63,6 +66,7 @@ config CPU_S3C2440
select S3C2410_CLOCK select S3C2410_CLOCK
select S3C2410_PM if PM select S3C2410_PM if PM
select S3C2440_DMA if S3C24XX_DMA select S3C2440_DMA if S3C24XX_DMA
select SAMSUNG_HRT
help help
Support for S3C2440 Samsung Mobile CPU based systems. Support for S3C2440 Samsung Mobile CPU based systems.
...@@ -72,6 +76,7 @@ config CPU_S3C2442 ...@@ -72,6 +76,7 @@ config CPU_S3C2442
select CPU_LLSERIAL_S3C2440 select CPU_LLSERIAL_S3C2440
select S3C2410_CLOCK select S3C2410_CLOCK
select S3C2410_PM if PM select S3C2410_PM if PM
select SAMSUNG_HRT
help help
Support for S3C2442 Samsung Mobile CPU based systems. Support for S3C2442 Samsung Mobile CPU based systems.
...@@ -87,6 +92,7 @@ config CPU_S3C2443 ...@@ -87,6 +92,7 @@ config CPU_S3C2443
select S3C2443_COMMON select S3C2443_COMMON
select S3C2443_DMA if S3C24XX_DMA select S3C2443_DMA if S3C24XX_DMA
select SAMSUNG_CLKSRC select SAMSUNG_CLKSRC
select SAMSUNG_HRT
help help
Support for the S3C2443 SoC from the S3C24XX line Support for the S3C2443 SoC from the S3C24XX line
......
...@@ -34,8 +34,6 @@ ...@@ -34,8 +34,6 @@
#include <mach/hardware.h> #include <mach/hardware.h>
#include <mach/regs-irq.h> #include <mach/regs-irq.h>
#include <plat/irq.h>
#include "bast.h" #include "bast.h"
#define irqdbf(x...) #define irqdbf(x...)
......
...@@ -40,7 +40,6 @@ ...@@ -40,7 +40,6 @@
#include <mach/regs-clock.h> #include <mach/regs-clock.h>
#include <mach/regs-gpio.h> #include <mach/regs-gpio.h>
#include <plat/s3c2410.h>
#include <plat/clock.h> #include <plat/clock.h>
#include <plat/cpu.h> #include <plat/cpu.h>
......
...@@ -41,7 +41,6 @@ ...@@ -41,7 +41,6 @@
#include <mach/regs-clock.h> #include <mach/regs-clock.h>
#include <mach/regs-gpio.h> #include <mach/regs-gpio.h>
#include <plat/s3c2412.h>
#include <plat/clock.h> #include <plat/clock.h>
#include <plat/cpu.h> #include <plat/cpu.h>
......
...@@ -14,7 +14,6 @@ ...@@ -14,7 +14,6 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/clk.h> #include <linux/clk.h>
#include <plat/s3c2416.h>
#include <plat/clock.h> #include <plat/clock.h>
#include <plat/clock-clksrc.h> #include <plat/clock-clksrc.h>
#include <plat/cpu.h> #include <plat/cpu.h>
......
...@@ -41,7 +41,6 @@ ...@@ -41,7 +41,6 @@
#include <plat/cpu-freq.h> #include <plat/cpu-freq.h>
#include <plat/s3c2443.h>
#include <plat/clock.h> #include <plat/clock.h>
#include <plat/clock-clksrc.h> #include <plat/clock-clksrc.h>
#include <plat/cpu.h> #include <plat/cpu.h>
......
...@@ -41,11 +41,12 @@ ...@@ -41,11 +41,12 @@
#include <linux/platform_data/mtd-nand-s3c2410.h> #include <linux/platform_data/mtd-nand-s3c2410.h>
#include <plat/common-smdk.h>
#include <plat/gpio-cfg.h> #include <plat/gpio-cfg.h>
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/pm.h> #include <plat/pm.h>
#include "common-smdk.h"
/* LED devices */ /* LED devices */
static struct s3c24xx_led_platdata smdk_pdata_led4 = { static struct s3c24xx_led_platdata smdk_pdata_led4 = {
......
/* linux/arch/arm/plat-samsung/include/plat/common-smdk.h /*
*
* Copyright (c) 2006 Simtec Electronics * Copyright (c) 2006 Simtec Electronics
* Ben Dooks <ben@simtec.co.uk> * Ben Dooks <ben@simtec.co.uk>
* *
......
...@@ -47,14 +47,11 @@ ...@@ -47,14 +47,11 @@
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/clock.h> #include <plat/clock.h>
#include <plat/s3c2410.h>
#include <plat/s3c2412.h>
#include <plat/s3c2416.h>
#include <plat/s3c244x.h>
#include <plat/s3c2443.h>
#include <plat/cpu-freq.h> #include <plat/cpu-freq.h>
#include <plat/pll.h> #include <plat/pll.h>
#include "common.h"
/* table of supported CPUs */ /* table of supported CPUs */
static const char name_s3c2410[] = "S3C2410"; static const char name_s3c2410[] = "S3C2410";
......
...@@ -12,8 +12,94 @@ ...@@ -12,8 +12,94 @@
#ifndef __ARCH_ARM_MACH_S3C24XX_COMMON_H #ifndef __ARCH_ARM_MACH_S3C24XX_COMMON_H
#define __ARCH_ARM_MACH_S3C24XX_COMMON_H __FILE__ #define __ARCH_ARM_MACH_S3C24XX_COMMON_H __FILE__
void s3c2410_restart(char mode, const char *cmd); struct s3c2410_uartcfg;
void s3c244x_restart(char mode, const char *cmd);
#ifdef CONFIG_CPU_S3C2410
extern int s3c2410_init(void);
extern int s3c2410a_init(void);
extern void s3c2410_map_io(void);
extern void s3c2410_init_uarts(struct s3c2410_uartcfg *cfg, int no);
extern void s3c2410_init_clocks(int xtal);
extern void s3c2410_restart(char mode, const char *cmd);
#else
#define s3c2410_init_clocks NULL
#define s3c2410_init_uarts NULL
#define s3c2410_map_io NULL
#define s3c2410_init NULL
#define s3c2410a_init NULL
#endif
#ifdef CONFIG_CPU_S3C2412
extern int s3c2412_init(void);
extern void s3c2412_map_io(void);
extern void s3c2412_init_uarts(struct s3c2410_uartcfg *cfg, int no);
extern void s3c2412_init_clocks(int xtal);
extern int s3c2412_baseclk_add(void);
extern void s3c2412_restart(char mode, const char *cmd);
#else
#define s3c2412_init_clocks NULL
#define s3c2412_init_uarts NULL
#define s3c2412_map_io NULL
#define s3c2412_init NULL
#endif
#ifdef CONFIG_CPU_S3C2416
extern int s3c2416_init(void);
extern void s3c2416_map_io(void);
extern void s3c2416_init_uarts(struct s3c2410_uartcfg *cfg, int no);
extern void s3c2416_init_clocks(int xtal);
extern int s3c2416_baseclk_add(void);
extern void s3c2416_restart(char mode, const char *cmd);
extern void s3c2416_init_irq(void);
extern struct syscore_ops s3c2416_irq_syscore_ops;
#else
#define s3c2416_init_clocks NULL
#define s3c2416_init_uarts NULL
#define s3c2416_map_io NULL
#define s3c2416_init NULL
#endif
#if defined(CONFIG_CPU_S3C2440) || defined(CONFIG_CPU_S3C2442)
extern void s3c244x_map_io(void);
extern void s3c244x_init_uarts(struct s3c2410_uartcfg *cfg, int no);
extern void s3c244x_init_clocks(int xtal);
extern void s3c244x_restart(char mode, const char *cmd);
#else
#define s3c244x_init_clocks NULL
#define s3c244x_init_uarts NULL
#endif
#ifdef CONFIG_CPU_S3C2440
extern int s3c2440_init(void);
extern void s3c2440_map_io(void);
#else
#define s3c2440_init NULL
#define s3c2440_map_io NULL
#endif
#ifdef CONFIG_CPU_S3C2442
extern int s3c2442_init(void);
extern void s3c2442_map_io(void);
#else
#define s3c2442_init NULL
#define s3c2442_map_io NULL
#endif
#ifdef CONFIG_CPU_S3C2443
extern int s3c2443_init(void);
extern void s3c2443_map_io(void);
extern void s3c2443_init_uarts(struct s3c2410_uartcfg *cfg, int no);
extern void s3c2443_init_clocks(int xtal);
extern int s3c2443_baseclk_add(void);
extern void s3c2443_restart(char mode, const char *cmd);
extern void s3c2443_init_irq(void);
#else
#define s3c2443_init_clocks NULL
#define s3c2443_init_uarts NULL
#define s3c2443_map_io NULL
#define s3c2443_init NULL
#endif
extern struct syscore_ops s3c24xx_irq_syscore_ops; extern struct syscore_ops s3c24xx_irq_syscore_ops;
......
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
#include <plat/regs-ac97.h> #include <plat/regs-ac97.h>
#include <plat/regs-dma.h> #include <plat/regs-dma.h>
#include <mach/regs-lcd.h> #include <mach/regs-lcd.h>
#include <mach/regs-sdi.h>
#include <plat/regs-iis.h> #include <plat/regs-iis.h>
#include <plat/regs-spi.h> #include <plat/regs-spi.h>
......
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
#include <plat/regs-ac97.h> #include <plat/regs-ac97.h>
#include <plat/regs-dma.h> #include <plat/regs-dma.h>
#include <mach/regs-lcd.h> #include <mach/regs-lcd.h>
#include <mach/regs-sdi.h>
#include <plat/regs-iis.h> #include <plat/regs-iis.h>
#include <plat/regs-spi.h> #include <plat/regs-spi.h>
......
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
#include <plat/regs-ac97.h> #include <plat/regs-ac97.h>
#include <plat/regs-dma.h> #include <plat/regs-dma.h>
#include <mach/regs-lcd.h> #include <mach/regs-lcd.h>
#include <mach/regs-sdi.h>
#include <plat/regs-iis.h> #include <plat/regs-iis.h>
#include <plat/regs-spi.h> #include <plat/regs-spi.h>
......
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
#include <plat/regs-ac97.h> #include <plat/regs-ac97.h>
#include <plat/regs-dma.h> #include <plat/regs-dma.h>
#include <mach/regs-lcd.h> #include <mach/regs-lcd.h>
#include <mach/regs-sdi.h>
#include <plat/regs-iis.h> #include <plat/regs-iis.h>
#include <plat/regs-spi.h> #include <plat/regs-spi.h>
......
/* arch/arm/mach-s3c2410/include/mach/regs-sdi.h
*
* Copyright (c) 2004 Simtec Electronics <linux@simtec.co.uk>
* http://www.simtec.co.uk/products/SWLINUX/
*
* 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.
*
* S3C2410 MMC/SDIO register definitions
*/
#ifndef __ASM_ARM_REGS_SDI
#define __ASM_ARM_REGS_SDI "regs-sdi.h"
#define S3C2410_SDICON (0x00)
#define S3C2410_SDIPRE (0x04)
#define S3C2410_SDICMDARG (0x08)
#define S3C2410_SDICMDCON (0x0C)
#define S3C2410_SDICMDSTAT (0x10)
#define S3C2410_SDIRSP0 (0x14)
#define S3C2410_SDIRSP1 (0x18)
#define S3C2410_SDIRSP2 (0x1C)
#define S3C2410_SDIRSP3 (0x20)
#define S3C2410_SDITIMER (0x24)
#define S3C2410_SDIBSIZE (0x28)
#define S3C2410_SDIDCON (0x2C)
#define S3C2410_SDIDCNT (0x30)
#define S3C2410_SDIDSTA (0x34)
#define S3C2410_SDIFSTA (0x38)
#define S3C2410_SDIDATA (0x3C)
#define S3C2410_SDIIMSK (0x40)
#define S3C2440_SDIDATA (0x40)
#define S3C2440_SDIIMSK (0x3C)
#define S3C2440_SDICON_SDRESET (1<<8)
#define S3C2440_SDICON_MMCCLOCK (1<<5)
#define S3C2410_SDICON_BYTEORDER (1<<4)
#define S3C2410_SDICON_SDIOIRQ (1<<3)
#define S3C2410_SDICON_RWAITEN (1<<2)
#define S3C2410_SDICON_FIFORESET (1<<1)
#define S3C2410_SDICON_CLOCKTYPE (1<<0)
#define S3C2410_SDICMDCON_ABORT (1<<12)
#define S3C2410_SDICMDCON_WITHDATA (1<<11)
#define S3C2410_SDICMDCON_LONGRSP (1<<10)
#define S3C2410_SDICMDCON_WAITRSP (1<<9)
#define S3C2410_SDICMDCON_CMDSTART (1<<8)
#define S3C2410_SDICMDCON_SENDERHOST (1<<6)
#define S3C2410_SDICMDCON_INDEX (0x3f)
#define S3C2410_SDICMDSTAT_CRCFAIL (1<<12)
#define S3C2410_SDICMDSTAT_CMDSENT (1<<11)
#define S3C2410_SDICMDSTAT_CMDTIMEOUT (1<<10)
#define S3C2410_SDICMDSTAT_RSPFIN (1<<9)
#define S3C2410_SDICMDSTAT_XFERING (1<<8)
#define S3C2410_SDICMDSTAT_INDEX (0xff)
#define S3C2440_SDIDCON_DS_BYTE (0<<22)
#define S3C2440_SDIDCON_DS_HALFWORD (1<<22)
#define S3C2440_SDIDCON_DS_WORD (2<<22)
#define S3C2410_SDIDCON_IRQPERIOD (1<<21)
#define S3C2410_SDIDCON_TXAFTERRESP (1<<20)
#define S3C2410_SDIDCON_RXAFTERCMD (1<<19)
#define S3C2410_SDIDCON_BUSYAFTERCMD (1<<18)
#define S3C2410_SDIDCON_BLOCKMODE (1<<17)
#define S3C2410_SDIDCON_WIDEBUS (1<<16)
#define S3C2410_SDIDCON_DMAEN (1<<15)
#define S3C2410_SDIDCON_STOP (1<<14)
#define S3C2440_SDIDCON_DATSTART (1<<14)
#define S3C2410_SDIDCON_DATMODE (3<<12)
#define S3C2410_SDIDCON_BLKNUM (0x7ff)
/* constants for S3C2410_SDIDCON_DATMODE */
#define S3C2410_SDIDCON_XFER_READY (0<<12)
#define S3C2410_SDIDCON_XFER_CHKSTART (1<<12)
#define S3C2410_SDIDCON_XFER_RXSTART (2<<12)
#define S3C2410_SDIDCON_XFER_TXSTART (3<<12)
#define S3C2410_SDIDCON_BLKNUM_MASK (0xFFF)
#define S3C2410_SDIDCNT_BLKNUM_SHIFT (12)
#define S3C2410_SDIDSTA_RDYWAITREQ (1<<10)
#define S3C2410_SDIDSTA_SDIOIRQDETECT (1<<9)
#define S3C2410_SDIDSTA_FIFOFAIL (1<<8) /* reserved on 2440 */
#define S3C2410_SDIDSTA_CRCFAIL (1<<7)
#define S3C2410_SDIDSTA_RXCRCFAIL (1<<6)
#define S3C2410_SDIDSTA_DATATIMEOUT (1<<5)
#define S3C2410_SDIDSTA_XFERFINISH (1<<4)
#define S3C2410_SDIDSTA_BUSYFINISH (1<<3)
#define S3C2410_SDIDSTA_SBITERR (1<<2) /* reserved on 2410a/2440 */
#define S3C2410_SDIDSTA_TXDATAON (1<<1)
#define S3C2410_SDIDSTA_RXDATAON (1<<0)
#define S3C2440_SDIFSTA_FIFORESET (1<<16)
#define S3C2440_SDIFSTA_FIFOFAIL (3<<14) /* 3 is correct (2 bits) */
#define S3C2410_SDIFSTA_TFDET (1<<13)
#define S3C2410_SDIFSTA_RFDET (1<<12)
#define S3C2410_SDIFSTA_TFHALF (1<<11)
#define S3C2410_SDIFSTA_TFEMPTY (1<<10)
#define S3C2410_SDIFSTA_RFLAST (1<<9)
#define S3C2410_SDIFSTA_RFFULL (1<<8)
#define S3C2410_SDIFSTA_RFHALF (1<<7)
#define S3C2410_SDIFSTA_COUNTMASK (0x7f)
#define S3C2410_SDIIMSK_RESPONSECRC (1<<17)
#define S3C2410_SDIIMSK_CMDSENT (1<<16)
#define S3C2410_SDIIMSK_CMDTIMEOUT (1<<15)
#define S3C2410_SDIIMSK_RESPONSEND (1<<14)
#define S3C2410_SDIIMSK_READWAIT (1<<13)
#define S3C2410_SDIIMSK_SDIOIRQ (1<<12)
#define S3C2410_SDIIMSK_FIFOFAIL (1<<11)
#define S3C2410_SDIIMSK_CRCSTATUS (1<<10)
#define S3C2410_SDIIMSK_DATACRC (1<<9)
#define S3C2410_SDIIMSK_DATATIMEOUT (1<<8)
#define S3C2410_SDIIMSK_DATAFINISH (1<<7)
#define S3C2410_SDIIMSK_BUSYFINISH (1<<6)
#define S3C2410_SDIIMSK_SBITERR (1<<5) /* reserved 2440/2410a */
#define S3C2410_SDIIMSK_TXFIFOHALF (1<<4)
#define S3C2410_SDIIMSK_TXFIFOEMPTY (1<<3)
#define S3C2410_SDIIMSK_RXFIFOLAST (1<<2)
#define S3C2410_SDIIMSK_RXFIFOFULL (1<<1)
#define S3C2410_SDIIMSK_RXFIFOHALF (1<<0)
#endif /* __ASM_ARM_REGS_SDI */
...@@ -16,10 +16,15 @@ ...@@ -16,10 +16,15 @@
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/syscore_ops.h> #include <linux/syscore_ops.h>
#include <linux/io.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/pm.h> #include <plat/pm.h>
#include <plat/irq.h> #include <plat/map-base.h>
#include <plat/map-s3c.h>
#include <mach/regs-irq.h>
#include <mach/regs-gpio.h>
#include <asm/irq.h> #include <asm/irq.h>
......
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/regs-irqtype.h> #include <plat/regs-irqtype.h>
#include <plat/pm.h> #include <plat/pm.h>
#include <plat/irq.h>
#define S3C_IRQTYPE_NONE 0 #define S3C_IRQTYPE_NONE 0
#define S3C_IRQTYPE_EINT 1 #define S3C_IRQTYPE_EINT 1
...@@ -175,8 +174,7 @@ static int s3c_irqext_type_set(void __iomem *gpcon_reg, ...@@ -175,8 +174,7 @@ static int s3c_irqext_type_set(void __iomem *gpcon_reg,
return 0; return 0;
} }
/* FIXME: make static when it's out of plat-samsung/irq.h */ static int s3c_irqext_type(struct irq_data *data, unsigned int type)
int s3c_irqext_type(struct irq_data *data, unsigned int type)
{ {
void __iomem *extint_reg; void __iomem *extint_reg;
void __iomem *gpcon_reg; void __iomem *gpcon_reg;
...@@ -224,7 +222,7 @@ static int s3c_irqext0_type(struct irq_data *data, unsigned int type) ...@@ -224,7 +222,7 @@ static int s3c_irqext0_type(struct irq_data *data, unsigned int type)
extint_offset, type); extint_offset, type);
} }
struct irq_chip s3c_irq_chip = { static struct irq_chip s3c_irq_chip = {
.name = "s3c", .name = "s3c",
.irq_ack = s3c_irq_ack, .irq_ack = s3c_irq_ack,
.irq_mask = s3c_irq_mask, .irq_mask = s3c_irq_mask,
...@@ -232,7 +230,7 @@ struct irq_chip s3c_irq_chip = { ...@@ -232,7 +230,7 @@ struct irq_chip s3c_irq_chip = {
.irq_set_wake = s3c_irq_wake .irq_set_wake = s3c_irq_wake
}; };
struct irq_chip s3c_irq_level_chip = { static struct irq_chip s3c_irq_level_chip = {
.name = "s3c-level", .name = "s3c-level",
.irq_mask = s3c_irq_mask, .irq_mask = s3c_irq_mask,
.irq_unmask = s3c_irq_unmask, .irq_unmask = s3c_irq_unmask,
......
...@@ -63,6 +63,8 @@ ...@@ -63,6 +63,8 @@
#include <linux/mtd/map.h> #include <linux/mtd/map.h>
#include <linux/mtd/physmap.h> #include <linux/mtd/physmap.h>
#include <plat/samsung-time.h>
#include "common.h" #include "common.h"
static struct resource amlm5900_nor_resource = static struct resource amlm5900_nor_resource =
...@@ -160,6 +162,7 @@ static void __init amlm5900_map_io(void) ...@@ -160,6 +162,7 @@ static void __init amlm5900_map_io(void)
s3c24xx_init_io(amlm5900_iodesc, ARRAY_SIZE(amlm5900_iodesc)); s3c24xx_init_io(amlm5900_iodesc, ARRAY_SIZE(amlm5900_iodesc));
s3c24xx_init_clocks(0); s3c24xx_init_clocks(0);
s3c24xx_init_uarts(amlm5900_uartcfgs, ARRAY_SIZE(amlm5900_uartcfgs)); s3c24xx_init_uarts(amlm5900_uartcfgs, ARRAY_SIZE(amlm5900_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
#ifdef CONFIG_FB_S3C2410 #ifdef CONFIG_FB_S3C2410
...@@ -237,6 +240,6 @@ MACHINE_START(AML_M5900, "AML_M5900") ...@@ -237,6 +240,6 @@ MACHINE_START(AML_M5900, "AML_M5900")
.map_io = amlm5900_map_io, .map_io = amlm5900_map_io,
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.init_machine = amlm5900_init, .init_machine = amlm5900_init,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c2410_restart, .restart = s3c2410_restart,
MACHINE_END MACHINE_END
...@@ -49,6 +49,7 @@ ...@@ -49,6 +49,7 @@
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <linux/platform_data/asoc-s3c24xx_simtec.h> #include <linux/platform_data/asoc-s3c24xx_simtec.h>
#include <plat/samsung-time.h>
#include "anubis.h" #include "anubis.h"
#include "common.h" #include "common.h"
...@@ -410,6 +411,7 @@ static void __init anubis_map_io(void) ...@@ -410,6 +411,7 @@ static void __init anubis_map_io(void)
s3c24xx_init_io(anubis_iodesc, ARRAY_SIZE(anubis_iodesc)); s3c24xx_init_io(anubis_iodesc, ARRAY_SIZE(anubis_iodesc));
s3c24xx_init_clocks(0); s3c24xx_init_clocks(0);
s3c24xx_init_uarts(anubis_uartcfgs, ARRAY_SIZE(anubis_uartcfgs)); s3c24xx_init_uarts(anubis_uartcfgs, ARRAY_SIZE(anubis_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
/* check for the newer revision boards with large page nand */ /* check for the newer revision boards with large page nand */
...@@ -444,6 +446,6 @@ MACHINE_START(ANUBIS, "Simtec-Anubis") ...@@ -444,6 +446,6 @@ MACHINE_START(ANUBIS, "Simtec-Anubis")
.map_io = anubis_map_io, .map_io = anubis_map_io,
.init_machine = anubis_init, .init_machine = anubis_init,
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c244x_restart, .restart = s3c244x_restart,
MACHINE_END MACHINE_END
...@@ -48,6 +48,7 @@ ...@@ -48,6 +48,7 @@
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <linux/platform_data/mmc-s3cmci.h> #include <linux/platform_data/mmc-s3cmci.h>
#include <plat/samsung-time.h>
#include "common.h" #include "common.h"
...@@ -192,6 +193,7 @@ static void __init at2440evb_map_io(void) ...@@ -192,6 +193,7 @@ static void __init at2440evb_map_io(void)
s3c24xx_init_io(at2440evb_iodesc, ARRAY_SIZE(at2440evb_iodesc)); s3c24xx_init_io(at2440evb_iodesc, ARRAY_SIZE(at2440evb_iodesc));
s3c24xx_init_clocks(16934400); s3c24xx_init_clocks(16934400);
s3c24xx_init_uarts(at2440evb_uartcfgs, ARRAY_SIZE(at2440evb_uartcfgs)); s3c24xx_init_uarts(at2440evb_uartcfgs, ARRAY_SIZE(at2440evb_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static void __init at2440evb_init(void) static void __init at2440evb_init(void)
...@@ -210,6 +212,6 @@ MACHINE_START(AT2440EVB, "AT2440EVB") ...@@ -210,6 +212,6 @@ MACHINE_START(AT2440EVB, "AT2440EVB")
.map_io = at2440evb_map_io, .map_io = at2440evb_map_io,
.init_machine = at2440evb_init, .init_machine = at2440evb_init,
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c244x_restart, .restart = s3c244x_restart,
MACHINE_END MACHINE_END
...@@ -55,6 +55,7 @@ ...@@ -55,6 +55,7 @@
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/gpio-cfg.h> #include <plat/gpio-cfg.h>
#include <plat/regs-serial.h> #include <plat/regs-serial.h>
#include <plat/samsung-time.h>
#include "bast.h" #include "bast.h"
#include "common.h" #include "common.h"
...@@ -576,6 +577,7 @@ static void __init bast_map_io(void) ...@@ -576,6 +577,7 @@ static void __init bast_map_io(void)
s3c24xx_init_io(bast_iodesc, ARRAY_SIZE(bast_iodesc)); s3c24xx_init_io(bast_iodesc, ARRAY_SIZE(bast_iodesc));
s3c24xx_init_clocks(0); s3c24xx_init_clocks(0);
s3c24xx_init_uarts(bast_uartcfgs, ARRAY_SIZE(bast_uartcfgs)); s3c24xx_init_uarts(bast_uartcfgs, ARRAY_SIZE(bast_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static void __init bast_init(void) static void __init bast_init(void)
...@@ -605,6 +607,6 @@ MACHINE_START(BAST, "Simtec-BAST") ...@@ -605,6 +607,6 @@ MACHINE_START(BAST, "Simtec-BAST")
.map_io = bast_map_io, .map_io = bast_map_io,
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.init_machine = bast_init, .init_machine = bast_init,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c2410_restart, .restart = s3c2410_restart,
MACHINE_END MACHINE_END
...@@ -81,6 +81,7 @@ ...@@ -81,6 +81,7 @@
#include <plat/gpio-cfg.h> #include <plat/gpio-cfg.h>
#include <plat/pm.h> #include <plat/pm.h>
#include <plat/regs-serial.h> #include <plat/regs-serial.h>
#include <plat/samsung-time.h>
#include "common.h" #include "common.h"
#include "gta02.h" #include "gta02.h"
...@@ -501,6 +502,7 @@ static void __init gta02_map_io(void) ...@@ -501,6 +502,7 @@ static void __init gta02_map_io(void)
s3c24xx_init_io(gta02_iodesc, ARRAY_SIZE(gta02_iodesc)); s3c24xx_init_io(gta02_iodesc, ARRAY_SIZE(gta02_iodesc));
s3c24xx_init_clocks(12000000); s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(gta02_uartcfgs, ARRAY_SIZE(gta02_uartcfgs)); s3c24xx_init_uarts(gta02_uartcfgs, ARRAY_SIZE(gta02_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
...@@ -589,6 +591,6 @@ MACHINE_START(NEO1973_GTA02, "GTA02") ...@@ -589,6 +591,6 @@ MACHINE_START(NEO1973_GTA02, "GTA02")
.map_io = gta02_map_io, .map_io = gta02_map_io,
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.init_machine = gta02_machine_init, .init_machine = gta02_machine_init,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c244x_restart, .restart = s3c244x_restart,
MACHINE_END MACHINE_END
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
#include <plat/pll.h> #include <plat/pll.h>
#include <plat/pm.h> #include <plat/pm.h>
#include <plat/regs-serial.h> #include <plat/regs-serial.h>
#include <plat/samsung-time.h>
#include "common.h" #include "common.h"
#include "h1940.h" #include "h1940.h"
...@@ -646,6 +646,7 @@ static void __init h1940_map_io(void) ...@@ -646,6 +646,7 @@ static void __init h1940_map_io(void)
s3c24xx_init_io(h1940_iodesc, ARRAY_SIZE(h1940_iodesc)); s3c24xx_init_io(h1940_iodesc, ARRAY_SIZE(h1940_iodesc));
s3c24xx_init_clocks(0); s3c24xx_init_clocks(0);
s3c24xx_init_uarts(h1940_uartcfgs, ARRAY_SIZE(h1940_uartcfgs)); s3c24xx_init_uarts(h1940_uartcfgs, ARRAY_SIZE(h1940_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
/* setup PM */ /* setup PM */
...@@ -741,6 +742,6 @@ MACHINE_START(H1940, "IPAQ-H1940") ...@@ -741,6 +742,6 @@ MACHINE_START(H1940, "IPAQ-H1940")
.reserve = h1940_reserve, .reserve = h1940_reserve,
.init_irq = h1940_init_irq, .init_irq = h1940_init_irq,
.init_machine = h1940_init, .init_machine = h1940_init,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c2410_restart, .restart = s3c2410_restart,
MACHINE_END MACHINE_END
...@@ -46,14 +46,15 @@ ...@@ -46,14 +46,15 @@
#include <linux/mtd/nand_ecc.h> #include <linux/mtd/nand_ecc.h>
#include <linux/mtd/partitions.h> #include <linux/mtd/partitions.h>
#include <plat/s3c2412.h>
#include <plat/gpio-cfg.h> #include <plat/gpio-cfg.h>
#include <plat/clock.h> #include <plat/clock.h>
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/pm.h> #include <plat/pm.h>
#include <linux/platform_data/usb-s3c2410_udc.h> #include <linux/platform_data/usb-s3c2410_udc.h>
#include <plat/samsung-time.h>
#include "common.h"
#include "s3c2412-power.h" #include "s3c2412-power.h"
static struct map_desc jive_iodesc[] __initdata = { static struct map_desc jive_iodesc[] __initdata = {
...@@ -506,6 +507,7 @@ static void __init jive_map_io(void) ...@@ -506,6 +507,7 @@ static void __init jive_map_io(void)
s3c24xx_init_io(jive_iodesc, ARRAY_SIZE(jive_iodesc)); s3c24xx_init_io(jive_iodesc, ARRAY_SIZE(jive_iodesc));
s3c24xx_init_clocks(12000000); s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(jive_uartcfgs, ARRAY_SIZE(jive_uartcfgs)); s3c24xx_init_uarts(jive_uartcfgs, ARRAY_SIZE(jive_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static void jive_power_off(void) static void jive_power_off(void)
...@@ -661,6 +663,6 @@ MACHINE_START(JIVE, "JIVE") ...@@ -661,6 +663,6 @@ MACHINE_START(JIVE, "JIVE")
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.map_io = jive_map_io, .map_io = jive_map_io,
.init_machine = jive_machine_init, .init_machine = jive_machine_init,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c2412_restart, .restart = s3c2412_restart,
MACHINE_END MACHINE_END
...@@ -56,6 +56,7 @@ ...@@ -56,6 +56,7 @@
#include <plat/clock.h> #include <plat/clock.h>
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/samsung-time.h>
#include <sound/s3c24xx_uda134x.h> #include <sound/s3c24xx_uda134x.h>
...@@ -525,6 +526,7 @@ static void __init mini2440_map_io(void) ...@@ -525,6 +526,7 @@ static void __init mini2440_map_io(void)
s3c24xx_init_io(mini2440_iodesc, ARRAY_SIZE(mini2440_iodesc)); s3c24xx_init_io(mini2440_iodesc, ARRAY_SIZE(mini2440_iodesc));
s3c24xx_init_clocks(12000000); s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(mini2440_uartcfgs, ARRAY_SIZE(mini2440_uartcfgs)); s3c24xx_init_uarts(mini2440_uartcfgs, ARRAY_SIZE(mini2440_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
/* /*
...@@ -687,6 +689,6 @@ MACHINE_START(MINI2440, "MINI2440") ...@@ -687,6 +689,6 @@ MACHINE_START(MINI2440, "MINI2440")
.map_io = mini2440_map_io, .map_io = mini2440_map_io,
.init_machine = mini2440_init, .init_machine = mini2440_init,
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c244x_restart, .restart = s3c244x_restart,
MACHINE_END MACHINE_END
...@@ -48,8 +48,8 @@ ...@@ -48,8 +48,8 @@
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/devs.h> #include <plat/devs.h>
#include <linux/platform_data/mmc-s3cmci.h> #include <linux/platform_data/mmc-s3cmci.h>
#include <plat/s3c2410.h>
#include <linux/platform_data/usb-s3c2410_udc.h> #include <linux/platform_data/usb-s3c2410_udc.h>
#include <plat/samsung-time.h>
#include "common.h" #include "common.h"
...@@ -536,6 +536,7 @@ static void __init n30_map_io(void) ...@@ -536,6 +536,7 @@ static void __init n30_map_io(void)
n30_hwinit(); n30_hwinit();
s3c24xx_init_clocks(0); s3c24xx_init_clocks(0);
s3c24xx_init_uarts(n30_uartcfgs, ARRAY_SIZE(n30_uartcfgs)); s3c24xx_init_uarts(n30_uartcfgs, ARRAY_SIZE(n30_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
/* GPB3 is the line that controls the pull-up for the USB D+ line */ /* GPB3 is the line that controls the pull-up for the USB D+ line */
...@@ -589,7 +590,7 @@ MACHINE_START(N30, "Acer-N30") ...@@ -589,7 +590,7 @@ MACHINE_START(N30, "Acer-N30")
Ben Dooks <ben-linux@fluff.org> Ben Dooks <ben-linux@fluff.org>
*/ */
.atag_offset = 0x100, .atag_offset = 0x100,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.init_machine = n30_init, .init_machine = n30_init,
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.map_io = n30_map_io, .map_io = n30_map_io,
...@@ -600,7 +601,7 @@ MACHINE_START(N35, "Acer-N35") ...@@ -600,7 +601,7 @@ MACHINE_START(N35, "Acer-N35")
/* Maintainer: Christer Weinigel <christer@weinigel.se> /* Maintainer: Christer Weinigel <christer@weinigel.se>
*/ */
.atag_offset = 0x100, .atag_offset = 0x100,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.init_machine = n30_init, .init_machine = n30_init,
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.map_io = n30_map_io, .map_io = n30_map_io,
......
...@@ -41,11 +41,10 @@ ...@@ -41,11 +41,10 @@
#include <linux/platform_data/i2c-s3c2410.h> #include <linux/platform_data/i2c-s3c2410.h>
#include <plat/gpio-cfg.h> #include <plat/gpio-cfg.h>
#include <plat/s3c2410.h>
#include <plat/s3c244x.h>
#include <plat/clock.h> #include <plat/clock.h>
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/samsung-time.h>
#include "common.h" #include "common.h"
...@@ -137,6 +136,7 @@ static void __init nexcoder_map_io(void) ...@@ -137,6 +136,7 @@ static void __init nexcoder_map_io(void)
s3c24xx_init_io(nexcoder_iodesc, ARRAY_SIZE(nexcoder_iodesc)); s3c24xx_init_io(nexcoder_iodesc, ARRAY_SIZE(nexcoder_iodesc));
s3c24xx_init_clocks(0); s3c24xx_init_clocks(0);
s3c24xx_init_uarts(nexcoder_uartcfgs, ARRAY_SIZE(nexcoder_uartcfgs)); s3c24xx_init_uarts(nexcoder_uartcfgs, ARRAY_SIZE(nexcoder_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
nexcoder_sensorboard_init(); nexcoder_sensorboard_init();
} }
...@@ -153,6 +153,6 @@ MACHINE_START(NEXCODER_2440, "NexVision - Nexcoder 2440") ...@@ -153,6 +153,6 @@ MACHINE_START(NEXCODER_2440, "NexVision - Nexcoder 2440")
.map_io = nexcoder_map_io, .map_io = nexcoder_map_io,
.init_machine = nexcoder_init, .init_machine = nexcoder_init,
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c244x_restart, .restart = s3c244x_restart,
MACHINE_END MACHINE_END
...@@ -45,6 +45,7 @@ ...@@ -45,6 +45,7 @@
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/gpio-cfg.h> #include <plat/gpio-cfg.h>
#include <plat/regs-serial.h> #include <plat/regs-serial.h>
#include <plat/samsung-time.h>
#include <mach/hardware.h> #include <mach/hardware.h>
#include <mach/regs-gpio.h> #include <mach/regs-gpio.h>
...@@ -384,6 +385,7 @@ static void __init osiris_map_io(void) ...@@ -384,6 +385,7 @@ static void __init osiris_map_io(void)
s3c24xx_init_io(osiris_iodesc, ARRAY_SIZE(osiris_iodesc)); s3c24xx_init_io(osiris_iodesc, ARRAY_SIZE(osiris_iodesc));
s3c24xx_init_clocks(0); s3c24xx_init_clocks(0);
s3c24xx_init_uarts(osiris_uartcfgs, ARRAY_SIZE(osiris_uartcfgs)); s3c24xx_init_uarts(osiris_uartcfgs, ARRAY_SIZE(osiris_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
/* check for the newer revision boards with large page nand */ /* check for the newer revision boards with large page nand */
...@@ -426,6 +428,6 @@ MACHINE_START(OSIRIS, "Simtec-OSIRIS") ...@@ -426,6 +428,6 @@ MACHINE_START(OSIRIS, "Simtec-OSIRIS")
.map_io = osiris_map_io, .map_io = osiris_map_io,
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.init_machine = osiris_init, .init_machine = osiris_init,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c244x_restart, .restart = s3c244x_restart,
MACHINE_END MACHINE_END
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/regs-serial.h> #include <plat/regs-serial.h>
#include <plat/s3c2410.h> #include <plat/samsung-time.h>
#include "common.h" #include "common.h"
#include "otom.h" #include "otom.h"
...@@ -102,6 +102,7 @@ static void __init otom11_map_io(void) ...@@ -102,6 +102,7 @@ static void __init otom11_map_io(void)
s3c24xx_init_io(otom11_iodesc, ARRAY_SIZE(otom11_iodesc)); s3c24xx_init_io(otom11_iodesc, ARRAY_SIZE(otom11_iodesc));
s3c24xx_init_clocks(0); s3c24xx_init_clocks(0);
s3c24xx_init_uarts(otom11_uartcfgs, ARRAY_SIZE(otom11_uartcfgs)); s3c24xx_init_uarts(otom11_uartcfgs, ARRAY_SIZE(otom11_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static void __init otom11_init(void) static void __init otom11_init(void)
...@@ -116,6 +117,6 @@ MACHINE_START(OTOM, "Nex Vision - Otom 1.1") ...@@ -116,6 +117,6 @@ MACHINE_START(OTOM, "Nex Vision - Otom 1.1")
.map_io = otom11_map_io, .map_io = otom11_map_io,
.init_machine = otom11_init, .init_machine = otom11_init,
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c2410_restart, .restart = s3c2410_restart,
MACHINE_END MACHINE_END
...@@ -55,13 +55,14 @@ ...@@ -55,13 +55,14 @@
#include <linux/platform_data/usb-s3c2410_udc.h> #include <linux/platform_data/usb-s3c2410_udc.h>
#include <linux/platform_data/i2c-s3c2410.h> #include <linux/platform_data/i2c-s3c2410.h>
#include <plat/common-smdk.h>
#include <plat/gpio-cfg.h> #include <plat/gpio-cfg.h>
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/pm.h> #include <plat/pm.h>
#include <plat/samsung-time.h>
#include "common.h" #include "common.h"
#include "common-smdk.h"
static struct map_desc qt2410_iodesc[] __initdata = { static struct map_desc qt2410_iodesc[] __initdata = {
{ 0xe0000000, __phys_to_pfn(S3C2410_CS3+0x01000000), SZ_1M, MT_DEVICE } { 0xe0000000, __phys_to_pfn(S3C2410_CS3+0x01000000), SZ_1M, MT_DEVICE }
...@@ -304,6 +305,7 @@ static void __init qt2410_map_io(void) ...@@ -304,6 +305,7 @@ static void __init qt2410_map_io(void)
s3c24xx_init_io(qt2410_iodesc, ARRAY_SIZE(qt2410_iodesc)); s3c24xx_init_io(qt2410_iodesc, ARRAY_SIZE(qt2410_iodesc));
s3c24xx_init_clocks(12*1000*1000); s3c24xx_init_clocks(12*1000*1000);
s3c24xx_init_uarts(smdk2410_uartcfgs, ARRAY_SIZE(smdk2410_uartcfgs)); s3c24xx_init_uarts(smdk2410_uartcfgs, ARRAY_SIZE(smdk2410_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static void __init qt2410_machine_init(void) static void __init qt2410_machine_init(void)
...@@ -343,6 +345,6 @@ MACHINE_START(QT2410, "QT2410") ...@@ -343,6 +345,6 @@ MACHINE_START(QT2410, "QT2410")
.map_io = qt2410_map_io, .map_io = qt2410_map_io,
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.init_machine = qt2410_machine_init, .init_machine = qt2410_machine_init,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c2410_restart, .restart = s3c2410_restart,
MACHINE_END MACHINE_END
...@@ -58,6 +58,7 @@ ...@@ -58,6 +58,7 @@
#include <plat/pm.h> #include <plat/pm.h>
#include <plat/regs-iic.h> #include <plat/regs-iic.h>
#include <plat/regs-serial.h> #include <plat/regs-serial.h>
#include <plat/samsung-time.h>
#include "common.h" #include "common.h"
#include "h1940.h" #include "h1940.h"
...@@ -741,6 +742,7 @@ static void __init rx1950_map_io(void) ...@@ -741,6 +742,7 @@ static void __init rx1950_map_io(void)
s3c24xx_init_io(rx1950_iodesc, ARRAY_SIZE(rx1950_iodesc)); s3c24xx_init_io(rx1950_iodesc, ARRAY_SIZE(rx1950_iodesc));
s3c24xx_init_clocks(16934000); s3c24xx_init_clocks(16934000);
s3c24xx_init_uarts(rx1950_uartcfgs, ARRAY_SIZE(rx1950_uartcfgs)); s3c24xx_init_uarts(rx1950_uartcfgs, ARRAY_SIZE(rx1950_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
/* setup PM */ /* setup PM */
...@@ -813,6 +815,6 @@ MACHINE_START(RX1950, "HP iPAQ RX1950") ...@@ -813,6 +815,6 @@ MACHINE_START(RX1950, "HP iPAQ RX1950")
.reserve = rx1950_reserve, .reserve = rx1950_reserve,
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.init_machine = rx1950_init_machine, .init_machine = rx1950_init_machine,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c244x_restart, .restart = s3c244x_restart,
MACHINE_END MACHINE_END
...@@ -49,6 +49,7 @@ ...@@ -49,6 +49,7 @@
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/pm.h> #include <plat/pm.h>
#include <plat/regs-serial.h> #include <plat/regs-serial.h>
#include <plat/samsung-time.h>
#include "common.h" #include "common.h"
#include "h1940.h" #include "h1940.h"
...@@ -179,6 +180,7 @@ static void __init rx3715_map_io(void) ...@@ -179,6 +180,7 @@ static void __init rx3715_map_io(void)
s3c24xx_init_io(rx3715_iodesc, ARRAY_SIZE(rx3715_iodesc)); s3c24xx_init_io(rx3715_iodesc, ARRAY_SIZE(rx3715_iodesc));
s3c24xx_init_clocks(16934000); s3c24xx_init_clocks(16934000);
s3c24xx_init_uarts(rx3715_uartcfgs, ARRAY_SIZE(rx3715_uartcfgs)); s3c24xx_init_uarts(rx3715_uartcfgs, ARRAY_SIZE(rx3715_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
/* H1940 and RX3715 need to reserve this for suspend */ /* H1940 and RX3715 need to reserve this for suspend */
...@@ -212,6 +214,6 @@ MACHINE_START(RX3715, "IPAQ-RX3715") ...@@ -212,6 +214,6 @@ MACHINE_START(RX3715, "IPAQ-RX3715")
.reserve = rx3715_reserve, .reserve = rx3715_reserve,
.init_irq = rx3715_init_irq, .init_irq = rx3715_init_irq,
.init_machine = rx3715_init_machine, .init_machine = rx3715_init_machine,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c244x_restart, .restart = s3c244x_restart,
MACHINE_END MACHINE_END
...@@ -51,10 +51,10 @@ ...@@ -51,10 +51,10 @@
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/samsung-time.h>
#include <plat/common-smdk.h>
#include "common.h" #include "common.h"
#include "common-smdk.h"
static struct map_desc smdk2410_iodesc[] __initdata = { static struct map_desc smdk2410_iodesc[] __initdata = {
/* nothing here yet */ /* nothing here yet */
...@@ -101,6 +101,7 @@ static void __init smdk2410_map_io(void) ...@@ -101,6 +101,7 @@ static void __init smdk2410_map_io(void)
s3c24xx_init_io(smdk2410_iodesc, ARRAY_SIZE(smdk2410_iodesc)); s3c24xx_init_io(smdk2410_iodesc, ARRAY_SIZE(smdk2410_iodesc));
s3c24xx_init_clocks(0); s3c24xx_init_clocks(0);
s3c24xx_init_uarts(smdk2410_uartcfgs, ARRAY_SIZE(smdk2410_uartcfgs)); s3c24xx_init_uarts(smdk2410_uartcfgs, ARRAY_SIZE(smdk2410_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static void __init smdk2410_init(void) static void __init smdk2410_init(void)
...@@ -117,6 +118,6 @@ MACHINE_START(SMDK2410, "SMDK2410") /* @TODO: request a new identifier and switc ...@@ -117,6 +118,6 @@ MACHINE_START(SMDK2410, "SMDK2410") /* @TODO: request a new identifier and switc
.map_io = smdk2410_map_io, .map_io = smdk2410_map_io,
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.init_machine = smdk2410_init, .init_machine = smdk2410_init,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c2410_restart, .restart = s3c2410_restart,
MACHINE_END MACHINE_END
...@@ -41,13 +41,13 @@ ...@@ -41,13 +41,13 @@
#include <linux/platform_data/i2c-s3c2410.h> #include <linux/platform_data/i2c-s3c2410.h>
#include <mach/fb.h> #include <mach/fb.h>
#include <plat/s3c2410.h>
#include <plat/s3c2412.h>
#include <plat/clock.h> #include <plat/clock.h>
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/samsung-time.h>
#include <plat/common-smdk.h> #include "common.h"
#include "common-smdk.h"
static struct map_desc smdk2413_iodesc[] __initdata = { static struct map_desc smdk2413_iodesc[] __initdata = {
}; };
...@@ -106,6 +106,7 @@ static void __init smdk2413_map_io(void) ...@@ -106,6 +106,7 @@ static void __init smdk2413_map_io(void)
s3c24xx_init_io(smdk2413_iodesc, ARRAY_SIZE(smdk2413_iodesc)); s3c24xx_init_io(smdk2413_iodesc, ARRAY_SIZE(smdk2413_iodesc));
s3c24xx_init_clocks(12000000); s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(smdk2413_uartcfgs, ARRAY_SIZE(smdk2413_uartcfgs)); s3c24xx_init_uarts(smdk2413_uartcfgs, ARRAY_SIZE(smdk2413_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static void __init smdk2413_machine_init(void) static void __init smdk2413_machine_init(void)
...@@ -132,7 +133,7 @@ MACHINE_START(S3C2413, "S3C2413") ...@@ -132,7 +133,7 @@ MACHINE_START(S3C2413, "S3C2413")
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.map_io = smdk2413_map_io, .map_io = smdk2413_map_io,
.init_machine = smdk2413_machine_init, .init_machine = smdk2413_machine_init,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c2412_restart, .restart = s3c2412_restart,
MACHINE_END MACHINE_END
...@@ -144,7 +145,7 @@ MACHINE_START(SMDK2412, "SMDK2412") ...@@ -144,7 +145,7 @@ MACHINE_START(SMDK2412, "SMDK2412")
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.map_io = smdk2413_map_io, .map_io = smdk2413_map_io,
.init_machine = smdk2413_machine_init, .init_machine = smdk2413_machine_init,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c2412_restart, .restart = s3c2412_restart,
MACHINE_END MACHINE_END
...@@ -156,6 +157,6 @@ MACHINE_START(SMDK2413, "SMDK2413") ...@@ -156,6 +157,6 @@ MACHINE_START(SMDK2413, "SMDK2413")
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.map_io = smdk2413_map_io, .map_io = smdk2413_map_io,
.init_machine = smdk2413_machine_init, .init_machine = smdk2413_machine_init,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c2412_restart, .restart = s3c2412_restart,
MACHINE_END MACHINE_END
...@@ -42,7 +42,6 @@ ...@@ -42,7 +42,6 @@
#include <linux/platform_data/leds-s3c24xx.h> #include <linux/platform_data/leds-s3c24xx.h>
#include <linux/platform_data/i2c-s3c2410.h> #include <linux/platform_data/i2c-s3c2410.h>
#include <plat/s3c2416.h>
#include <plat/gpio-cfg.h> #include <plat/gpio-cfg.h>
#include <plat/clock.h> #include <plat/clock.h>
#include <plat/devs.h> #include <plat/devs.h>
...@@ -51,10 +50,12 @@ ...@@ -51,10 +50,12 @@
#include <plat/sdhci.h> #include <plat/sdhci.h>
#include <linux/platform_data/usb-s3c2410_udc.h> #include <linux/platform_data/usb-s3c2410_udc.h>
#include <linux/platform_data/s3c-hsudc.h> #include <linux/platform_data/s3c-hsudc.h>
#include <plat/samsung-time.h>
#include <plat/fb.h> #include <plat/fb.h>
#include <plat/common-smdk.h> #include "common.h"
#include "common-smdk.h"
static struct map_desc smdk2416_iodesc[] __initdata = { static struct map_desc smdk2416_iodesc[] __initdata = {
/* ISA IO Space map (memory space selected by A24) */ /* ISA IO Space map (memory space selected by A24) */
...@@ -221,6 +222,7 @@ static void __init smdk2416_map_io(void) ...@@ -221,6 +222,7 @@ static void __init smdk2416_map_io(void)
s3c24xx_init_io(smdk2416_iodesc, ARRAY_SIZE(smdk2416_iodesc)); s3c24xx_init_io(smdk2416_iodesc, ARRAY_SIZE(smdk2416_iodesc));
s3c24xx_init_clocks(12000000); s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(smdk2416_uartcfgs, ARRAY_SIZE(smdk2416_uartcfgs)); s3c24xx_init_uarts(smdk2416_uartcfgs, ARRAY_SIZE(smdk2416_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static void __init smdk2416_machine_init(void) static void __init smdk2416_machine_init(void)
...@@ -253,6 +255,6 @@ MACHINE_START(SMDK2416, "SMDK2416") ...@@ -253,6 +255,6 @@ MACHINE_START(SMDK2416, "SMDK2416")
.init_irq = s3c2416_init_irq, .init_irq = s3c2416_init_irq,
.map_io = smdk2416_map_io, .map_io = smdk2416_map_io,
.init_machine = smdk2416_machine_init, .init_machine = smdk2416_machine_init,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c2416_restart, .restart = s3c2416_restart,
MACHINE_END MACHINE_END
...@@ -38,15 +38,13 @@ ...@@ -38,15 +38,13 @@
#include <mach/fb.h> #include <mach/fb.h>
#include <linux/platform_data/i2c-s3c2410.h> #include <linux/platform_data/i2c-s3c2410.h>
#include <plat/s3c2410.h>
#include <plat/s3c244x.h>
#include <plat/clock.h> #include <plat/clock.h>
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/samsung-time.h>
#include <plat/common-smdk.h>
#include "common.h" #include "common.h"
#include "common-smdk.h"
static struct map_desc smdk2440_iodesc[] __initdata = { static struct map_desc smdk2440_iodesc[] __initdata = {
/* ISA IO Space map (memory space selected by A24) */ /* ISA IO Space map (memory space selected by A24) */
...@@ -163,6 +161,7 @@ static void __init smdk2440_map_io(void) ...@@ -163,6 +161,7 @@ static void __init smdk2440_map_io(void)
s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc)); s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
s3c24xx_init_clocks(16934400); s3c24xx_init_clocks(16934400);
s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs)); s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static void __init smdk2440_machine_init(void) static void __init smdk2440_machine_init(void)
...@@ -181,6 +180,6 @@ MACHINE_START(S3C2440, "SMDK2440") ...@@ -181,6 +180,6 @@ MACHINE_START(S3C2440, "SMDK2440")
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.map_io = smdk2440_map_io, .map_io = smdk2440_map_io,
.init_machine = smdk2440_machine_init, .init_machine = smdk2440_machine_init,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c244x_restart, .restart = s3c244x_restart,
MACHINE_END MACHINE_END
...@@ -38,13 +38,13 @@ ...@@ -38,13 +38,13 @@
#include <mach/fb.h> #include <mach/fb.h>
#include <linux/platform_data/i2c-s3c2410.h> #include <linux/platform_data/i2c-s3c2410.h>
#include <plat/s3c2410.h>
#include <plat/s3c2443.h>
#include <plat/clock.h> #include <plat/clock.h>
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/samsung-time.h>
#include <plat/common-smdk.h> #include "common.h"
#include "common-smdk.h"
static struct map_desc smdk2443_iodesc[] __initdata = { static struct map_desc smdk2443_iodesc[] __initdata = {
/* ISA IO Space map (memory space selected by A24) */ /* ISA IO Space map (memory space selected by A24) */
...@@ -122,6 +122,7 @@ static void __init smdk2443_map_io(void) ...@@ -122,6 +122,7 @@ static void __init smdk2443_map_io(void)
s3c24xx_init_io(smdk2443_iodesc, ARRAY_SIZE(smdk2443_iodesc)); s3c24xx_init_io(smdk2443_iodesc, ARRAY_SIZE(smdk2443_iodesc));
s3c24xx_init_clocks(12000000); s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(smdk2443_uartcfgs, ARRAY_SIZE(smdk2443_uartcfgs)); s3c24xx_init_uarts(smdk2443_uartcfgs, ARRAY_SIZE(smdk2443_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static void __init smdk2443_machine_init(void) static void __init smdk2443_machine_init(void)
...@@ -143,6 +144,6 @@ MACHINE_START(SMDK2443, "SMDK2443") ...@@ -143,6 +144,6 @@ MACHINE_START(SMDK2443, "SMDK2443")
.init_irq = s3c2443_init_irq, .init_irq = s3c2443_init_irq,
.map_io = smdk2443_map_io, .map_io = smdk2443_map_io,
.init_machine = smdk2443_machine_init, .init_machine = smdk2443_machine_init,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c2443_restart, .restart = s3c2443_restart,
MACHINE_END MACHINE_END
...@@ -53,6 +53,7 @@ ...@@ -53,6 +53,7 @@
#include <linux/mtd/partitions.h> #include <linux/mtd/partitions.h>
#include <linux/mtd/map.h> #include <linux/mtd/map.h>
#include <linux/mtd/physmap.h> #include <linux/mtd/physmap.h>
#include <plat/samsung-time.h>
#include "common.h" #include "common.h"
...@@ -136,6 +137,7 @@ static void __init tct_hammer_map_io(void) ...@@ -136,6 +137,7 @@ static void __init tct_hammer_map_io(void)
s3c24xx_init_io(tct_hammer_iodesc, ARRAY_SIZE(tct_hammer_iodesc)); s3c24xx_init_io(tct_hammer_iodesc, ARRAY_SIZE(tct_hammer_iodesc));
s3c24xx_init_clocks(0); s3c24xx_init_clocks(0);
s3c24xx_init_uarts(tct_hammer_uartcfgs, ARRAY_SIZE(tct_hammer_uartcfgs)); s3c24xx_init_uarts(tct_hammer_uartcfgs, ARRAY_SIZE(tct_hammer_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static void __init tct_hammer_init(void) static void __init tct_hammer_init(void)
...@@ -149,6 +151,6 @@ MACHINE_START(TCT_HAMMER, "TCT_HAMMER") ...@@ -149,6 +151,6 @@ MACHINE_START(TCT_HAMMER, "TCT_HAMMER")
.map_io = tct_hammer_map_io, .map_io = tct_hammer_map_io,
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.init_machine = tct_hammer_init, .init_machine = tct_hammer_init,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c2410_restart, .restart = s3c2410_restart,
MACHINE_END MACHINE_END
...@@ -45,6 +45,7 @@ ...@@ -45,6 +45,7 @@
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/regs-serial.h> #include <plat/regs-serial.h>
#include <plat/samsung-time.h>
#include "bast.h" #include "bast.h"
#include "common.h" #include "common.h"
...@@ -332,6 +333,7 @@ static void __init vr1000_map_io(void) ...@@ -332,6 +333,7 @@ static void __init vr1000_map_io(void)
s3c24xx_init_io(vr1000_iodesc, ARRAY_SIZE(vr1000_iodesc)); s3c24xx_init_io(vr1000_iodesc, ARRAY_SIZE(vr1000_iodesc));
s3c24xx_init_clocks(0); s3c24xx_init_clocks(0);
s3c24xx_init_uarts(vr1000_uartcfgs, ARRAY_SIZE(vr1000_uartcfgs)); s3c24xx_init_uarts(vr1000_uartcfgs, ARRAY_SIZE(vr1000_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static void __init vr1000_init(void) static void __init vr1000_init(void)
...@@ -354,6 +356,6 @@ MACHINE_START(VR1000, "Thorcom-VR1000") ...@@ -354,6 +356,6 @@ MACHINE_START(VR1000, "Thorcom-VR1000")
.map_io = vr1000_map_io, .map_io = vr1000_map_io,
.init_machine = vr1000_init, .init_machine = vr1000_init,
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c2410_restart, .restart = s3c2410_restart,
MACHINE_END MACHINE_END
...@@ -41,12 +41,12 @@ ...@@ -41,12 +41,12 @@
#include <linux/platform_data/i2c-s3c2410.h> #include <linux/platform_data/i2c-s3c2410.h>
#include <linux/platform_data/mtd-nand-s3c2410.h> #include <linux/platform_data/mtd-nand-s3c2410.h>
#include <plat/s3c2410.h>
#include <plat/s3c2412.h>
#include <plat/clock.h> #include <plat/clock.h>
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/samsung-time.h>
#include "common.h"
static struct map_desc vstms_iodesc[] __initdata = { static struct map_desc vstms_iodesc[] __initdata = {
}; };
...@@ -143,6 +143,7 @@ static void __init vstms_map_io(void) ...@@ -143,6 +143,7 @@ static void __init vstms_map_io(void)
s3c24xx_init_io(vstms_iodesc, ARRAY_SIZE(vstms_iodesc)); s3c24xx_init_io(vstms_iodesc, ARRAY_SIZE(vstms_iodesc));
s3c24xx_init_clocks(12000000); s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(vstms_uartcfgs, ARRAY_SIZE(vstms_uartcfgs)); s3c24xx_init_uarts(vstms_uartcfgs, ARRAY_SIZE(vstms_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static void __init vstms_init(void) static void __init vstms_init(void)
...@@ -160,6 +161,6 @@ MACHINE_START(VSTMS, "VSTMS") ...@@ -160,6 +161,6 @@ MACHINE_START(VSTMS, "VSTMS")
.init_irq = s3c24xx_init_irq, .init_irq = s3c24xx_init_irq,
.init_machine = vstms_init, .init_machine = vstms_init,
.map_io = vstms_map_io, .map_io = vstms_map_io,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c2412_restart, .restart = s3c2412_restart,
MACHINE_END MACHINE_END
...@@ -29,7 +29,6 @@ ...@@ -29,7 +29,6 @@
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/pm.h> #include <plat/pm.h>
#include <plat/s3c2412.h>
#include "regs-dsc.h" #include "regs-dsc.h"
#include "s3c2412-power.h" #include "s3c2412-power.h"
......
...@@ -37,7 +37,6 @@ ...@@ -37,7 +37,6 @@
#include <mach/regs-clock.h> #include <mach/regs-clock.h>
#include <plat/regs-serial.h> #include <plat/regs-serial.h>
#include <plat/s3c2410.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/clock.h> #include <plat/clock.h>
......
...@@ -44,7 +44,6 @@ ...@@ -44,7 +44,6 @@
#include <plat/pm.h> #include <plat/pm.h>
#include <plat/regs-serial.h> #include <plat/regs-serial.h>
#include <plat/regs-spi.h> #include <plat/regs-spi.h>
#include <plat/s3c2412.h>
#include "common.h" #include "common.h"
#include "regs-dsc.h" #include "regs-dsc.h"
......
...@@ -50,7 +50,6 @@ ...@@ -50,7 +50,6 @@
#include <plat/gpio-core.h> #include <plat/gpio-core.h>
#include <plat/gpio-cfg.h> #include <plat/gpio-cfg.h>
#include <plat/gpio-cfg-helpers.h> #include <plat/gpio-cfg-helpers.h>
#include <plat/s3c2416.h>
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/sdhci.h> #include <plat/sdhci.h>
......
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/s3c244x.h>
#include <plat/pm.h> #include <plat/pm.h>
#include <plat/gpio-core.h> #include <plat/gpio-core.h>
......
...@@ -44,7 +44,6 @@ ...@@ -44,7 +44,6 @@
#include <plat/clock.h> #include <plat/clock.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/s3c244x.h>
#include <plat/pm.h> #include <plat/pm.h>
#include <plat/gpio-core.h> #include <plat/gpio-core.h>
......
...@@ -36,7 +36,6 @@ ...@@ -36,7 +36,6 @@
#include <plat/gpio-core.h> #include <plat/gpio-core.h>
#include <plat/gpio-cfg.h> #include <plat/gpio-cfg.h>
#include <plat/gpio-cfg-helpers.h> #include <plat/gpio-cfg-helpers.h>
#include <plat/s3c2443.h>
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/fb-core.h> #include <plat/fb-core.h>
......
...@@ -37,8 +37,6 @@ ...@@ -37,8 +37,6 @@
#include <plat/regs-serial.h> #include <plat/regs-serial.h>
#include <mach/regs-gpio.h> #include <mach/regs-gpio.h>
#include <plat/s3c2410.h>
#include <plat/s3c244x.h>
#include <plat/clock.h> #include <plat/clock.h>
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
......
...@@ -17,11 +17,13 @@ config PLAT_S3C64XX ...@@ -17,11 +17,13 @@ config PLAT_S3C64XX
# Configuration options for the S3C6410 CPU # Configuration options for the S3C6410 CPU
config CPU_S3C6400 config CPU_S3C6400
select SAMSUNG_HRT
bool bool
help help
Enable S3C6400 CPU support Enable S3C6400 CPU support
config CPU_S3C6410 config CPU_S3C6410
select SAMSUNG_HRT
bool bool
help help
Enable S3C6410 CPU support Enable S3C6410 CPU support
......
...@@ -49,6 +49,7 @@ ...@@ -49,6 +49,7 @@
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <mach/regs-gpio.h> #include <mach/regs-gpio.h>
#include <plat/samsung-time.h>
#include "common.h" #include "common.h"
#include "regs-modem.h" #include "regs-modem.h"
...@@ -208,6 +209,7 @@ static void __init anw6410_map_io(void) ...@@ -208,6 +209,7 @@ static void __init anw6410_map_io(void)
s3c64xx_init_io(anw6410_iodesc, ARRAY_SIZE(anw6410_iodesc)); s3c64xx_init_io(anw6410_iodesc, ARRAY_SIZE(anw6410_iodesc));
s3c24xx_init_clocks(12000000); s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(anw6410_uartcfgs, ARRAY_SIZE(anw6410_uartcfgs)); s3c24xx_init_uarts(anw6410_uartcfgs, ARRAY_SIZE(anw6410_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
anw6410_lcd_mode_set(); anw6410_lcd_mode_set();
} }
...@@ -232,6 +234,6 @@ MACHINE_START(ANW6410, "A&W6410") ...@@ -232,6 +234,6 @@ MACHINE_START(ANW6410, "A&W6410")
.map_io = anw6410_map_io, .map_io = anw6410_map_io,
.init_machine = anw6410_machine_init, .init_machine = anw6410_machine_init,
.init_late = s3c64xx_init_late, .init_late = s3c64xx_init_late,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c64xx_restart, .restart = s3c64xx_restart,
MACHINE_END MACHINE_END
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
#include <plat/adc.h> #include <plat/adc.h>
#include <linux/platform_data/i2c-s3c2410.h> #include <linux/platform_data/i2c-s3c2410.h>
#include <plat/pm.h> #include <plat/pm.h>
#include <plat/samsung-time.h>
#include "common.h" #include "common.h"
#include "crag6410.h" #include "crag6410.h"
...@@ -744,6 +745,7 @@ static void __init crag6410_map_io(void) ...@@ -744,6 +745,7 @@ static void __init crag6410_map_io(void)
s3c64xx_init_io(NULL, 0); s3c64xx_init_io(NULL, 0);
s3c24xx_init_clocks(12000000); s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(crag6410_uartcfgs, ARRAY_SIZE(crag6410_uartcfgs)); s3c24xx_init_uarts(crag6410_uartcfgs, ARRAY_SIZE(crag6410_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
/* LCD type and Bypass set by bootloader */ /* LCD type and Bypass set by bootloader */
} }
...@@ -868,6 +870,6 @@ MACHINE_START(WLF_CRAGG_6410, "Wolfson Cragganmore 6410") ...@@ -868,6 +870,6 @@ MACHINE_START(WLF_CRAGG_6410, "Wolfson Cragganmore 6410")
.map_io = crag6410_map_io, .map_io = crag6410_map_io,
.init_machine = crag6410_machine_init, .init_machine = crag6410_machine_init,
.init_late = s3c64xx_init_late, .init_late = s3c64xx_init_late,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c64xx_restart, .restart = s3c64xx_restart,
MACHINE_END MACHINE_END
...@@ -41,6 +41,7 @@ ...@@ -41,6 +41,7 @@
#include <plat/clock.h> #include <plat/clock.h>
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/samsung-time.h>
#include "common.h" #include "common.h"
...@@ -248,6 +249,7 @@ static void __init hmt_map_io(void) ...@@ -248,6 +249,7 @@ static void __init hmt_map_io(void)
s3c64xx_init_io(hmt_iodesc, ARRAY_SIZE(hmt_iodesc)); s3c64xx_init_io(hmt_iodesc, ARRAY_SIZE(hmt_iodesc));
s3c24xx_init_clocks(12000000); s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(hmt_uartcfgs, ARRAY_SIZE(hmt_uartcfgs)); s3c24xx_init_uarts(hmt_uartcfgs, ARRAY_SIZE(hmt_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static void __init hmt_machine_init(void) static void __init hmt_machine_init(void)
...@@ -275,6 +277,6 @@ MACHINE_START(HMT, "Airgoo-HMT") ...@@ -275,6 +277,6 @@ MACHINE_START(HMT, "Airgoo-HMT")
.map_io = hmt_map_io, .map_io = hmt_map_io,
.init_machine = hmt_machine_init, .init_machine = hmt_machine_init,
.init_late = s3c64xx_init_late, .init_late = s3c64xx_init_late,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c64xx_restart, .restart = s3c64xx_restart,
MACHINE_END MACHINE_END
...@@ -41,6 +41,7 @@ ...@@ -41,6 +41,7 @@
#include <video/platform_lcd.h> #include <video/platform_lcd.h>
#include <video/samsung_fimd.h> #include <video/samsung_fimd.h>
#include <plat/samsung-time.h>
#include "common.h" #include "common.h"
#include "regs-modem.h" #include "regs-modem.h"
...@@ -232,6 +233,7 @@ static void __init mini6410_map_io(void) ...@@ -232,6 +233,7 @@ static void __init mini6410_map_io(void)
s3c64xx_init_io(NULL, 0); s3c64xx_init_io(NULL, 0);
s3c24xx_init_clocks(12000000); s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(mini6410_uartcfgs, ARRAY_SIZE(mini6410_uartcfgs)); s3c24xx_init_uarts(mini6410_uartcfgs, ARRAY_SIZE(mini6410_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
/* set the LCD type */ /* set the LCD type */
tmp = __raw_readl(S3C64XX_SPCON); tmp = __raw_readl(S3C64XX_SPCON);
...@@ -354,6 +356,6 @@ MACHINE_START(MINI6410, "MINI6410") ...@@ -354,6 +356,6 @@ MACHINE_START(MINI6410, "MINI6410")
.map_io = mini6410_map_io, .map_io = mini6410_map_io,
.init_machine = mini6410_machine_init, .init_machine = mini6410_machine_init,
.init_late = s3c64xx_init_late, .init_late = s3c64xx_init_late,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c64xx_restart, .restart = s3c64xx_restart,
MACHINE_END MACHINE_END
...@@ -43,6 +43,7 @@ ...@@ -43,6 +43,7 @@
#include <plat/clock.h> #include <plat/clock.h>
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/samsung-time.h>
#include "common.h" #include "common.h"
...@@ -87,6 +88,7 @@ static void __init ncp_map_io(void) ...@@ -87,6 +88,7 @@ static void __init ncp_map_io(void)
s3c64xx_init_io(ncp_iodesc, ARRAY_SIZE(ncp_iodesc)); s3c64xx_init_io(ncp_iodesc, ARRAY_SIZE(ncp_iodesc));
s3c24xx_init_clocks(12000000); s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(ncp_uartcfgs, ARRAY_SIZE(ncp_uartcfgs)); s3c24xx_init_uarts(ncp_uartcfgs, ARRAY_SIZE(ncp_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static void __init ncp_machine_init(void) static void __init ncp_machine_init(void)
...@@ -103,6 +105,6 @@ MACHINE_START(NCP, "NCP") ...@@ -103,6 +105,6 @@ MACHINE_START(NCP, "NCP")
.map_io = ncp_map_io, .map_io = ncp_map_io,
.init_machine = ncp_machine_init, .init_machine = ncp_machine_init,
.init_late = s3c64xx_init_late, .init_late = s3c64xx_init_late,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c64xx_restart, .restart = s3c64xx_restart,
MACHINE_END MACHINE_END
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
#include <video/platform_lcd.h> #include <video/platform_lcd.h>
#include <video/samsung_fimd.h> #include <video/samsung_fimd.h>
#include <plat/samsung-time.h>
#include "common.h" #include "common.h"
#include "regs-modem.h" #include "regs-modem.h"
...@@ -211,6 +212,7 @@ static void __init real6410_map_io(void) ...@@ -211,6 +212,7 @@ static void __init real6410_map_io(void)
s3c64xx_init_io(NULL, 0); s3c64xx_init_io(NULL, 0);
s3c24xx_init_clocks(12000000); s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(real6410_uartcfgs, ARRAY_SIZE(real6410_uartcfgs)); s3c24xx_init_uarts(real6410_uartcfgs, ARRAY_SIZE(real6410_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
/* set the LCD type */ /* set the LCD type */
tmp = __raw_readl(S3C64XX_SPCON); tmp = __raw_readl(S3C64XX_SPCON);
...@@ -333,6 +335,6 @@ MACHINE_START(REAL6410, "REAL6410") ...@@ -333,6 +335,6 @@ MACHINE_START(REAL6410, "REAL6410")
.map_io = real6410_map_io, .map_io = real6410_map_io,
.init_machine = real6410_machine_init, .init_machine = real6410_machine_init,
.init_late = s3c64xx_init_late, .init_late = s3c64xx_init_late,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c64xx_restart, .restart = s3c64xx_restart,
MACHINE_END MACHINE_END
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
#include <linux/platform_data/touchscreen-s3c2410.h> #include <linux/platform_data/touchscreen-s3c2410.h>
#include <video/platform_lcd.h> #include <video/platform_lcd.h>
#include <plat/samsung-time.h>
#include "common.h" #include "common.h"
#include "regs-modem.h" #include "regs-modem.h"
...@@ -378,6 +379,7 @@ void __init smartq_map_io(void) ...@@ -378,6 +379,7 @@ void __init smartq_map_io(void)
s3c64xx_init_io(smartq_iodesc, ARRAY_SIZE(smartq_iodesc)); s3c64xx_init_io(smartq_iodesc, ARRAY_SIZE(smartq_iodesc));
s3c24xx_init_clocks(12000000); s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(smartq_uartcfgs, ARRAY_SIZE(smartq_uartcfgs)); s3c24xx_init_uarts(smartq_uartcfgs, ARRAY_SIZE(smartq_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
smartq_lcd_mode_set(); smartq_lcd_mode_set();
} }
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/fb.h> #include <plat/fb.h>
#include <plat/gpio-cfg.h> #include <plat/gpio-cfg.h>
#include <plat/samsung-time.h>
#include "common.h" #include "common.h"
#include "mach-smartq.h" #include "mach-smartq.h"
...@@ -155,6 +156,6 @@ MACHINE_START(SMARTQ5, "SmartQ 5") ...@@ -155,6 +156,6 @@ MACHINE_START(SMARTQ5, "SmartQ 5")
.map_io = smartq_map_io, .map_io = smartq_map_io,
.init_machine = smartq5_machine_init, .init_machine = smartq5_machine_init,
.init_late = s3c64xx_init_late, .init_late = s3c64xx_init_late,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c64xx_restart, .restart = s3c64xx_restart,
MACHINE_END MACHINE_END
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/fb.h> #include <plat/fb.h>
#include <plat/gpio-cfg.h> #include <plat/gpio-cfg.h>
#include <plat/samsung-time.h>
#include "common.h" #include "common.h"
#include "mach-smartq.h" #include "mach-smartq.h"
...@@ -171,6 +172,6 @@ MACHINE_START(SMARTQ7, "SmartQ 7") ...@@ -171,6 +172,6 @@ MACHINE_START(SMARTQ7, "SmartQ 7")
.map_io = smartq_map_io, .map_io = smartq_map_io,
.init_machine = smartq7_machine_init, .init_machine = smartq7_machine_init,
.init_late = s3c64xx_init_late, .init_late = s3c64xx_init_late,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c64xx_restart, .restart = s3c64xx_restart,
MACHINE_END MACHINE_END
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <linux/platform_data/i2c-s3c2410.h> #include <linux/platform_data/i2c-s3c2410.h>
#include <plat/samsung-time.h>
#include "common.h" #include "common.h"
...@@ -66,6 +67,7 @@ static void __init smdk6400_map_io(void) ...@@ -66,6 +67,7 @@ static void __init smdk6400_map_io(void)
s3c64xx_init_io(smdk6400_iodesc, ARRAY_SIZE(smdk6400_iodesc)); s3c64xx_init_io(smdk6400_iodesc, ARRAY_SIZE(smdk6400_iodesc));
s3c24xx_init_clocks(12000000); s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(smdk6400_uartcfgs, ARRAY_SIZE(smdk6400_uartcfgs)); s3c24xx_init_uarts(smdk6400_uartcfgs, ARRAY_SIZE(smdk6400_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static struct platform_device *smdk6400_devices[] __initdata = { static struct platform_device *smdk6400_devices[] __initdata = {
...@@ -92,6 +94,6 @@ MACHINE_START(SMDK6400, "SMDK6400") ...@@ -92,6 +94,6 @@ MACHINE_START(SMDK6400, "SMDK6400")
.map_io = smdk6400_map_io, .map_io = smdk6400_map_io,
.init_machine = smdk6400_machine_init, .init_machine = smdk6400_machine_init,
.init_late = s3c64xx_init_late, .init_late = s3c64xx_init_late,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c64xx_restart, .restart = s3c64xx_restart,
MACHINE_END MACHINE_END
...@@ -69,6 +69,7 @@ ...@@ -69,6 +69,7 @@
#include <linux/platform_data/touchscreen-s3c2410.h> #include <linux/platform_data/touchscreen-s3c2410.h>
#include <plat/keypad.h> #include <plat/keypad.h>
#include <plat/backlight.h> #include <plat/backlight.h>
#include <plat/samsung-time.h>
#include "common.h" #include "common.h"
#include "regs-modem.h" #include "regs-modem.h"
...@@ -634,6 +635,7 @@ static void __init smdk6410_map_io(void) ...@@ -634,6 +635,7 @@ static void __init smdk6410_map_io(void)
s3c64xx_init_io(smdk6410_iodesc, ARRAY_SIZE(smdk6410_iodesc)); s3c64xx_init_io(smdk6410_iodesc, ARRAY_SIZE(smdk6410_iodesc));
s3c24xx_init_clocks(12000000); s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(smdk6410_uartcfgs, ARRAY_SIZE(smdk6410_uartcfgs)); s3c24xx_init_uarts(smdk6410_uartcfgs, ARRAY_SIZE(smdk6410_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
/* set the LCD type */ /* set the LCD type */
...@@ -702,6 +704,6 @@ MACHINE_START(SMDK6410, "SMDK6410") ...@@ -702,6 +704,6 @@ MACHINE_START(SMDK6410, "SMDK6410")
.map_io = smdk6410_map_io, .map_io = smdk6410_map_io,
.init_machine = smdk6410_machine_init, .init_machine = smdk6410_machine_init,
.init_late = s3c64xx_init_late, .init_late = s3c64xx_init_late,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s3c64xx_restart, .restart = s3c64xx_restart,
MACHINE_END MACHINE_END
...@@ -9,16 +9,16 @@ if ARCH_S5P64X0 ...@@ -9,16 +9,16 @@ if ARCH_S5P64X0
config CPU_S5P6440 config CPU_S5P6440
bool bool
select S5P_HRT
select S5P_SLEEP if PM select S5P_SLEEP if PM
select SAMSUNG_DMADEV select SAMSUNG_DMADEV
select SAMSUNG_HRT
select SAMSUNG_WAKEMASK if PM select SAMSUNG_WAKEMASK if PM
help help
Enable S5P6440 CPU support Enable S5P6440 CPU support
config CPU_S5P6450 config CPU_S5P6450
bool bool
select S5P_HRT select SAMSUNG_HRT
select S5P_SLEEP if PM select S5P_SLEEP if PM
select SAMSUNG_DMADEV select SAMSUNG_DMADEV
select SAMSUNG_WAKEMASK if PM select SAMSUNG_WAKEMASK if PM
......
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
#include <plat/pll.h> #include <plat/pll.h>
#include <plat/adc.h> #include <plat/adc.h>
#include <linux/platform_data/touchscreen-s3c2410.h> #include <linux/platform_data/touchscreen-s3c2410.h>
#include <plat/s5p-time.h> #include <plat/samsung-time.h>
#include <plat/backlight.h> #include <plat/backlight.h>
#include <plat/fb.h> #include <plat/fb.h>
#include <plat/sdhci.h> #include <plat/sdhci.h>
...@@ -229,7 +229,7 @@ static void __init smdk6440_map_io(void) ...@@ -229,7 +229,7 @@ static void __init smdk6440_map_io(void)
s5p64x0_init_io(NULL, 0); s5p64x0_init_io(NULL, 0);
s3c24xx_init_clocks(12000000); s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(smdk6440_uartcfgs, ARRAY_SIZE(smdk6440_uartcfgs)); s3c24xx_init_uarts(smdk6440_uartcfgs, ARRAY_SIZE(smdk6440_uartcfgs));
s5p_set_timer_source(S5P_PWM3, S5P_PWM4); samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static void s5p6440_set_lcd_interface(void) static void s5p6440_set_lcd_interface(void)
...@@ -273,6 +273,6 @@ MACHINE_START(SMDK6440, "SMDK6440") ...@@ -273,6 +273,6 @@ MACHINE_START(SMDK6440, "SMDK6440")
.init_irq = s5p6440_init_irq, .init_irq = s5p6440_init_irq,
.map_io = smdk6440_map_io, .map_io = smdk6440_map_io,
.init_machine = smdk6440_machine_init, .init_machine = smdk6440_machine_init,
.init_time = s5p_timer_init, .init_time = samsung_timer_init,
.restart = s5p64x0_restart, .restart = s5p64x0_restart,
MACHINE_END MACHINE_END
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
#include <plat/pll.h> #include <plat/pll.h>
#include <plat/adc.h> #include <plat/adc.h>
#include <linux/platform_data/touchscreen-s3c2410.h> #include <linux/platform_data/touchscreen-s3c2410.h>
#include <plat/s5p-time.h> #include <plat/samsung-time.h>
#include <plat/backlight.h> #include <plat/backlight.h>
#include <plat/fb.h> #include <plat/fb.h>
#include <plat/sdhci.h> #include <plat/sdhci.h>
...@@ -248,7 +248,7 @@ static void __init smdk6450_map_io(void) ...@@ -248,7 +248,7 @@ static void __init smdk6450_map_io(void)
s5p64x0_init_io(NULL, 0); s5p64x0_init_io(NULL, 0);
s3c24xx_init_clocks(19200000); s3c24xx_init_clocks(19200000);
s3c24xx_init_uarts(smdk6450_uartcfgs, ARRAY_SIZE(smdk6450_uartcfgs)); s3c24xx_init_uarts(smdk6450_uartcfgs, ARRAY_SIZE(smdk6450_uartcfgs));
s5p_set_timer_source(S5P_PWM3, S5P_PWM4); samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static void s5p6450_set_lcd_interface(void) static void s5p6450_set_lcd_interface(void)
...@@ -292,6 +292,6 @@ MACHINE_START(SMDK6450, "SMDK6450") ...@@ -292,6 +292,6 @@ MACHINE_START(SMDK6450, "SMDK6450")
.init_irq = s5p6450_init_irq, .init_irq = s5p6450_init_irq,
.map_io = smdk6450_map_io, .map_io = smdk6450_map_io,
.init_machine = smdk6450_machine_init, .init_machine = smdk6450_machine_init,
.init_time = s5p_timer_init, .init_time = samsung_timer_init,
.restart = s5p64x0_restart, .restart = s5p64x0_restart,
MACHINE_END MACHINE_END
...@@ -11,6 +11,7 @@ config CPU_S5PC100 ...@@ -11,6 +11,7 @@ config CPU_S5PC100
bool bool
select S5P_EXT_INT select S5P_EXT_INT
select SAMSUNG_DMADEV select SAMSUNG_DMADEV
select SAMSUNG_HRT
help help
Enable S5PC100 CPU support Enable S5PC100 CPU support
......
...@@ -51,6 +51,7 @@ ...@@ -51,6 +51,7 @@
#include <linux/platform_data/touchscreen-s3c2410.h> #include <linux/platform_data/touchscreen-s3c2410.h>
#include <linux/platform_data/asoc-s3c.h> #include <linux/platform_data/asoc-s3c.h>
#include <plat/backlight.h> #include <plat/backlight.h>
#include <plat/samsung-time.h>
#include "common.h" #include "common.h"
...@@ -221,6 +222,7 @@ static void __init smdkc100_map_io(void) ...@@ -221,6 +222,7 @@ static void __init smdkc100_map_io(void)
s5pc100_init_io(NULL, 0); s5pc100_init_io(NULL, 0);
s3c24xx_init_clocks(12000000); s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(smdkc100_uartcfgs, ARRAY_SIZE(smdkc100_uartcfgs)); s3c24xx_init_uarts(smdkc100_uartcfgs, ARRAY_SIZE(smdkc100_uartcfgs));
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static void __init smdkc100_machine_init(void) static void __init smdkc100_machine_init(void)
...@@ -255,6 +257,6 @@ MACHINE_START(SMDKC100, "SMDKC100") ...@@ -255,6 +257,6 @@ MACHINE_START(SMDKC100, "SMDKC100")
.init_irq = s5pc100_init_irq, .init_irq = s5pc100_init_irq,
.map_io = smdkc100_map_io, .map_io = smdkc100_map_io,
.init_machine = smdkc100_machine_init, .init_machine = smdkc100_machine_init,
.init_time = s3c24xx_timer_init, .init_time = samsung_timer_init,
.restart = s5pc100_restart, .restart = s5pc100_restart,
MACHINE_END MACHINE_END
...@@ -12,10 +12,10 @@ if ARCH_S5PV210 ...@@ -12,10 +12,10 @@ if ARCH_S5PV210
config CPU_S5PV210 config CPU_S5PV210
bool bool
select S5P_EXT_INT select S5P_EXT_INT
select S5P_HRT
select S5P_PM if PM select S5P_PM if PM
select S5P_SLEEP if PM select S5P_SLEEP if PM
select SAMSUNG_DMADEV select SAMSUNG_DMADEV
select SAMSUNG_HRT
help help
Enable S5PV210 CPU support Enable S5PV210 CPU support
......
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
#include <plat/fb.h> #include <plat/fb.h>
#include <plat/fimc-core.h> #include <plat/fimc-core.h>
#include <plat/sdhci.h> #include <plat/sdhci.h>
#include <plat/s5p-time.h> #include <plat/samsung-time.h>
#include "common.h" #include "common.h"
...@@ -651,7 +651,7 @@ static void __init aquila_map_io(void) ...@@ -651,7 +651,7 @@ static void __init aquila_map_io(void)
s5pv210_init_io(NULL, 0); s5pv210_init_io(NULL, 0);
s3c24xx_init_clocks(24000000); s3c24xx_init_clocks(24000000);
s3c24xx_init_uarts(aquila_uartcfgs, ARRAY_SIZE(aquila_uartcfgs)); s3c24xx_init_uarts(aquila_uartcfgs, ARRAY_SIZE(aquila_uartcfgs));
s5p_set_timer_source(S5P_PWM3, S5P_PWM4); samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static void __init aquila_machine_init(void) static void __init aquila_machine_init(void)
...@@ -686,6 +686,6 @@ MACHINE_START(AQUILA, "Aquila") ...@@ -686,6 +686,6 @@ MACHINE_START(AQUILA, "Aquila")
.init_irq = s5pv210_init_irq, .init_irq = s5pv210_init_irq,
.map_io = aquila_map_io, .map_io = aquila_map_io,
.init_machine = aquila_machine_init, .init_machine = aquila_machine_init,
.init_time = s5p_timer_init, .init_time = samsung_timer_init,
.restart = s5pv210_restart, .restart = s5pv210_restart,
MACHINE_END MACHINE_END
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
#include <plat/keypad.h> #include <plat/keypad.h>
#include <plat/sdhci.h> #include <plat/sdhci.h>
#include <plat/clock.h> #include <plat/clock.h>
#include <plat/s5p-time.h> #include <plat/samsung-time.h>
#include <plat/mfc.h> #include <plat/mfc.h>
#include <plat/camport.h> #include <plat/camport.h>
...@@ -908,7 +908,7 @@ static void __init goni_map_io(void) ...@@ -908,7 +908,7 @@ static void __init goni_map_io(void)
s5pv210_init_io(NULL, 0); s5pv210_init_io(NULL, 0);
s3c24xx_init_clocks(clk_xusbxti.rate); s3c24xx_init_clocks(clk_xusbxti.rate);
s3c24xx_init_uarts(goni_uartcfgs, ARRAY_SIZE(goni_uartcfgs)); s3c24xx_init_uarts(goni_uartcfgs, ARRAY_SIZE(goni_uartcfgs));
s5p_set_timer_source(S5P_PWM3, S5P_PWM4); samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static void __init goni_reserve(void) static void __init goni_reserve(void)
...@@ -973,7 +973,7 @@ MACHINE_START(GONI, "GONI") ...@@ -973,7 +973,7 @@ MACHINE_START(GONI, "GONI")
.init_irq = s5pv210_init_irq, .init_irq = s5pv210_init_irq,
.map_io = goni_map_io, .map_io = goni_map_io,
.init_machine = goni_machine_init, .init_machine = goni_machine_init,
.init_time = s5p_timer_init, .init_time = samsung_timer_init,
.reserve = &goni_reserve, .reserve = &goni_reserve,
.restart = s5pv210_restart, .restart = s5pv210_restart,
MACHINE_END MACHINE_END
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
#include <linux/platform_data/ata-samsung_cf.h> #include <linux/platform_data/ata-samsung_cf.h>
#include <linux/platform_data/i2c-s3c2410.h> #include <linux/platform_data/i2c-s3c2410.h>
#include <plat/pm.h> #include <plat/pm.h>
#include <plat/s5p-time.h> #include <plat/samsung-time.h>
#include <plat/mfc.h> #include <plat/mfc.h>
#include "common.h" #include "common.h"
...@@ -120,7 +120,7 @@ static void __init smdkc110_map_io(void) ...@@ -120,7 +120,7 @@ static void __init smdkc110_map_io(void)
s5pv210_init_io(NULL, 0); s5pv210_init_io(NULL, 0);
s3c24xx_init_clocks(24000000); s3c24xx_init_clocks(24000000);
s3c24xx_init_uarts(smdkv210_uartcfgs, ARRAY_SIZE(smdkv210_uartcfgs)); s3c24xx_init_uarts(smdkv210_uartcfgs, ARRAY_SIZE(smdkv210_uartcfgs));
s5p_set_timer_source(S5P_PWM3, S5P_PWM4); samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static void __init smdkc110_reserve(void) static void __init smdkc110_reserve(void)
...@@ -153,7 +153,7 @@ MACHINE_START(SMDKC110, "SMDKC110") ...@@ -153,7 +153,7 @@ MACHINE_START(SMDKC110, "SMDKC110")
.init_irq = s5pv210_init_irq, .init_irq = s5pv210_init_irq,
.map_io = smdkc110_map_io, .map_io = smdkc110_map_io,
.init_machine = smdkc110_machine_init, .init_machine = smdkc110_machine_init,
.init_time = s5p_timer_init, .init_time = samsung_timer_init,
.restart = s5pv210_restart, .restart = s5pv210_restart,
.reserve = &smdkc110_reserve, .reserve = &smdkc110_reserve,
MACHINE_END MACHINE_END
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
#include <plat/keypad.h> #include <plat/keypad.h>
#include <plat/pm.h> #include <plat/pm.h>
#include <plat/fb.h> #include <plat/fb.h>
#include <plat/s5p-time.h> #include <plat/samsung-time.h>
#include <plat/backlight.h> #include <plat/backlight.h>
#include <plat/mfc.h> #include <plat/mfc.h>
#include <plat/clock.h> #include <plat/clock.h>
...@@ -285,7 +285,7 @@ static void __init smdkv210_map_io(void) ...@@ -285,7 +285,7 @@ static void __init smdkv210_map_io(void)
s5pv210_init_io(NULL, 0); s5pv210_init_io(NULL, 0);
s3c24xx_init_clocks(clk_xusbxti.rate); s3c24xx_init_clocks(clk_xusbxti.rate);
s3c24xx_init_uarts(smdkv210_uartcfgs, ARRAY_SIZE(smdkv210_uartcfgs)); s3c24xx_init_uarts(smdkv210_uartcfgs, ARRAY_SIZE(smdkv210_uartcfgs));
s5p_set_timer_source(S5P_PWM2, S5P_PWM4); samsung_set_timer_source(SAMSUNG_PWM2, SAMSUNG_PWM4);
} }
static void __init smdkv210_reserve(void) static void __init smdkv210_reserve(void)
...@@ -329,7 +329,7 @@ MACHINE_START(SMDKV210, "SMDKV210") ...@@ -329,7 +329,7 @@ MACHINE_START(SMDKV210, "SMDKV210")
.init_irq = s5pv210_init_irq, .init_irq = s5pv210_init_irq,
.map_io = smdkv210_map_io, .map_io = smdkv210_map_io,
.init_machine = smdkv210_machine_init, .init_machine = smdkv210_machine_init,
.init_time = s5p_timer_init, .init_time = samsung_timer_init,
.restart = s5pv210_restart, .restart = s5pv210_restart,
.reserve = &smdkv210_reserve, .reserve = &smdkv210_reserve,
MACHINE_END MACHINE_END
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <linux/platform_data/i2c-s3c2410.h> #include <linux/platform_data/i2c-s3c2410.h>
#include <plat/s5p-time.h> #include <plat/samsung-time.h>
#include "common.h" #include "common.h"
...@@ -106,7 +106,7 @@ static void __init torbreck_map_io(void) ...@@ -106,7 +106,7 @@ static void __init torbreck_map_io(void)
s5pv210_init_io(NULL, 0); s5pv210_init_io(NULL, 0);
s3c24xx_init_clocks(24000000); s3c24xx_init_clocks(24000000);
s3c24xx_init_uarts(torbreck_uartcfgs, ARRAY_SIZE(torbreck_uartcfgs)); s3c24xx_init_uarts(torbreck_uartcfgs, ARRAY_SIZE(torbreck_uartcfgs));
s5p_set_timer_source(S5P_PWM3, S5P_PWM4); samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
} }
static void __init torbreck_machine_init(void) static void __init torbreck_machine_init(void)
...@@ -130,6 +130,6 @@ MACHINE_START(TORBRECK, "TORBRECK") ...@@ -130,6 +130,6 @@ MACHINE_START(TORBRECK, "TORBRECK")
.init_irq = s5pv210_init_irq, .init_irq = s5pv210_init_irq,
.map_io = torbreck_map_io, .map_io = torbreck_map_io,
.init_machine = torbreck_machine_init, .init_machine = torbreck_machine_init,
.init_time = s5p_timer_init, .init_time = samsung_timer_init,
.restart = s5pv210_restart, .restart = s5pv210_restart,
MACHINE_END MACHINE_END
...@@ -70,7 +70,7 @@ config S3C_LOWLEVEL_UART_PORT ...@@ -70,7 +70,7 @@ config S3C_LOWLEVEL_UART_PORT
# timer options # timer options
config S5P_HRT config SAMSUNG_HRT
bool bool
select SAMSUNG_DEV_PWM select SAMSUNG_DEV_PWM
help help
......
...@@ -12,8 +12,7 @@ obj- := ...@@ -12,8 +12,7 @@ obj- :=
# Objects we always build independent of SoC choice # Objects we always build independent of SoC choice
obj-y += init.o cpu.o obj-y += init.o cpu.o
obj-$(CONFIG_ARCH_USES_GETTIMEOFFSET) += time.o obj-$(CONFIG_SAMSUNG_HRT) += samsung-time.o
obj-$(CONFIG_S5P_HRT) += s5p-time.o
obj-$(CONFIG_SAMSUNG_CLOCK) += clock.o obj-$(CONFIG_SAMSUNG_CLOCK) += clock.o
obj-$(CONFIG_SAMSUNG_CLOCK) += pwm-clock.o obj-$(CONFIG_SAMSUNG_CLOCK) += pwm-clock.o
......
...@@ -192,10 +192,6 @@ extern void s3c24xx_init_uartdevs(char *name, ...@@ -192,10 +192,6 @@ extern void s3c24xx_init_uartdevs(char *name,
struct s3c24xx_uart_resources *res, struct s3c24xx_uart_resources *res,
struct s3c2410_uartcfg *cfg, int no); struct s3c2410_uartcfg *cfg, int no);
/* timer for 2410/2440 */
extern void s3c24xx_timer_init(void);
extern struct syscore_ops s3c2410_pm_syscore_ops; extern struct syscore_ops s3c2410_pm_syscore_ops;
extern struct syscore_ops s3c2412_pm_syscore_ops; extern struct syscore_ops s3c2412_pm_syscore_ops;
extern struct syscore_ops s3c2416_pm_syscore_ops; extern struct syscore_ops s3c2416_pm_syscore_ops;
......
/* linux/arch/arm/plat-samsung/include/plat/irq.h
*
* Copyright (c) 2004-2005 Simtec Electronics
* Ben Dooks <ben@simtec.co.uk>
*
* Header file for S3C24XX CPU IRQ support
*
* 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/io.h>
#include <mach/hardware.h>
#include <mach/regs-irq.h>
#include <mach/regs-gpio.h>
#define irqdbf(x...)
#define irqdbf2(x...)
#define EXTINT_OFF (IRQ_EINT4 - 4)
/* these are exported for arch/arm/mach-* usage */
extern struct irq_chip s3c_irq_level_chip;
extern struct irq_chip s3c_irq_chip;
static inline void s3c_irqsub_mask(unsigned int irqno,
unsigned int parentbit,
int subcheck)
{
unsigned long mask;
unsigned long submask;
submask = __raw_readl(S3C2410_INTSUBMSK);
mask = __raw_readl(S3C2410_INTMSK);
submask |= (1UL << (irqno - IRQ_S3CUART_RX0));
/* check to see if we need to mask the parent IRQ */
if ((submask & subcheck) == subcheck)
__raw_writel(mask | parentbit, S3C2410_INTMSK);
/* write back masks */
__raw_writel(submask, S3C2410_INTSUBMSK);
}
static inline void s3c_irqsub_unmask(unsigned int irqno,
unsigned int parentbit)
{
unsigned long mask;
unsigned long submask;
submask = __raw_readl(S3C2410_INTSUBMSK);
mask = __raw_readl(S3C2410_INTMSK);
submask &= ~(1UL << (irqno - IRQ_S3CUART_RX0));
mask &= ~parentbit;
/* write back masks */
__raw_writel(submask, S3C2410_INTSUBMSK);
__raw_writel(mask, S3C2410_INTMSK);
}
static inline void s3c_irqsub_maskack(unsigned int irqno,
unsigned int parentmask,
unsigned int group)
{
unsigned int bit = 1UL << (irqno - IRQ_S3CUART_RX0);
s3c_irqsub_mask(irqno, parentmask, group);
__raw_writel(bit, S3C2410_SUBSRCPND);
/* only ack parent if we've got all the irqs (seems we must
* ack, all and hope that the irq system retriggers ok when
* the interrupt goes off again)
*/
if (1) {
__raw_writel(parentmask, S3C2410_SRCPND);
__raw_writel(parentmask, S3C2410_INTPND);
}
}
static inline void s3c_irqsub_ack(unsigned int irqno,
unsigned int parentmask,
unsigned int group)
{
unsigned int bit = 1UL << (irqno - IRQ_S3CUART_RX0);
__raw_writel(bit, S3C2410_SUBSRCPND);
/* only ack parent if we've got all the irqs (seems we must
* ack, all and hope that the irq system retriggers ok when
* the interrupt goes off again)
*/
if (1) {
__raw_writel(parentmask, S3C2410_SRCPND);
__raw_writel(parentmask, S3C2410_INTPND);
}
}
/* exported for use in arch/arm/mach-s3c2410 */
#ifdef CONFIG_PM
extern int s3c_irq_wake(struct irq_data *data, unsigned int state);
#else
#define s3c_irq_wake NULL
#endif
extern int s3c_irqext_type(struct irq_data *d, unsigned int type);
/* linux/arch/arm/plat-samsung/include/plat/s3c2410.h
*
* Copyright (c) 2004 Simtec Electronics
* Ben Dooks <ben@simtec.co.uk>
*
* Header file for s3c2410 machine directory
*
* 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.
*
*/
#ifdef CONFIG_CPU_S3C2410
extern int s3c2410_init(void);
extern int s3c2410a_init(void);
extern void s3c2410_map_io(void);
extern void s3c2410_init_uarts(struct s3c2410_uartcfg *cfg, int no);
extern void s3c2410_init_clocks(int xtal);
#else
#define s3c2410_init_clocks NULL
#define s3c2410_init_uarts NULL
#define s3c2410_map_io NULL
#define s3c2410_init NULL
#define s3c2410a_init NULL
#endif
/* linux/arch/arm/plat-samsung/include/plat/s3c2412.h
*
* Copyright (c) 2006 Simtec Electronics
* Ben Dooks <ben@simtec.co.uk>
*
* Header file for s3c2412 cpu support
*
* 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.
*/
#ifdef CONFIG_CPU_S3C2412
extern int s3c2412_init(void);
extern void s3c2412_map_io(void);
extern void s3c2412_init_uarts(struct s3c2410_uartcfg *cfg, int no);
extern void s3c2412_init_clocks(int xtal);
extern int s3c2412_baseclk_add(void);
extern void s3c2412_restart(char mode, const char *cmd);
#else
#define s3c2412_init_clocks NULL
#define s3c2412_init_uarts NULL
#define s3c2412_map_io NULL
#define s3c2412_init NULL
#define s3c2412_restart NULL
#endif
/* linux/arch/arm/plat-samsung/include/plat/s3c2416.h
*
* Copyright (c) 2009 Yauhen Kharuzhy <jekhor@gmail.com>
*
* Header file for s3c2416 cpu support
*
* 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.
*/
#ifdef CONFIG_CPU_S3C2416
struct s3c2410_uartcfg;
extern int s3c2416_init(void);
extern void s3c2416_map_io(void);
extern void s3c2416_init_uarts(struct s3c2410_uartcfg *cfg, int no);
extern void s3c2416_init_clocks(int xtal);
extern int s3c2416_baseclk_add(void);
extern void s3c2416_restart(char mode, const char *cmd);
extern void s3c2416_init_irq(void);
extern struct syscore_ops s3c2416_irq_syscore_ops;
#else
#define s3c2416_init_clocks NULL
#define s3c2416_init_uarts NULL
#define s3c2416_map_io NULL
#define s3c2416_init NULL
#define s3c2416_restart NULL
#endif
/* linux/arch/arm/plat-samsung/include/plat/s3c2443.h
*
* Copyright (c) 2004-2005 Simtec Electronics
* Ben Dooks <ben@simtec.co.uk>
*
* Header file for s3c2443 cpu support
*
* 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.
*/
#ifdef CONFIG_CPU_S3C2443
struct s3c2410_uartcfg;
extern int s3c2443_init(void);
extern void s3c2443_map_io(void);
extern void s3c2443_init_uarts(struct s3c2410_uartcfg *cfg, int no);
extern void s3c2443_init_clocks(int xtal);
extern int s3c2443_baseclk_add(void);
extern void s3c2443_restart(char mode, const char *cmd);
extern void s3c2443_init_irq(void);
#else
#define s3c2443_init_clocks NULL
#define s3c2443_init_uarts NULL
#define s3c2443_map_io NULL
#define s3c2443_init NULL
#define s3c2443_restart NULL
#endif
/* linux/arch/arm/plat-samsung/include/plat/s3c244x.h
*
* Copyright (c) 2004-2005 Simtec Electronics
* Ben Dooks <ben@simtec.co.uk>
*
* Header file for S3C2440 and S3C2442 cpu support
*
* 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.
*/
#if defined(CONFIG_CPU_S3C2440) || defined(CONFIG_CPU_S3C2442)
extern void s3c244x_map_io(void);
extern void s3c244x_init_uarts(struct s3c2410_uartcfg *cfg, int no);
extern void s3c244x_init_clocks(int xtal);
#else
#define s3c244x_init_clocks NULL
#define s3c244x_init_uarts NULL
#endif
#ifdef CONFIG_CPU_S3C2440
extern int s3c2440_init(void);
extern void s3c2440_map_io(void);
#else
#define s3c2440_init NULL
#define s3c2440_map_io NULL
#endif
#ifdef CONFIG_CPU_S3C2442
extern int s3c2442_init(void);
extern void s3c2442_map_io(void);
#else
#define s3c2442_init NULL
#define s3c2442_map_io NULL
#endif
/* linux/arch/arm/plat-samsung/include/plat/s5p-time.h /* linux/arch/arm/plat-samsung/include/plat/samsung-time.h
* *
* Copyright 2011 Samsung Electronics Co., Ltd. * Copyright 2011 Samsung Electronics Co., Ltd.
* http://www.samsung.com/ * http://www.samsung.com/
* *
* Header file for s5p time support * Header file for samsung s3c and s5p time support
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation. * published by the Free Software Foundation.
*/ */
#ifndef __ASM_PLAT_S5P_TIME_H #ifndef __ASM_PLAT_SAMSUNG_TIME_H
#define __ASM_PLAT_S5P_TIME_H __FILE__ #define __ASM_PLAT_SAMSUNG_TIME_H __FILE__
/* S5P HR-Timer Clock mode */ /* SAMSUNG HR-Timer Clock mode */
enum s5p_timer_mode { enum samsung_timer_mode {
S5P_PWM0, SAMSUNG_PWM0,
S5P_PWM1, SAMSUNG_PWM1,
S5P_PWM2, SAMSUNG_PWM2,
S5P_PWM3, SAMSUNG_PWM3,
S5P_PWM4, SAMSUNG_PWM4,
}; };
struct s5p_timer_source { struct samsung_timer_source {
unsigned int event_id; unsigned int event_id;
unsigned int source_id; unsigned int source_id;
}; };
/* Be able to sleep for atleast 4 seconds (usually more) */ /* Be able to sleep for atleast 4 seconds (usually more) */
#define S5PTIMER_MIN_RANGE 4 #define SAMSUNG_TIMER_MIN_RANGE 4
#if defined(CONFIG_ARCH_S3C24XX) || defined(CONFIG_ARCH_S5PC100)
#define TCNT_MAX 0xffff
#define TSCALER_DIV 25
#define TDIV 50
#define TSIZE 16
#else
#define TCNT_MAX 0xffffffff #define TCNT_MAX 0xffffffff
#define TSCALER_DIV 2
#define TDIV 2
#define TSIZE 32
#endif
#define NON_PERIODIC 0 #define NON_PERIODIC 0
#define PERIODIC 1 #define PERIODIC 1
extern void __init s5p_set_timer_source(enum s5p_timer_mode event, extern void __init samsung_set_timer_source(enum samsung_timer_mode event,
enum s5p_timer_mode source); enum samsung_timer_mode source);
extern void s5p_timer_init(void);
#endif /* __ASM_PLAT_S5P_TIME_H */ extern void __init samsung_timer_init(void);
#endif /* __ASM_PLAT_SAMSUNG_TIME_H */
/* linux/arch/arm/plat-samsung/time.c
*
* Copyright (C) 2003-2005 Simtec Electronics
* Ben Dooks, <ben@simtec.co.uk>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/err.h>
#include <linux/clk.h>
#include <linux/io.h>
#include <linux/platform_device.h>
#include <linux/syscore_ops.h>
#include <asm/mach-types.h>
#include <asm/irq.h>
#include <mach/map.h>
#include <plat/regs-timer.h>
#include <mach/regs-irq.h>
#include <asm/mach/time.h>
#include <mach/tick.h>
#include <plat/clock.h>
#include <plat/cpu.h>
static unsigned long timer_startval;
static unsigned long timer_usec_ticks;
#ifndef TICK_MAX
#define TICK_MAX (0xffff)
#endif
#define TIMER_USEC_SHIFT 16
/* we use the shifted arithmetic to work out the ratio of timer ticks
* to usecs, as often the peripheral clock is not a nice even multiple
* of 1MHz.
*
* shift of 14 and 15 are too low for the 12MHz, 16 seems to be ok
* for the current HZ value of 200 without producing overflows.
*
* Original patch by Dimitry Andric, updated by Ben Dooks
*/
/* timer_mask_usec_ticks
*
* given a clock and divisor, make the value to pass into timer_ticks_to_usec
* to scale the ticks into usecs
*/
static inline unsigned long
timer_mask_usec_ticks(unsigned long scaler, unsigned long pclk)
{
unsigned long den = pclk / 1000;
return ((1000 << TIMER_USEC_SHIFT) * scaler + (den >> 1)) / den;
}
/* timer_ticks_to_usec
*
* convert timer ticks to usec.
*/
static inline unsigned long timer_ticks_to_usec(unsigned long ticks)
{
unsigned long res;
res = ticks * timer_usec_ticks;
res += 1 << (TIMER_USEC_SHIFT - 4); /* round up slightly */
return res >> TIMER_USEC_SHIFT;
}
/***
* Returns microsecond since last clock interrupt. Note that interrupts
* will have been disabled by do_gettimeoffset()
* IRQs are disabled before entering here from do_gettimeofday()
*/
static u32 s3c2410_gettimeoffset(void)
{
unsigned long tdone;
unsigned long tval;
/* work out how many ticks have gone since last timer interrupt */
tval = __raw_readl(S3C2410_TCNTO(4));
tdone = timer_startval - tval;
/* check to see if there is an interrupt pending */
if (s3c24xx_ostimer_pending()) {
/* re-read the timer, and try and fix up for the missed
* interrupt. Note, the interrupt may go off before the
* timer has re-loaded from wrapping.
*/
tval = __raw_readl(S3C2410_TCNTO(4));
tdone = timer_startval - tval;
if (tval != 0)
tdone += timer_startval;
}
return timer_ticks_to_usec(tdone) * 1000;
}
/*
* IRQ handler for the timer
*/
static irqreturn_t
s3c2410_timer_interrupt(int irq, void *dev_id)
{
timer_tick();
return IRQ_HANDLED;
}
static struct irqaction s3c2410_timer_irq = {
.name = "S3C2410 Timer Tick",
.flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
.handler = s3c2410_timer_interrupt,
};
#define use_tclk1_12() ( \
machine_is_bast() || \
machine_is_vr1000() || \
machine_is_anubis() || \
machine_is_osiris())
static struct clk *tin;
static struct clk *tdiv;
static struct clk *timerclk;
/*
* Set up timer interrupt, and return the current time in seconds.
*
* Currently we only use timer4, as it is the only timer which has no
* other function that can be exploited externally
*/
static void s3c2410_timer_setup (void)
{
unsigned long tcon;
unsigned long tcnt;
unsigned long tcfg1;
unsigned long tcfg0;
tcnt = TICK_MAX; /* default value for tcnt */
/* configure the system for whichever machine is in use */
if (use_tclk1_12()) {
/* timer is at 12MHz, scaler is 1 */
timer_usec_ticks = timer_mask_usec_ticks(1, 12000000);
tcnt = 12000000 / HZ;
tcfg1 = __raw_readl(S3C2410_TCFG1);
tcfg1 &= ~S3C2410_TCFG1_MUX4_MASK;
tcfg1 |= S3C2410_TCFG1_MUX4_TCLK1;
__raw_writel(tcfg1, S3C2410_TCFG1);
} else {
unsigned long pclk;
struct clk *tscaler;
/* for the h1940 (and others), we use the pclk from the core
* to generate the timer values. since values around 50 to
* 70MHz are not values we can directly generate the timer
* value from, we need to pre-scale and divide before using it.
*
* for instance, using 50.7MHz and dividing by 6 gives 8.45MHz
* (8.45 ticks per usec)
*/
pclk = clk_get_rate(timerclk);
/* configure clock tick */
timer_usec_ticks = timer_mask_usec_ticks(6, pclk);
tscaler = clk_get_parent(tdiv);
clk_set_rate(tscaler, pclk / 3);
clk_set_rate(tdiv, pclk / 6);
clk_set_parent(tin, tdiv);
tcnt = clk_get_rate(tin) / HZ;
}
tcon = __raw_readl(S3C2410_TCON);
tcfg0 = __raw_readl(S3C2410_TCFG0);
tcfg1 = __raw_readl(S3C2410_TCFG1);
/* timers reload after counting zero, so reduce the count by 1 */
tcnt--;
printk(KERN_DEBUG "timer tcon=%08lx, tcnt %04lx, tcfg %08lx,%08lx, usec %08lx\n",
tcon, tcnt, tcfg0, tcfg1, timer_usec_ticks);
/* check to see if timer is within 16bit range... */
if (tcnt > TICK_MAX) {
panic("setup_timer: HZ is too small, cannot configure timer!");
return;
}
__raw_writel(tcfg1, S3C2410_TCFG1);
__raw_writel(tcfg0, S3C2410_TCFG0);
timer_startval = tcnt;
__raw_writel(tcnt, S3C2410_TCNTB(4));
/* ensure timer is stopped... */
tcon &= ~(7<<20);
tcon |= S3C2410_TCON_T4RELOAD;
tcon |= S3C2410_TCON_T4MANUALUPD;
__raw_writel(tcon, S3C2410_TCON);
__raw_writel(tcnt, S3C2410_TCNTB(4));
__raw_writel(tcnt, S3C2410_TCMPB(4));
/* start the timer running */
tcon |= S3C2410_TCON_T4START;
tcon &= ~S3C2410_TCON_T4MANUALUPD;
__raw_writel(tcon, S3C2410_TCON);
}
static void __init s3c2410_timer_resources(void)
{
struct platform_device tmpdev;
tmpdev.dev.bus = &platform_bus_type;
tmpdev.id = 4;
timerclk = clk_get(NULL, "timers");
if (IS_ERR(timerclk))
panic("failed to get clock for system timer");
clk_enable(timerclk);
if (!use_tclk1_12()) {
tmpdev.id = 4;
tmpdev.dev.init_name = "s3c24xx-pwm.4";
tin = clk_get(&tmpdev.dev, "pwm-tin");
if (IS_ERR(tin))
panic("failed to get pwm-tin clock for system timer");
tdiv = clk_get(&tmpdev.dev, "pwm-tdiv");
if (IS_ERR(tdiv))
panic("failed to get pwm-tdiv clock for system timer");
}
clk_enable(tin);
}
static struct syscore_ops s3c24xx_syscore_ops = {
.resume = s3c2410_timer_setup,
};
void __init s3c24xx_timer_init(void)
{
arch_gettimeoffset = s3c2410_gettimeoffset;
s3c2410_timer_resources();
s3c2410_timer_setup();
setup_irq(IRQ_TIMER4, &s3c2410_timer_irq);
register_syscore_ops(&s3c24xx_syscore_ops);
}
...@@ -25,14 +25,93 @@ ...@@ -25,14 +25,93 @@
#include <mach/dma.h> #include <mach/dma.h>
#include <mach/regs-sdi.h>
#include <linux/platform_data/mmc-s3cmci.h> #include <linux/platform_data/mmc-s3cmci.h>
#include "s3cmci.h" #include "s3cmci.h"
#define DRIVER_NAME "s3c-mci" #define DRIVER_NAME "s3c-mci"
#define S3C2410_SDICON (0x00)
#define S3C2410_SDIPRE (0x04)
#define S3C2410_SDICMDARG (0x08)
#define S3C2410_SDICMDCON (0x0C)
#define S3C2410_SDICMDSTAT (0x10)
#define S3C2410_SDIRSP0 (0x14)
#define S3C2410_SDIRSP1 (0x18)
#define S3C2410_SDIRSP2 (0x1C)
#define S3C2410_SDIRSP3 (0x20)
#define S3C2410_SDITIMER (0x24)
#define S3C2410_SDIBSIZE (0x28)
#define S3C2410_SDIDCON (0x2C)
#define S3C2410_SDIDCNT (0x30)
#define S3C2410_SDIDSTA (0x34)
#define S3C2410_SDIFSTA (0x38)
#define S3C2410_SDIDATA (0x3C)
#define S3C2410_SDIIMSK (0x40)
#define S3C2440_SDIDATA (0x40)
#define S3C2440_SDIIMSK (0x3C)
#define S3C2440_SDICON_SDRESET (1 << 8)
#define S3C2410_SDICON_SDIOIRQ (1 << 3)
#define S3C2410_SDICON_FIFORESET (1 << 1)
#define S3C2410_SDICON_CLOCKTYPE (1 << 0)
#define S3C2410_SDICMDCON_LONGRSP (1 << 10)
#define S3C2410_SDICMDCON_WAITRSP (1 << 9)
#define S3C2410_SDICMDCON_CMDSTART (1 << 8)
#define S3C2410_SDICMDCON_SENDERHOST (1 << 6)
#define S3C2410_SDICMDCON_INDEX (0x3f)
#define S3C2410_SDICMDSTAT_CRCFAIL (1 << 12)
#define S3C2410_SDICMDSTAT_CMDSENT (1 << 11)
#define S3C2410_SDICMDSTAT_CMDTIMEOUT (1 << 10)
#define S3C2410_SDICMDSTAT_RSPFIN (1 << 9)
#define S3C2440_SDIDCON_DS_WORD (2 << 22)
#define S3C2410_SDIDCON_TXAFTERRESP (1 << 20)
#define S3C2410_SDIDCON_RXAFTERCMD (1 << 19)
#define S3C2410_SDIDCON_BLOCKMODE (1 << 17)
#define S3C2410_SDIDCON_WIDEBUS (1 << 16)
#define S3C2410_SDIDCON_DMAEN (1 << 15)
#define S3C2410_SDIDCON_STOP (1 << 14)
#define S3C2440_SDIDCON_DATSTART (1 << 14)
#define S3C2410_SDIDCON_XFER_RXSTART (2 << 12)
#define S3C2410_SDIDCON_XFER_TXSTART (3 << 12)
#define S3C2410_SDIDCON_BLKNUM_MASK (0xFFF)
#define S3C2410_SDIDSTA_SDIOIRQDETECT (1 << 9)
#define S3C2410_SDIDSTA_FIFOFAIL (1 << 8)
#define S3C2410_SDIDSTA_CRCFAIL (1 << 7)
#define S3C2410_SDIDSTA_RXCRCFAIL (1 << 6)
#define S3C2410_SDIDSTA_DATATIMEOUT (1 << 5)
#define S3C2410_SDIDSTA_XFERFINISH (1 << 4)
#define S3C2410_SDIDSTA_TXDATAON (1 << 1)
#define S3C2410_SDIDSTA_RXDATAON (1 << 0)
#define S3C2440_SDIFSTA_FIFORESET (1 << 16)
#define S3C2440_SDIFSTA_FIFOFAIL (3 << 14)
#define S3C2410_SDIFSTA_TFDET (1 << 13)
#define S3C2410_SDIFSTA_RFDET (1 << 12)
#define S3C2410_SDIFSTA_COUNTMASK (0x7f)
#define S3C2410_SDIIMSK_RESPONSECRC (1 << 17)
#define S3C2410_SDIIMSK_CMDSENT (1 << 16)
#define S3C2410_SDIIMSK_CMDTIMEOUT (1 << 15)
#define S3C2410_SDIIMSK_RESPONSEND (1 << 14)
#define S3C2410_SDIIMSK_SDIOIRQ (1 << 12)
#define S3C2410_SDIIMSK_FIFOFAIL (1 << 11)
#define S3C2410_SDIIMSK_CRCSTATUS (1 << 10)
#define S3C2410_SDIIMSK_DATACRC (1 << 9)
#define S3C2410_SDIIMSK_DATATIMEOUT (1 << 8)
#define S3C2410_SDIIMSK_DATAFINISH (1 << 7)
#define S3C2410_SDIIMSK_TXFIFOHALF (1 << 4)
#define S3C2410_SDIIMSK_RXFIFOLAST (1 << 2)
#define S3C2410_SDIIMSK_RXFIFOHALF (1 << 0)
enum dbg_channels { enum dbg_channels {
dbg_err = (1 << 0), dbg_err = (1 << 0),
dbg_debug = (1 << 1), dbg_debug = (1 << 1),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment