mirror of https://gitee.com/openkylin/linux.git
Merge branch 'next/timer-samsung' into next/clk-exynos
This commit is contained in:
commit
b85b64cc22
|
@ -770,8 +770,10 @@ config ARCH_SA1100
|
|||
config ARCH_S3C24XX
|
||||
bool "Samsung S3C24XX SoCs"
|
||||
select ARCH_HAS_CPUFREQ
|
||||
select ARCH_USES_GETTIMEOFFSET
|
||||
select CLKDEV_LOOKUP
|
||||
select CLKSRC_MMIO
|
||||
select GENERIC_CLOCKEVENTS
|
||||
select GENERIC_GPIO
|
||||
select HAVE_CLK
|
||||
select HAVE_S3C2410_I2C if I2C
|
||||
select HAVE_S3C2410_WATCHDOG if WATCHDOG
|
||||
|
@ -788,10 +790,11 @@ config ARCH_S3C64XX
|
|||
bool "Samsung S3C64XX"
|
||||
select ARCH_HAS_CPUFREQ
|
||||
select ARCH_REQUIRE_GPIOLIB
|
||||
select ARCH_USES_GETTIMEOFFSET
|
||||
select ARM_VIC
|
||||
select CLKDEV_LOOKUP
|
||||
select CLKSRC_MMIO
|
||||
select CPU_V6
|
||||
select GENERIC_CLOCKEVENTS
|
||||
select HAVE_CLK
|
||||
select HAVE_S3C2410_I2C if I2C
|
||||
select HAVE_S3C2410_WATCHDOG if WATCHDOG
|
||||
|
@ -825,9 +828,11 @@ config ARCH_S5P64X0
|
|||
|
||||
config ARCH_S5PC100
|
||||
bool "Samsung S5PC100"
|
||||
select ARCH_USES_GETTIMEOFFSET
|
||||
select CLKDEV_LOOKUP
|
||||
select CLKSRC_MMIO
|
||||
select CPU_V7
|
||||
select GENERIC_CLOCKEVENTS
|
||||
select GENERIC_GPIO
|
||||
select HAVE_CLK
|
||||
select HAVE_S3C2410_I2C if I2C
|
||||
select HAVE_S3C2410_WATCHDOG if WATCHDOG
|
||||
|
|
|
@ -277,8 +277,8 @@ config MACH_UNIVERSAL_C210
|
|||
select S5P_DEV_ONENAND
|
||||
select S5P_DEV_TV
|
||||
select S5P_GPIO_INT
|
||||
select S5P_HRT
|
||||
select S5P_SETUP_MIPIPHY
|
||||
select SAMSUNG_HRT
|
||||
help
|
||||
Machine support for Samsung Mobile Universal S5PC210 Reference
|
||||
Board.
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
#include <plat/mfc.h>
|
||||
#include <plat/sdhci.h>
|
||||
#include <plat/fimc-core.h>
|
||||
#include <plat/s5p-time.h>
|
||||
#include <plat/samsung-time.h>
|
||||
#include <plat/camport.h>
|
||||
|
||||
#include <mach/map.h>
|
||||
|
@ -1094,7 +1094,7 @@ static void __init universal_map_io(void)
|
|||
exynos_init_io(NULL, 0);
|
||||
s3c24xx_init_clocks(clk_xusbxti.rate);
|
||||
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)
|
||||
|
@ -1152,7 +1152,7 @@ MACHINE_START(UNIVERSAL_C210, "UNIVERSAL_C210")
|
|||
.map_io = universal_map_io,
|
||||
.init_machine = universal_machine_init,
|
||||
.init_late = exynos_init_late,
|
||||
.init_time = s5p_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.reserve = &universal_reserve,
|
||||
.restart = exynos4_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -30,6 +30,7 @@ config CPU_S3C2410
|
|||
select S3C2410_CLOCK
|
||||
select S3C2410_CPUFREQ if CPU_FREQ_S3C24XX
|
||||
select S3C2410_PM if PM
|
||||
select SAMSUNG_HRT
|
||||
help
|
||||
Support for S3C2410 and S3C2410A family from the S3C24XX line
|
||||
of Samsung Mobile CPUs.
|
||||
|
@ -41,6 +42,7 @@ config CPU_S3C2412
|
|||
select CPU_LLSERIAL_S3C2440
|
||||
select S3C2412_DMA if S3C24XX_DMA
|
||||
select S3C2412_PM if PM
|
||||
select SAMSUNG_HRT
|
||||
help
|
||||
Support for the S3C2412 and S3C2413 SoCs from the S3C24XX line
|
||||
|
||||
|
@ -53,6 +55,7 @@ config CPU_S3C2416
|
|||
select S3C2443_COMMON
|
||||
select S3C2443_DMA if S3C24XX_DMA
|
||||
select SAMSUNG_CLKSRC
|
||||
select SAMSUNG_HRT
|
||||
help
|
||||
Support for the S3C2416 SoC from the S3C24XX line
|
||||
|
||||
|
@ -63,6 +66,7 @@ config CPU_S3C2440
|
|||
select S3C2410_CLOCK
|
||||
select S3C2410_PM if PM
|
||||
select S3C2440_DMA if S3C24XX_DMA
|
||||
select SAMSUNG_HRT
|
||||
help
|
||||
Support for S3C2440 Samsung Mobile CPU based systems.
|
||||
|
||||
|
@ -72,6 +76,7 @@ config CPU_S3C2442
|
|||
select CPU_LLSERIAL_S3C2440
|
||||
select S3C2410_CLOCK
|
||||
select S3C2410_PM if PM
|
||||
select SAMSUNG_HRT
|
||||
help
|
||||
Support for S3C2442 Samsung Mobile CPU based systems.
|
||||
|
||||
|
@ -87,6 +92,7 @@ config CPU_S3C2443
|
|||
select S3C2443_COMMON
|
||||
select S3C2443_DMA if S3C24XX_DMA
|
||||
select SAMSUNG_CLKSRC
|
||||
select SAMSUNG_HRT
|
||||
help
|
||||
Support for the S3C2443 SoC from the S3C24XX line
|
||||
|
||||
|
|
|
@ -34,8 +34,6 @@
|
|||
#include <mach/hardware.h>
|
||||
#include <mach/regs-irq.h>
|
||||
|
||||
#include <plat/irq.h>
|
||||
|
||||
#include "bast.h"
|
||||
|
||||
#define irqdbf(x...)
|
||||
|
|
|
@ -40,7 +40,6 @@
|
|||
#include <mach/regs-clock.h>
|
||||
#include <mach/regs-gpio.h>
|
||||
|
||||
#include <plat/s3c2410.h>
|
||||
#include <plat/clock.h>
|
||||
#include <plat/cpu.h>
|
||||
|
||||
|
|
|
@ -41,7 +41,6 @@
|
|||
#include <mach/regs-clock.h>
|
||||
#include <mach/regs-gpio.h>
|
||||
|
||||
#include <plat/s3c2412.h>
|
||||
#include <plat/clock.h>
|
||||
#include <plat/cpu.h>
|
||||
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
#include <linux/init.h>
|
||||
#include <linux/clk.h>
|
||||
|
||||
#include <plat/s3c2416.h>
|
||||
#include <plat/clock.h>
|
||||
#include <plat/clock-clksrc.h>
|
||||
#include <plat/cpu.h>
|
||||
|
|
|
@ -41,7 +41,6 @@
|
|||
|
||||
#include <plat/cpu-freq.h>
|
||||
|
||||
#include <plat/s3c2443.h>
|
||||
#include <plat/clock.h>
|
||||
#include <plat/clock-clksrc.h>
|
||||
#include <plat/cpu.h>
|
||||
|
|
|
@ -41,11 +41,12 @@
|
|||
|
||||
#include <linux/platform_data/mtd-nand-s3c2410.h>
|
||||
|
||||
#include <plat/common-smdk.h>
|
||||
#include <plat/gpio-cfg.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/pm.h>
|
||||
|
||||
#include "common-smdk.h"
|
||||
|
||||
/* LED devices */
|
||||
|
||||
static struct s3c24xx_led_platdata smdk_pdata_led4 = {
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
/* linux/arch/arm/plat-samsung/include/plat/common-smdk.h
|
||||
*
|
||||
/*
|
||||
* Copyright (c) 2006 Simtec Electronics
|
||||
* Ben Dooks <ben@simtec.co.uk>
|
||||
*
|
|
@ -47,14 +47,11 @@
|
|||
#include <plat/cpu.h>
|
||||
#include <plat/devs.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/pll.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
/* table of supported CPUs */
|
||||
|
||||
static const char name_s3c2410[] = "S3C2410";
|
||||
|
|
|
@ -12,8 +12,94 @@
|
|||
#ifndef __ARCH_ARM_MACH_S3C24XX_COMMON_H
|
||||
#define __ARCH_ARM_MACH_S3C24XX_COMMON_H __FILE__
|
||||
|
||||
void s3c2410_restart(char mode, const char *cmd);
|
||||
void s3c244x_restart(char mode, const char *cmd);
|
||||
struct s3c2410_uartcfg;
|
||||
|
||||
#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;
|
||||
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
#include <plat/regs-ac97.h>
|
||||
#include <plat/regs-dma.h>
|
||||
#include <mach/regs-lcd.h>
|
||||
#include <mach/regs-sdi.h>
|
||||
#include <plat/regs-iis.h>
|
||||
#include <plat/regs-spi.h>
|
||||
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
#include <plat/regs-ac97.h>
|
||||
#include <plat/regs-dma.h>
|
||||
#include <mach/regs-lcd.h>
|
||||
#include <mach/regs-sdi.h>
|
||||
#include <plat/regs-iis.h>
|
||||
#include <plat/regs-spi.h>
|
||||
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
#include <plat/regs-ac97.h>
|
||||
#include <plat/regs-dma.h>
|
||||
#include <mach/regs-lcd.h>
|
||||
#include <mach/regs-sdi.h>
|
||||
#include <plat/regs-iis.h>
|
||||
#include <plat/regs-spi.h>
|
||||
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
#include <plat/regs-ac97.h>
|
||||
#include <plat/regs-dma.h>
|
||||
#include <mach/regs-lcd.h>
|
||||
#include <mach/regs-sdi.h>
|
||||
#include <plat/regs-iis.h>
|
||||
#include <plat/regs-spi.h>
|
||||
|
||||
|
|
|
@ -1,127 +0,0 @@
|
|||
/* 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 @@
|
|||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/syscore_ops.h>
|
||||
#include <linux/io.h>
|
||||
|
||||
#include <plat/cpu.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>
|
||||
|
||||
|
|
|
@ -34,7 +34,6 @@
|
|||
#include <plat/cpu.h>
|
||||
#include <plat/regs-irqtype.h>
|
||||
#include <plat/pm.h>
|
||||
#include <plat/irq.h>
|
||||
|
||||
#define S3C_IRQTYPE_NONE 0
|
||||
#define S3C_IRQTYPE_EINT 1
|
||||
|
@ -175,8 +174,7 @@ static int s3c_irqext_type_set(void __iomem *gpcon_reg,
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* FIXME: make static when it's out of plat-samsung/irq.h */
|
||||
int s3c_irqext_type(struct irq_data *data, unsigned int type)
|
||||
static int s3c_irqext_type(struct irq_data *data, unsigned int type)
|
||||
{
|
||||
void __iomem *extint_reg;
|
||||
void __iomem *gpcon_reg;
|
||||
|
@ -224,7 +222,7 @@ static int s3c_irqext0_type(struct irq_data *data, unsigned int type)
|
|||
extint_offset, type);
|
||||
}
|
||||
|
||||
struct irq_chip s3c_irq_chip = {
|
||||
static struct irq_chip s3c_irq_chip = {
|
||||
.name = "s3c",
|
||||
.irq_ack = s3c_irq_ack,
|
||||
.irq_mask = s3c_irq_mask,
|
||||
|
@ -232,7 +230,7 @@ struct irq_chip s3c_irq_chip = {
|
|||
.irq_set_wake = s3c_irq_wake
|
||||
};
|
||||
|
||||
struct irq_chip s3c_irq_level_chip = {
|
||||
static struct irq_chip s3c_irq_level_chip = {
|
||||
.name = "s3c-level",
|
||||
.irq_mask = s3c_irq_mask,
|
||||
.irq_unmask = s3c_irq_unmask,
|
||||
|
|
|
@ -63,6 +63,8 @@
|
|||
#include <linux/mtd/map.h>
|
||||
#include <linux/mtd/physmap.h>
|
||||
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
static struct resource amlm5900_nor_resource =
|
||||
|
@ -160,6 +162,7 @@ static void __init amlm5900_map_io(void)
|
|||
s3c24xx_init_io(amlm5900_iodesc, ARRAY_SIZE(amlm5900_iodesc));
|
||||
s3c24xx_init_clocks(0);
|
||||
s3c24xx_init_uarts(amlm5900_uartcfgs, ARRAY_SIZE(amlm5900_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_FB_S3C2410
|
||||
|
@ -237,6 +240,6 @@ MACHINE_START(AML_M5900, "AML_M5900")
|
|||
.map_io = amlm5900_map_io,
|
||||
.init_irq = s3c24xx_init_irq,
|
||||
.init_machine = amlm5900_init,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c2410_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -49,6 +49,7 @@
|
|||
#include <plat/devs.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <linux/platform_data/asoc-s3c24xx_simtec.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "anubis.h"
|
||||
#include "common.h"
|
||||
|
@ -410,6 +411,7 @@ static void __init anubis_map_io(void)
|
|||
s3c24xx_init_io(anubis_iodesc, ARRAY_SIZE(anubis_iodesc));
|
||||
s3c24xx_init_clocks(0);
|
||||
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 */
|
||||
|
||||
|
@ -444,6 +446,6 @@ MACHINE_START(ANUBIS, "Simtec-Anubis")
|
|||
.map_io = anubis_map_io,
|
||||
.init_machine = anubis_init,
|
||||
.init_irq = s3c24xx_init_irq,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c244x_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -48,6 +48,7 @@
|
|||
#include <plat/devs.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <linux/platform_data/mmc-s3cmci.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
@ -192,6 +193,7 @@ static void __init at2440evb_map_io(void)
|
|||
s3c24xx_init_io(at2440evb_iodesc, ARRAY_SIZE(at2440evb_iodesc));
|
||||
s3c24xx_init_clocks(16934400);
|
||||
s3c24xx_init_uarts(at2440evb_uartcfgs, ARRAY_SIZE(at2440evb_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
}
|
||||
|
||||
static void __init at2440evb_init(void)
|
||||
|
@ -210,6 +212,6 @@ MACHINE_START(AT2440EVB, "AT2440EVB")
|
|||
.map_io = at2440evb_map_io,
|
||||
.init_machine = at2440evb_init,
|
||||
.init_irq = s3c24xx_init_irq,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c244x_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -55,6 +55,7 @@
|
|||
#include <plat/devs.h>
|
||||
#include <plat/gpio-cfg.h>
|
||||
#include <plat/regs-serial.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "bast.h"
|
||||
#include "common.h"
|
||||
|
@ -576,6 +577,7 @@ static void __init bast_map_io(void)
|
|||
s3c24xx_init_io(bast_iodesc, ARRAY_SIZE(bast_iodesc));
|
||||
s3c24xx_init_clocks(0);
|
||||
s3c24xx_init_uarts(bast_uartcfgs, ARRAY_SIZE(bast_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
}
|
||||
|
||||
static void __init bast_init(void)
|
||||
|
@ -605,6 +607,6 @@ MACHINE_START(BAST, "Simtec-BAST")
|
|||
.map_io = bast_map_io,
|
||||
.init_irq = s3c24xx_init_irq,
|
||||
.init_machine = bast_init,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c2410_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -81,6 +81,7 @@
|
|||
#include <plat/gpio-cfg.h>
|
||||
#include <plat/pm.h>
|
||||
#include <plat/regs-serial.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "gta02.h"
|
||||
|
@ -501,6 +502,7 @@ static void __init gta02_map_io(void)
|
|||
s3c24xx_init_io(gta02_iodesc, ARRAY_SIZE(gta02_iodesc));
|
||||
s3c24xx_init_clocks(12000000);
|
||||
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")
|
|||
.map_io = gta02_map_io,
|
||||
.init_irq = s3c24xx_init_irq,
|
||||
.init_machine = gta02_machine_init,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c244x_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -62,7 +62,7 @@
|
|||
#include <plat/pll.h>
|
||||
#include <plat/pm.h>
|
||||
#include <plat/regs-serial.h>
|
||||
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "h1940.h"
|
||||
|
@ -646,6 +646,7 @@ static void __init h1940_map_io(void)
|
|||
s3c24xx_init_io(h1940_iodesc, ARRAY_SIZE(h1940_iodesc));
|
||||
s3c24xx_init_clocks(0);
|
||||
s3c24xx_init_uarts(h1940_uartcfgs, ARRAY_SIZE(h1940_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
|
||||
/* setup PM */
|
||||
|
||||
|
@ -741,6 +742,6 @@ MACHINE_START(H1940, "IPAQ-H1940")
|
|||
.reserve = h1940_reserve,
|
||||
.init_irq = h1940_init_irq,
|
||||
.init_machine = h1940_init,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c2410_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -46,14 +46,15 @@
|
|||
#include <linux/mtd/nand_ecc.h>
|
||||
#include <linux/mtd/partitions.h>
|
||||
|
||||
#include <plat/s3c2412.h>
|
||||
#include <plat/gpio-cfg.h>
|
||||
#include <plat/clock.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <plat/pm.h>
|
||||
#include <linux/platform_data/usb-s3c2410_udc.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "s3c2412-power.h"
|
||||
|
||||
static struct map_desc jive_iodesc[] __initdata = {
|
||||
|
@ -506,6 +507,7 @@ static void __init jive_map_io(void)
|
|||
s3c24xx_init_io(jive_iodesc, ARRAY_SIZE(jive_iodesc));
|
||||
s3c24xx_init_clocks(12000000);
|
||||
s3c24xx_init_uarts(jive_uartcfgs, ARRAY_SIZE(jive_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
}
|
||||
|
||||
static void jive_power_off(void)
|
||||
|
@ -661,6 +663,6 @@ MACHINE_START(JIVE, "JIVE")
|
|||
.init_irq = s3c24xx_init_irq,
|
||||
.map_io = jive_map_io,
|
||||
.init_machine = jive_machine_init,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c2412_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -56,6 +56,7 @@
|
|||
#include <plat/clock.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include <sound/s3c24xx_uda134x.h>
|
||||
|
||||
|
@ -525,6 +526,7 @@ static void __init mini2440_map_io(void)
|
|||
s3c24xx_init_io(mini2440_iodesc, ARRAY_SIZE(mini2440_iodesc));
|
||||
s3c24xx_init_clocks(12000000);
|
||||
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")
|
|||
.map_io = mini2440_map_io,
|
||||
.init_machine = mini2440_init,
|
||||
.init_irq = s3c24xx_init_irq,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c244x_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -48,8 +48,8 @@
|
|||
#include <plat/cpu.h>
|
||||
#include <plat/devs.h>
|
||||
#include <linux/platform_data/mmc-s3cmci.h>
|
||||
#include <plat/s3c2410.h>
|
||||
#include <linux/platform_data/usb-s3c2410_udc.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
@ -536,6 +536,7 @@ static void __init n30_map_io(void)
|
|||
n30_hwinit();
|
||||
s3c24xx_init_clocks(0);
|
||||
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 */
|
||||
|
@ -589,7 +590,7 @@ MACHINE_START(N30, "Acer-N30")
|
|||
Ben Dooks <ben-linux@fluff.org>
|
||||
*/
|
||||
.atag_offset = 0x100,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.init_machine = n30_init,
|
||||
.init_irq = s3c24xx_init_irq,
|
||||
.map_io = n30_map_io,
|
||||
|
@ -600,7 +601,7 @@ MACHINE_START(N35, "Acer-N35")
|
|||
/* Maintainer: Christer Weinigel <christer@weinigel.se>
|
||||
*/
|
||||
.atag_offset = 0x100,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.init_machine = n30_init,
|
||||
.init_irq = s3c24xx_init_irq,
|
||||
.map_io = n30_map_io,
|
||||
|
|
|
@ -41,11 +41,10 @@
|
|||
#include <linux/platform_data/i2c-s3c2410.h>
|
||||
|
||||
#include <plat/gpio-cfg.h>
|
||||
#include <plat/s3c2410.h>
|
||||
#include <plat/s3c244x.h>
|
||||
#include <plat/clock.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
@ -137,6 +136,7 @@ static void __init nexcoder_map_io(void)
|
|||
s3c24xx_init_io(nexcoder_iodesc, ARRAY_SIZE(nexcoder_iodesc));
|
||||
s3c24xx_init_clocks(0);
|
||||
s3c24xx_init_uarts(nexcoder_uartcfgs, ARRAY_SIZE(nexcoder_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
|
||||
nexcoder_sensorboard_init();
|
||||
}
|
||||
|
@ -153,6 +153,6 @@ MACHINE_START(NEXCODER_2440, "NexVision - Nexcoder 2440")
|
|||
.map_io = nexcoder_map_io,
|
||||
.init_machine = nexcoder_init,
|
||||
.init_irq = s3c24xx_init_irq,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c244x_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#include <plat/devs.h>
|
||||
#include <plat/gpio-cfg.h>
|
||||
#include <plat/regs-serial.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/regs-gpio.h>
|
||||
|
@ -384,6 +385,7 @@ static void __init osiris_map_io(void)
|
|||
s3c24xx_init_io(osiris_iodesc, ARRAY_SIZE(osiris_iodesc));
|
||||
s3c24xx_init_clocks(0);
|
||||
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 */
|
||||
|
||||
|
@ -426,6 +428,6 @@ MACHINE_START(OSIRIS, "Simtec-OSIRIS")
|
|||
.map_io = osiris_map_io,
|
||||
.init_irq = s3c24xx_init_irq,
|
||||
.init_machine = osiris_init,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c244x_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
#include <plat/cpu.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/regs-serial.h>
|
||||
#include <plat/s3c2410.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "otom.h"
|
||||
|
@ -102,6 +102,7 @@ static void __init otom11_map_io(void)
|
|||
s3c24xx_init_io(otom11_iodesc, ARRAY_SIZE(otom11_iodesc));
|
||||
s3c24xx_init_clocks(0);
|
||||
s3c24xx_init_uarts(otom11_uartcfgs, ARRAY_SIZE(otom11_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
}
|
||||
|
||||
static void __init otom11_init(void)
|
||||
|
@ -116,6 +117,6 @@ MACHINE_START(OTOM, "Nex Vision - Otom 1.1")
|
|||
.map_io = otom11_map_io,
|
||||
.init_machine = otom11_init,
|
||||
.init_irq = s3c24xx_init_irq,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c2410_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -55,13 +55,14 @@
|
|||
#include <linux/platform_data/usb-s3c2410_udc.h>
|
||||
#include <linux/platform_data/i2c-s3c2410.h>
|
||||
|
||||
#include <plat/common-smdk.h>
|
||||
#include <plat/gpio-cfg.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <plat/pm.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "common-smdk.h"
|
||||
|
||||
static struct map_desc qt2410_iodesc[] __initdata = {
|
||||
{ 0xe0000000, __phys_to_pfn(S3C2410_CS3+0x01000000), SZ_1M, MT_DEVICE }
|
||||
|
@ -304,6 +305,7 @@ static void __init qt2410_map_io(void)
|
|||
s3c24xx_init_io(qt2410_iodesc, ARRAY_SIZE(qt2410_iodesc));
|
||||
s3c24xx_init_clocks(12*1000*1000);
|
||||
s3c24xx_init_uarts(smdk2410_uartcfgs, ARRAY_SIZE(smdk2410_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
}
|
||||
|
||||
static void __init qt2410_machine_init(void)
|
||||
|
@ -343,6 +345,6 @@ MACHINE_START(QT2410, "QT2410")
|
|||
.map_io = qt2410_map_io,
|
||||
.init_irq = s3c24xx_init_irq,
|
||||
.init_machine = qt2410_machine_init,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c2410_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
#include <plat/pm.h>
|
||||
#include <plat/regs-iic.h>
|
||||
#include <plat/regs-serial.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "h1940.h"
|
||||
|
@ -741,6 +742,7 @@ static void __init rx1950_map_io(void)
|
|||
s3c24xx_init_io(rx1950_iodesc, ARRAY_SIZE(rx1950_iodesc));
|
||||
s3c24xx_init_clocks(16934000);
|
||||
s3c24xx_init_uarts(rx1950_uartcfgs, ARRAY_SIZE(rx1950_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
|
||||
/* setup PM */
|
||||
|
||||
|
@ -813,6 +815,6 @@ MACHINE_START(RX1950, "HP iPAQ RX1950")
|
|||
.reserve = rx1950_reserve,
|
||||
.init_irq = s3c24xx_init_irq,
|
||||
.init_machine = rx1950_init_machine,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c244x_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -49,6 +49,7 @@
|
|||
#include <plat/devs.h>
|
||||
#include <plat/pm.h>
|
||||
#include <plat/regs-serial.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "h1940.h"
|
||||
|
@ -179,6 +180,7 @@ static void __init rx3715_map_io(void)
|
|||
s3c24xx_init_io(rx3715_iodesc, ARRAY_SIZE(rx3715_iodesc));
|
||||
s3c24xx_init_clocks(16934000);
|
||||
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 */
|
||||
|
@ -212,6 +214,6 @@ MACHINE_START(RX3715, "IPAQ-RX3715")
|
|||
.reserve = rx3715_reserve,
|
||||
.init_irq = rx3715_init_irq,
|
||||
.init_machine = rx3715_init_machine,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c244x_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -51,10 +51,10 @@
|
|||
|
||||
#include <plat/devs.h>
|
||||
#include <plat/cpu.h>
|
||||
|
||||
#include <plat/common-smdk.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "common-smdk.h"
|
||||
|
||||
static struct map_desc smdk2410_iodesc[] __initdata = {
|
||||
/* nothing here yet */
|
||||
|
@ -101,6 +101,7 @@ static void __init smdk2410_map_io(void)
|
|||
s3c24xx_init_io(smdk2410_iodesc, ARRAY_SIZE(smdk2410_iodesc));
|
||||
s3c24xx_init_clocks(0);
|
||||
s3c24xx_init_uarts(smdk2410_uartcfgs, ARRAY_SIZE(smdk2410_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
}
|
||||
|
||||
static void __init smdk2410_init(void)
|
||||
|
@ -117,6 +118,6 @@ MACHINE_START(SMDK2410, "SMDK2410") /* @TODO: request a new identifier and switc
|
|||
.map_io = smdk2410_map_io,
|
||||
.init_irq = s3c24xx_init_irq,
|
||||
.init_machine = smdk2410_init,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c2410_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -41,13 +41,13 @@
|
|||
#include <linux/platform_data/i2c-s3c2410.h>
|
||||
#include <mach/fb.h>
|
||||
|
||||
#include <plat/s3c2410.h>
|
||||
#include <plat/s3c2412.h>
|
||||
#include <plat/clock.h>
|
||||
#include <plat/devs.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 = {
|
||||
};
|
||||
|
@ -106,6 +106,7 @@ static void __init smdk2413_map_io(void)
|
|||
s3c24xx_init_io(smdk2413_iodesc, ARRAY_SIZE(smdk2413_iodesc));
|
||||
s3c24xx_init_clocks(12000000);
|
||||
s3c24xx_init_uarts(smdk2413_uartcfgs, ARRAY_SIZE(smdk2413_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
}
|
||||
|
||||
static void __init smdk2413_machine_init(void)
|
||||
|
@ -132,7 +133,7 @@ MACHINE_START(S3C2413, "S3C2413")
|
|||
.init_irq = s3c24xx_init_irq,
|
||||
.map_io = smdk2413_map_io,
|
||||
.init_machine = smdk2413_machine_init,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c2412_restart,
|
||||
MACHINE_END
|
||||
|
||||
|
@ -144,7 +145,7 @@ MACHINE_START(SMDK2412, "SMDK2412")
|
|||
.init_irq = s3c24xx_init_irq,
|
||||
.map_io = smdk2413_map_io,
|
||||
.init_machine = smdk2413_machine_init,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c2412_restart,
|
||||
MACHINE_END
|
||||
|
||||
|
@ -156,6 +157,6 @@ MACHINE_START(SMDK2413, "SMDK2413")
|
|||
.init_irq = s3c24xx_init_irq,
|
||||
.map_io = smdk2413_map_io,
|
||||
.init_machine = smdk2413_machine_init,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c2412_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -42,7 +42,6 @@
|
|||
#include <linux/platform_data/leds-s3c24xx.h>
|
||||
#include <linux/platform_data/i2c-s3c2410.h>
|
||||
|
||||
#include <plat/s3c2416.h>
|
||||
#include <plat/gpio-cfg.h>
|
||||
#include <plat/clock.h>
|
||||
#include <plat/devs.h>
|
||||
|
@ -51,10 +50,12 @@
|
|||
#include <plat/sdhci.h>
|
||||
#include <linux/platform_data/usb-s3c2410_udc.h>
|
||||
#include <linux/platform_data/s3c-hsudc.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include <plat/fb.h>
|
||||
|
||||
#include <plat/common-smdk.h>
|
||||
#include "common.h"
|
||||
#include "common-smdk.h"
|
||||
|
||||
static struct map_desc smdk2416_iodesc[] __initdata = {
|
||||
/* ISA IO Space map (memory space selected by A24) */
|
||||
|
@ -221,6 +222,7 @@ static void __init smdk2416_map_io(void)
|
|||
s3c24xx_init_io(smdk2416_iodesc, ARRAY_SIZE(smdk2416_iodesc));
|
||||
s3c24xx_init_clocks(12000000);
|
||||
s3c24xx_init_uarts(smdk2416_uartcfgs, ARRAY_SIZE(smdk2416_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
}
|
||||
|
||||
static void __init smdk2416_machine_init(void)
|
||||
|
@ -253,6 +255,6 @@ MACHINE_START(SMDK2416, "SMDK2416")
|
|||
.init_irq = s3c2416_init_irq,
|
||||
.map_io = smdk2416_map_io,
|
||||
.init_machine = smdk2416_machine_init,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c2416_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -38,15 +38,13 @@
|
|||
#include <mach/fb.h>
|
||||
#include <linux/platform_data/i2c-s3c2410.h>
|
||||
|
||||
#include <plat/s3c2410.h>
|
||||
#include <plat/s3c244x.h>
|
||||
#include <plat/clock.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/cpu.h>
|
||||
|
||||
#include <plat/common-smdk.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "common-smdk.h"
|
||||
|
||||
static struct map_desc smdk2440_iodesc[] __initdata = {
|
||||
/* ISA IO Space map (memory space selected by A24) */
|
||||
|
@ -163,6 +161,7 @@ static void __init smdk2440_map_io(void)
|
|||
s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
|
||||
s3c24xx_init_clocks(16934400);
|
||||
s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
}
|
||||
|
||||
static void __init smdk2440_machine_init(void)
|
||||
|
@ -181,6 +180,6 @@ MACHINE_START(S3C2440, "SMDK2440")
|
|||
.init_irq = s3c24xx_init_irq,
|
||||
.map_io = smdk2440_map_io,
|
||||
.init_machine = smdk2440_machine_init,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c244x_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -38,13 +38,13 @@
|
|||
#include <mach/fb.h>
|
||||
#include <linux/platform_data/i2c-s3c2410.h>
|
||||
|
||||
#include <plat/s3c2410.h>
|
||||
#include <plat/s3c2443.h>
|
||||
#include <plat/clock.h>
|
||||
#include <plat/devs.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 = {
|
||||
/* ISA IO Space map (memory space selected by A24) */
|
||||
|
@ -122,6 +122,7 @@ static void __init smdk2443_map_io(void)
|
|||
s3c24xx_init_io(smdk2443_iodesc, ARRAY_SIZE(smdk2443_iodesc));
|
||||
s3c24xx_init_clocks(12000000);
|
||||
s3c24xx_init_uarts(smdk2443_uartcfgs, ARRAY_SIZE(smdk2443_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
}
|
||||
|
||||
static void __init smdk2443_machine_init(void)
|
||||
|
@ -143,6 +144,6 @@ MACHINE_START(SMDK2443, "SMDK2443")
|
|||
.init_irq = s3c2443_init_irq,
|
||||
.map_io = smdk2443_map_io,
|
||||
.init_machine = smdk2443_machine_init,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c2443_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -53,6 +53,7 @@
|
|||
#include <linux/mtd/partitions.h>
|
||||
#include <linux/mtd/map.h>
|
||||
#include <linux/mtd/physmap.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
@ -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_clocks(0);
|
||||
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)
|
||||
|
@ -149,6 +151,6 @@ MACHINE_START(TCT_HAMMER, "TCT_HAMMER")
|
|||
.map_io = tct_hammer_map_io,
|
||||
.init_irq = s3c24xx_init_irq,
|
||||
.init_machine = tct_hammer_init,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c2410_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#include <plat/cpu.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/regs-serial.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "bast.h"
|
||||
#include "common.h"
|
||||
|
@ -332,6 +333,7 @@ static void __init vr1000_map_io(void)
|
|||
s3c24xx_init_io(vr1000_iodesc, ARRAY_SIZE(vr1000_iodesc));
|
||||
s3c24xx_init_clocks(0);
|
||||
s3c24xx_init_uarts(vr1000_uartcfgs, ARRAY_SIZE(vr1000_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
}
|
||||
|
||||
static void __init vr1000_init(void)
|
||||
|
@ -354,6 +356,6 @@ MACHINE_START(VR1000, "Thorcom-VR1000")
|
|||
.map_io = vr1000_map_io,
|
||||
.init_machine = vr1000_init,
|
||||
.init_irq = s3c24xx_init_irq,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c2410_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -41,12 +41,12 @@
|
|||
#include <linux/platform_data/i2c-s3c2410.h>
|
||||
#include <linux/platform_data/mtd-nand-s3c2410.h>
|
||||
|
||||
#include <plat/s3c2410.h>
|
||||
#include <plat/s3c2412.h>
|
||||
#include <plat/clock.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
static struct map_desc vstms_iodesc[] __initdata = {
|
||||
};
|
||||
|
@ -143,6 +143,7 @@ static void __init vstms_map_io(void)
|
|||
s3c24xx_init_io(vstms_iodesc, ARRAY_SIZE(vstms_iodesc));
|
||||
s3c24xx_init_clocks(12000000);
|
||||
s3c24xx_init_uarts(vstms_uartcfgs, ARRAY_SIZE(vstms_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
}
|
||||
|
||||
static void __init vstms_init(void)
|
||||
|
@ -160,6 +161,6 @@ MACHINE_START(VSTMS, "VSTMS")
|
|||
.init_irq = s3c24xx_init_irq,
|
||||
.init_machine = vstms_init,
|
||||
.map_io = vstms_map_io,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c2412_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -29,7 +29,6 @@
|
|||
|
||||
#include <plat/cpu.h>
|
||||
#include <plat/pm.h>
|
||||
#include <plat/s3c2412.h>
|
||||
|
||||
#include "regs-dsc.h"
|
||||
#include "s3c2412-power.h"
|
||||
|
|
|
@ -37,7 +37,6 @@
|
|||
#include <mach/regs-clock.h>
|
||||
#include <plat/regs-serial.h>
|
||||
|
||||
#include <plat/s3c2410.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/clock.h>
|
||||
|
|
|
@ -44,7 +44,6 @@
|
|||
#include <plat/pm.h>
|
||||
#include <plat/regs-serial.h>
|
||||
#include <plat/regs-spi.h>
|
||||
#include <plat/s3c2412.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "regs-dsc.h"
|
||||
|
|
|
@ -50,7 +50,6 @@
|
|||
#include <plat/gpio-core.h>
|
||||
#include <plat/gpio-cfg.h>
|
||||
#include <plat/gpio-cfg-helpers.h>
|
||||
#include <plat/s3c2416.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <plat/sdhci.h>
|
||||
|
|
|
@ -33,7 +33,6 @@
|
|||
|
||||
#include <plat/devs.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <plat/s3c244x.h>
|
||||
#include <plat/pm.h>
|
||||
|
||||
#include <plat/gpio-core.h>
|
||||
|
|
|
@ -44,7 +44,6 @@
|
|||
|
||||
#include <plat/clock.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <plat/s3c244x.h>
|
||||
#include <plat/pm.h>
|
||||
|
||||
#include <plat/gpio-core.h>
|
||||
|
|
|
@ -36,7 +36,6 @@
|
|||
#include <plat/gpio-core.h>
|
||||
#include <plat/gpio-cfg.h>
|
||||
#include <plat/gpio-cfg-helpers.h>
|
||||
#include <plat/s3c2443.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <plat/fb-core.h>
|
||||
|
|
|
@ -37,8 +37,6 @@
|
|||
#include <plat/regs-serial.h>
|
||||
#include <mach/regs-gpio.h>
|
||||
|
||||
#include <plat/s3c2410.h>
|
||||
#include <plat/s3c244x.h>
|
||||
#include <plat/clock.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/cpu.h>
|
||||
|
|
|
@ -17,11 +17,13 @@ config PLAT_S3C64XX
|
|||
# Configuration options for the S3C6410 CPU
|
||||
|
||||
config CPU_S3C6400
|
||||
select SAMSUNG_HRT
|
||||
bool
|
||||
help
|
||||
Enable S3C6400 CPU support
|
||||
|
||||
config CPU_S3C6410
|
||||
select SAMSUNG_HRT
|
||||
bool
|
||||
help
|
||||
Enable S3C6410 CPU support
|
||||
|
|
|
@ -49,6 +49,7 @@
|
|||
#include <plat/devs.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <mach/regs-gpio.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "regs-modem.h"
|
||||
|
@ -208,6 +209,7 @@ static void __init anw6410_map_io(void)
|
|||
s3c64xx_init_io(anw6410_iodesc, ARRAY_SIZE(anw6410_iodesc));
|
||||
s3c24xx_init_clocks(12000000);
|
||||
s3c24xx_init_uarts(anw6410_uartcfgs, ARRAY_SIZE(anw6410_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
|
||||
anw6410_lcd_mode_set();
|
||||
}
|
||||
|
@ -232,6 +234,6 @@ MACHINE_START(ANW6410, "A&W6410")
|
|||
.map_io = anw6410_map_io,
|
||||
.init_machine = anw6410_machine_init,
|
||||
.init_late = s3c64xx_init_late,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c64xx_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -64,6 +64,7 @@
|
|||
#include <plat/adc.h>
|
||||
#include <linux/platform_data/i2c-s3c2410.h>
|
||||
#include <plat/pm.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "crag6410.h"
|
||||
|
@ -744,6 +745,7 @@ static void __init crag6410_map_io(void)
|
|||
s3c64xx_init_io(NULL, 0);
|
||||
s3c24xx_init_clocks(12000000);
|
||||
s3c24xx_init_uarts(crag6410_uartcfgs, ARRAY_SIZE(crag6410_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
|
||||
/* LCD type and Bypass set by bootloader */
|
||||
}
|
||||
|
@ -868,6 +870,6 @@ MACHINE_START(WLF_CRAGG_6410, "Wolfson Cragganmore 6410")
|
|||
.map_io = crag6410_map_io,
|
||||
.init_machine = crag6410_machine_init,
|
||||
.init_late = s3c64xx_init_late,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c64xx_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
#include <plat/clock.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
@ -248,6 +249,7 @@ static void __init hmt_map_io(void)
|
|||
s3c64xx_init_io(hmt_iodesc, ARRAY_SIZE(hmt_iodesc));
|
||||
s3c24xx_init_clocks(12000000);
|
||||
s3c24xx_init_uarts(hmt_uartcfgs, ARRAY_SIZE(hmt_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
}
|
||||
|
||||
static void __init hmt_machine_init(void)
|
||||
|
@ -275,6 +277,6 @@ MACHINE_START(HMT, "Airgoo-HMT")
|
|||
.map_io = hmt_map_io,
|
||||
.init_machine = hmt_machine_init,
|
||||
.init_late = s3c64xx_init_late,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c64xx_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
|
||||
#include <video/platform_lcd.h>
|
||||
#include <video/samsung_fimd.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "regs-modem.h"
|
||||
|
@ -232,6 +233,7 @@ static void __init mini6410_map_io(void)
|
|||
s3c64xx_init_io(NULL, 0);
|
||||
s3c24xx_init_clocks(12000000);
|
||||
s3c24xx_init_uarts(mini6410_uartcfgs, ARRAY_SIZE(mini6410_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
|
||||
/* set the LCD type */
|
||||
tmp = __raw_readl(S3C64XX_SPCON);
|
||||
|
@ -354,6 +356,6 @@ MACHINE_START(MINI6410, "MINI6410")
|
|||
.map_io = mini6410_map_io,
|
||||
.init_machine = mini6410_machine_init,
|
||||
.init_late = s3c64xx_init_late,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c64xx_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
#include <plat/clock.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
@ -87,6 +88,7 @@ static void __init ncp_map_io(void)
|
|||
s3c64xx_init_io(ncp_iodesc, ARRAY_SIZE(ncp_iodesc));
|
||||
s3c24xx_init_clocks(12000000);
|
||||
s3c24xx_init_uarts(ncp_uartcfgs, ARRAY_SIZE(ncp_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
}
|
||||
|
||||
static void __init ncp_machine_init(void)
|
||||
|
@ -103,6 +105,6 @@ MACHINE_START(NCP, "NCP")
|
|||
.map_io = ncp_map_io,
|
||||
.init_machine = ncp_machine_init,
|
||||
.init_late = s3c64xx_init_late,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c64xx_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
|
||||
#include <video/platform_lcd.h>
|
||||
#include <video/samsung_fimd.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "regs-modem.h"
|
||||
|
@ -211,6 +212,7 @@ static void __init real6410_map_io(void)
|
|||
s3c64xx_init_io(NULL, 0);
|
||||
s3c24xx_init_clocks(12000000);
|
||||
s3c24xx_init_uarts(real6410_uartcfgs, ARRAY_SIZE(real6410_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
|
||||
/* set the LCD type */
|
||||
tmp = __raw_readl(S3C64XX_SPCON);
|
||||
|
@ -333,6 +335,6 @@ MACHINE_START(REAL6410, "REAL6410")
|
|||
.map_io = real6410_map_io,
|
||||
.init_machine = real6410_machine_init,
|
||||
.init_late = s3c64xx_init_late,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c64xx_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
#include <linux/platform_data/touchscreen-s3c2410.h>
|
||||
|
||||
#include <video/platform_lcd.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "regs-modem.h"
|
||||
|
@ -378,6 +379,7 @@ void __init smartq_map_io(void)
|
|||
s3c64xx_init_io(smartq_iodesc, ARRAY_SIZE(smartq_iodesc));
|
||||
s3c24xx_init_clocks(12000000);
|
||||
s3c24xx_init_uarts(smartq_uartcfgs, ARRAY_SIZE(smartq_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
|
||||
smartq_lcd_mode_set();
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include <plat/devs.h>
|
||||
#include <plat/fb.h>
|
||||
#include <plat/gpio-cfg.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "mach-smartq.h"
|
||||
|
@ -155,6 +156,6 @@ MACHINE_START(SMARTQ5, "SmartQ 5")
|
|||
.map_io = smartq_map_io,
|
||||
.init_machine = smartq5_machine_init,
|
||||
.init_late = s3c64xx_init_late,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c64xx_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include <plat/devs.h>
|
||||
#include <plat/fb.h>
|
||||
#include <plat/gpio-cfg.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "mach-smartq.h"
|
||||
|
@ -171,6 +172,6 @@ MACHINE_START(SMARTQ7, "SmartQ 7")
|
|||
.map_io = smartq_map_io,
|
||||
.init_machine = smartq7_machine_init,
|
||||
.init_late = s3c64xx_init_late,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c64xx_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#include <plat/devs.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <linux/platform_data/i2c-s3c2410.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
@ -66,6 +67,7 @@ static void __init smdk6400_map_io(void)
|
|||
s3c64xx_init_io(smdk6400_iodesc, ARRAY_SIZE(smdk6400_iodesc));
|
||||
s3c24xx_init_clocks(12000000);
|
||||
s3c24xx_init_uarts(smdk6400_uartcfgs, ARRAY_SIZE(smdk6400_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
}
|
||||
|
||||
static struct platform_device *smdk6400_devices[] __initdata = {
|
||||
|
@ -92,6 +94,6 @@ MACHINE_START(SMDK6400, "SMDK6400")
|
|||
.map_io = smdk6400_map_io,
|
||||
.init_machine = smdk6400_machine_init,
|
||||
.init_late = s3c64xx_init_late,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c64xx_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -69,6 +69,7 @@
|
|||
#include <linux/platform_data/touchscreen-s3c2410.h>
|
||||
#include <plat/keypad.h>
|
||||
#include <plat/backlight.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "regs-modem.h"
|
||||
|
@ -634,6 +635,7 @@ static void __init smdk6410_map_io(void)
|
|||
s3c64xx_init_io(smdk6410_iodesc, ARRAY_SIZE(smdk6410_iodesc));
|
||||
s3c24xx_init_clocks(12000000);
|
||||
s3c24xx_init_uarts(smdk6410_uartcfgs, ARRAY_SIZE(smdk6410_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
|
||||
/* set the LCD type */
|
||||
|
||||
|
@ -702,6 +704,6 @@ MACHINE_START(SMDK6410, "SMDK6410")
|
|||
.map_io = smdk6410_map_io,
|
||||
.init_machine = smdk6410_machine_init,
|
||||
.init_late = s3c64xx_init_late,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s3c64xx_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -9,16 +9,16 @@ if ARCH_S5P64X0
|
|||
|
||||
config CPU_S5P6440
|
||||
bool
|
||||
select S5P_HRT
|
||||
select S5P_SLEEP if PM
|
||||
select SAMSUNG_DMADEV
|
||||
select SAMSUNG_HRT
|
||||
select SAMSUNG_WAKEMASK if PM
|
||||
help
|
||||
Enable S5P6440 CPU support
|
||||
|
||||
config CPU_S5P6450
|
||||
bool
|
||||
select S5P_HRT
|
||||
select SAMSUNG_HRT
|
||||
select S5P_SLEEP if PM
|
||||
select SAMSUNG_DMADEV
|
||||
select SAMSUNG_WAKEMASK if PM
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
#include <plat/pll.h>
|
||||
#include <plat/adc.h>
|
||||
#include <linux/platform_data/touchscreen-s3c2410.h>
|
||||
#include <plat/s5p-time.h>
|
||||
#include <plat/samsung-time.h>
|
||||
#include <plat/backlight.h>
|
||||
#include <plat/fb.h>
|
||||
#include <plat/sdhci.h>
|
||||
|
@ -229,7 +229,7 @@ static void __init smdk6440_map_io(void)
|
|||
s5p64x0_init_io(NULL, 0);
|
||||
s3c24xx_init_clocks(12000000);
|
||||
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)
|
||||
|
@ -273,6 +273,6 @@ MACHINE_START(SMDK6440, "SMDK6440")
|
|||
.init_irq = s5p6440_init_irq,
|
||||
.map_io = smdk6440_map_io,
|
||||
.init_machine = smdk6440_machine_init,
|
||||
.init_time = s5p_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s5p64x0_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
#include <plat/pll.h>
|
||||
#include <plat/adc.h>
|
||||
#include <linux/platform_data/touchscreen-s3c2410.h>
|
||||
#include <plat/s5p-time.h>
|
||||
#include <plat/samsung-time.h>
|
||||
#include <plat/backlight.h>
|
||||
#include <plat/fb.h>
|
||||
#include <plat/sdhci.h>
|
||||
|
@ -248,7 +248,7 @@ static void __init smdk6450_map_io(void)
|
|||
s5p64x0_init_io(NULL, 0);
|
||||
s3c24xx_init_clocks(19200000);
|
||||
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)
|
||||
|
@ -292,6 +292,6 @@ MACHINE_START(SMDK6450, "SMDK6450")
|
|||
.init_irq = s5p6450_init_irq,
|
||||
.map_io = smdk6450_map_io,
|
||||
.init_machine = smdk6450_machine_init,
|
||||
.init_time = s5p_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s5p64x0_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -11,6 +11,7 @@ config CPU_S5PC100
|
|||
bool
|
||||
select S5P_EXT_INT
|
||||
select SAMSUNG_DMADEV
|
||||
select SAMSUNG_HRT
|
||||
help
|
||||
Enable S5PC100 CPU support
|
||||
|
||||
|
|
|
@ -51,6 +51,7 @@
|
|||
#include <linux/platform_data/touchscreen-s3c2410.h>
|
||||
#include <linux/platform_data/asoc-s3c.h>
|
||||
#include <plat/backlight.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
@ -221,6 +222,7 @@ static void __init smdkc100_map_io(void)
|
|||
s5pc100_init_io(NULL, 0);
|
||||
s3c24xx_init_clocks(12000000);
|
||||
s3c24xx_init_uarts(smdkc100_uartcfgs, ARRAY_SIZE(smdkc100_uartcfgs));
|
||||
samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
|
||||
}
|
||||
|
||||
static void __init smdkc100_machine_init(void)
|
||||
|
@ -255,6 +257,6 @@ MACHINE_START(SMDKC100, "SMDKC100")
|
|||
.init_irq = s5pc100_init_irq,
|
||||
.map_io = smdkc100_map_io,
|
||||
.init_machine = smdkc100_machine_init,
|
||||
.init_time = s3c24xx_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s5pc100_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -12,10 +12,10 @@ if ARCH_S5PV210
|
|||
config CPU_S5PV210
|
||||
bool
|
||||
select S5P_EXT_INT
|
||||
select S5P_HRT
|
||||
select S5P_PM if PM
|
||||
select S5P_SLEEP if PM
|
||||
select SAMSUNG_DMADEV
|
||||
select SAMSUNG_HRT
|
||||
help
|
||||
Enable S5PV210 CPU support
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
#include <plat/fb.h>
|
||||
#include <plat/fimc-core.h>
|
||||
#include <plat/sdhci.h>
|
||||
#include <plat/s5p-time.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
@ -651,7 +651,7 @@ static void __init aquila_map_io(void)
|
|||
s5pv210_init_io(NULL, 0);
|
||||
s3c24xx_init_clocks(24000000);
|
||||
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)
|
||||
|
@ -686,6 +686,6 @@ MACHINE_START(AQUILA, "Aquila")
|
|||
.init_irq = s5pv210_init_irq,
|
||||
.map_io = aquila_map_io,
|
||||
.init_machine = aquila_machine_init,
|
||||
.init_time = s5p_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s5pv210_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
#include <plat/keypad.h>
|
||||
#include <plat/sdhci.h>
|
||||
#include <plat/clock.h>
|
||||
#include <plat/s5p-time.h>
|
||||
#include <plat/samsung-time.h>
|
||||
#include <plat/mfc.h>
|
||||
#include <plat/camport.h>
|
||||
|
||||
|
@ -908,7 +908,7 @@ static void __init goni_map_io(void)
|
|||
s5pv210_init_io(NULL, 0);
|
||||
s3c24xx_init_clocks(clk_xusbxti.rate);
|
||||
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)
|
||||
|
@ -973,7 +973,7 @@ MACHINE_START(GONI, "GONI")
|
|||
.init_irq = s5pv210_init_irq,
|
||||
.map_io = goni_map_io,
|
||||
.init_machine = goni_machine_init,
|
||||
.init_time = s5p_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.reserve = &goni_reserve,
|
||||
.restart = s5pv210_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#include <linux/platform_data/ata-samsung_cf.h>
|
||||
#include <linux/platform_data/i2c-s3c2410.h>
|
||||
#include <plat/pm.h>
|
||||
#include <plat/s5p-time.h>
|
||||
#include <plat/samsung-time.h>
|
||||
#include <plat/mfc.h>
|
||||
|
||||
#include "common.h"
|
||||
|
@ -120,7 +120,7 @@ static void __init smdkc110_map_io(void)
|
|||
s5pv210_init_io(NULL, 0);
|
||||
s3c24xx_init_clocks(24000000);
|
||||
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)
|
||||
|
@ -153,7 +153,7 @@ MACHINE_START(SMDKC110, "SMDKC110")
|
|||
.init_irq = s5pv210_init_irq,
|
||||
.map_io = smdkc110_map_io,
|
||||
.init_machine = smdkc110_machine_init,
|
||||
.init_time = s5p_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s5pv210_restart,
|
||||
.reserve = &smdkc110_reserve,
|
||||
MACHINE_END
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
#include <plat/keypad.h>
|
||||
#include <plat/pm.h>
|
||||
#include <plat/fb.h>
|
||||
#include <plat/s5p-time.h>
|
||||
#include <plat/samsung-time.h>
|
||||
#include <plat/backlight.h>
|
||||
#include <plat/mfc.h>
|
||||
#include <plat/clock.h>
|
||||
|
@ -285,7 +285,7 @@ static void __init smdkv210_map_io(void)
|
|||
s5pv210_init_io(NULL, 0);
|
||||
s3c24xx_init_clocks(clk_xusbxti.rate);
|
||||
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)
|
||||
|
@ -329,7 +329,7 @@ MACHINE_START(SMDKV210, "SMDKV210")
|
|||
.init_irq = s5pv210_init_irq,
|
||||
.map_io = smdkv210_map_io,
|
||||
.init_machine = smdkv210_machine_init,
|
||||
.init_time = s5p_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s5pv210_restart,
|
||||
.reserve = &smdkv210_reserve,
|
||||
MACHINE_END
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
#include <plat/devs.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <linux/platform_data/i2c-s3c2410.h>
|
||||
#include <plat/s5p-time.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
@ -106,7 +106,7 @@ static void __init torbreck_map_io(void)
|
|||
s5pv210_init_io(NULL, 0);
|
||||
s3c24xx_init_clocks(24000000);
|
||||
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)
|
||||
|
@ -130,6 +130,6 @@ MACHINE_START(TORBRECK, "TORBRECK")
|
|||
.init_irq = s5pv210_init_irq,
|
||||
.map_io = torbreck_map_io,
|
||||
.init_machine = torbreck_machine_init,
|
||||
.init_time = s5p_timer_init,
|
||||
.init_time = samsung_timer_init,
|
||||
.restart = s5pv210_restart,
|
||||
MACHINE_END
|
||||
|
|
|
@ -70,7 +70,7 @@ config S3C_LOWLEVEL_UART_PORT
|
|||
|
||||
# timer options
|
||||
|
||||
config S5P_HRT
|
||||
config SAMSUNG_HRT
|
||||
bool
|
||||
select SAMSUNG_DEV_PWM
|
||||
help
|
||||
|
|
|
@ -12,8 +12,7 @@ obj- :=
|
|||
# Objects we always build independent of SoC choice
|
||||
|
||||
obj-y += init.o cpu.o
|
||||
obj-$(CONFIG_ARCH_USES_GETTIMEOFFSET) += time.o
|
||||
obj-$(CONFIG_S5P_HRT) += s5p-time.o
|
||||
obj-$(CONFIG_SAMSUNG_HRT) += samsung-time.o
|
||||
|
||||
obj-$(CONFIG_SAMSUNG_CLOCK) += clock.o
|
||||
obj-$(CONFIG_SAMSUNG_CLOCK) += pwm-clock.o
|
||||
|
|
|
@ -192,10 +192,6 @@ extern void s3c24xx_init_uartdevs(char *name,
|
|||
struct s3c24xx_uart_resources *res,
|
||||
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 s3c2412_pm_syscore_ops;
|
||||
extern struct syscore_ops s3c2416_pm_syscore_ops;
|
||||
|
|
|
@ -1,116 +0,0 @@
|
|||
/* 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);
|
|
@ -1,31 +0,0 @@
|
|||
/* 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
|
|
@ -1,32 +0,0 @@
|
|||
/* 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
|
|
@ -1,37 +0,0 @@
|
|||
/* 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
|
|
@ -1,36 +0,0 @@
|
|||
/* 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
|
|
@ -1,42 +0,0 @@
|
|||
/* 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
|
|
@ -1,40 +0,0 @@
|
|||
/* linux/arch/arm/plat-samsung/include/plat/s5p-time.h
|
||||
*
|
||||
* Copyright 2011 Samsung Electronics Co., Ltd.
|
||||
* http://www.samsung.com/
|
||||
*
|
||||
* Header file for s5p time 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.
|
||||
*/
|
||||
|
||||
#ifndef __ASM_PLAT_S5P_TIME_H
|
||||
#define __ASM_PLAT_S5P_TIME_H __FILE__
|
||||
|
||||
/* S5P HR-Timer Clock mode */
|
||||
enum s5p_timer_mode {
|
||||
S5P_PWM0,
|
||||
S5P_PWM1,
|
||||
S5P_PWM2,
|
||||
S5P_PWM3,
|
||||
S5P_PWM4,
|
||||
};
|
||||
|
||||
struct s5p_timer_source {
|
||||
unsigned int event_id;
|
||||
unsigned int source_id;
|
||||
};
|
||||
|
||||
/* Be able to sleep for atleast 4 seconds (usually more) */
|
||||
#define S5PTIMER_MIN_RANGE 4
|
||||
|
||||
#define TCNT_MAX 0xffffffff
|
||||
#define NON_PERIODIC 0
|
||||
#define PERIODIC 1
|
||||
|
||||
extern void __init s5p_set_timer_source(enum s5p_timer_mode event,
|
||||
enum s5p_timer_mode source);
|
||||
extern void s5p_timer_init(void);
|
||||
#endif /* __ASM_PLAT_S5P_TIME_H */
|
|
@ -0,0 +1,53 @@
|
|||
/* linux/arch/arm/plat-samsung/include/plat/samsung-time.h
|
||||
*
|
||||
* Copyright 2011 Samsung Electronics Co., Ltd.
|
||||
* http://www.samsung.com/
|
||||
*
|
||||
* Header file for samsung s3c and s5p time 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.
|
||||
*/
|
||||
|
||||
#ifndef __ASM_PLAT_SAMSUNG_TIME_H
|
||||
#define __ASM_PLAT_SAMSUNG_TIME_H __FILE__
|
||||
|
||||
/* SAMSUNG HR-Timer Clock mode */
|
||||
enum samsung_timer_mode {
|
||||
SAMSUNG_PWM0,
|
||||
SAMSUNG_PWM1,
|
||||
SAMSUNG_PWM2,
|
||||
SAMSUNG_PWM3,
|
||||
SAMSUNG_PWM4,
|
||||
};
|
||||
|
||||
struct samsung_timer_source {
|
||||
unsigned int event_id;
|
||||
unsigned int source_id;
|
||||
};
|
||||
|
||||
/* Be able to sleep for atleast 4 seconds (usually more) */
|
||||
#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 TSCALER_DIV 2
|
||||
#define TDIV 2
|
||||
#define TSIZE 32
|
||||
#endif
|
||||
|
||||
#define NON_PERIODIC 0
|
||||
#define PERIODIC 1
|
||||
|
||||
extern void __init samsung_set_timer_source(enum samsung_timer_mode event,
|
||||
enum samsung_timer_mode source);
|
||||
|
||||
extern void __init samsung_timer_init(void);
|
||||
|
||||
#endif /* __ASM_PLAT_SAMSUNG_TIME_H */
|
|
@ -2,7 +2,7 @@
|
|||
* Copyright (c) 2011 Samsung Electronics Co., Ltd.
|
||||
* http://www.samsung.com/
|
||||
*
|
||||
* S5P - Common hr-timer support
|
||||
* samsung - Common hr-timer support (s3c and s5p)
|
||||
*
|
||||
* 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
|
||||
|
@ -25,41 +25,41 @@
|
|||
#include <mach/map.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/regs-timer.h>
|
||||
#include <plat/s5p-time.h>
|
||||
#include <plat/samsung-time.h>
|
||||
|
||||
static struct clk *tin_event;
|
||||
static struct clk *tin_source;
|
||||
static struct clk *tdiv_event;
|
||||
static struct clk *tdiv_source;
|
||||
static struct clk *timerclk;
|
||||
static struct s5p_timer_source timer_source;
|
||||
static struct samsung_timer_source timer_source;
|
||||
static unsigned long clock_count_per_tick;
|
||||
static void s5p_timer_resume(void);
|
||||
static void samsung_timer_resume(void);
|
||||
|
||||
static void s5p_time_stop(enum s5p_timer_mode mode)
|
||||
static void samsung_time_stop(enum samsung_timer_mode mode)
|
||||
{
|
||||
unsigned long tcon;
|
||||
|
||||
tcon = __raw_readl(S3C2410_TCON);
|
||||
|
||||
switch (mode) {
|
||||
case S5P_PWM0:
|
||||
case SAMSUNG_PWM0:
|
||||
tcon &= ~S3C2410_TCON_T0START;
|
||||
break;
|
||||
|
||||
case S5P_PWM1:
|
||||
case SAMSUNG_PWM1:
|
||||
tcon &= ~S3C2410_TCON_T1START;
|
||||
break;
|
||||
|
||||
case S5P_PWM2:
|
||||
case SAMSUNG_PWM2:
|
||||
tcon &= ~S3C2410_TCON_T2START;
|
||||
break;
|
||||
|
||||
case S5P_PWM3:
|
||||
case SAMSUNG_PWM3:
|
||||
tcon &= ~S3C2410_TCON_T3START;
|
||||
break;
|
||||
|
||||
case S5P_PWM4:
|
||||
case SAMSUNG_PWM4:
|
||||
tcon &= ~S3C2410_TCON_T4START;
|
||||
break;
|
||||
|
||||
|
@ -70,7 +70,7 @@ static void s5p_time_stop(enum s5p_timer_mode mode)
|
|||
__raw_writel(tcon, S3C2410_TCON);
|
||||
}
|
||||
|
||||
static void s5p_time_setup(enum s5p_timer_mode mode, unsigned long tcnt)
|
||||
static void samsung_time_setup(enum samsung_timer_mode mode, unsigned long tcnt)
|
||||
{
|
||||
unsigned long tcon;
|
||||
|
||||
|
@ -79,27 +79,27 @@ static void s5p_time_setup(enum s5p_timer_mode mode, unsigned long tcnt)
|
|||
tcnt--;
|
||||
|
||||
switch (mode) {
|
||||
case S5P_PWM0:
|
||||
case SAMSUNG_PWM0:
|
||||
tcon &= ~(0x0f << 0);
|
||||
tcon |= S3C2410_TCON_T0MANUALUPD;
|
||||
break;
|
||||
|
||||
case S5P_PWM1:
|
||||
case SAMSUNG_PWM1:
|
||||
tcon &= ~(0x0f << 8);
|
||||
tcon |= S3C2410_TCON_T1MANUALUPD;
|
||||
break;
|
||||
|
||||
case S5P_PWM2:
|
||||
case SAMSUNG_PWM2:
|
||||
tcon &= ~(0x0f << 12);
|
||||
tcon |= S3C2410_TCON_T2MANUALUPD;
|
||||
break;
|
||||
|
||||
case S5P_PWM3:
|
||||
case SAMSUNG_PWM3:
|
||||
tcon &= ~(0x0f << 16);
|
||||
tcon |= S3C2410_TCON_T3MANUALUPD;
|
||||
break;
|
||||
|
||||
case S5P_PWM4:
|
||||
case SAMSUNG_PWM4:
|
||||
tcon &= ~(0x07 << 20);
|
||||
tcon |= S3C2410_TCON_T4MANUALUPD;
|
||||
break;
|
||||
|
@ -114,14 +114,14 @@ static void s5p_time_setup(enum s5p_timer_mode mode, unsigned long tcnt)
|
|||
__raw_writel(tcon, S3C2410_TCON);
|
||||
}
|
||||
|
||||
static void s5p_time_start(enum s5p_timer_mode mode, bool periodic)
|
||||
static void samsung_time_start(enum samsung_timer_mode mode, bool periodic)
|
||||
{
|
||||
unsigned long tcon;
|
||||
|
||||
tcon = __raw_readl(S3C2410_TCON);
|
||||
|
||||
switch (mode) {
|
||||
case S5P_PWM0:
|
||||
case SAMSUNG_PWM0:
|
||||
tcon |= S3C2410_TCON_T0START;
|
||||
tcon &= ~S3C2410_TCON_T0MANUALUPD;
|
||||
|
||||
|
@ -131,7 +131,7 @@ static void s5p_time_start(enum s5p_timer_mode mode, bool periodic)
|
|||
tcon &= ~S3C2410_TCON_T0RELOAD;
|
||||
break;
|
||||
|
||||
case S5P_PWM1:
|
||||
case SAMSUNG_PWM1:
|
||||
tcon |= S3C2410_TCON_T1START;
|
||||
tcon &= ~S3C2410_TCON_T1MANUALUPD;
|
||||
|
||||
|
@ -141,7 +141,7 @@ static void s5p_time_start(enum s5p_timer_mode mode, bool periodic)
|
|||
tcon &= ~S3C2410_TCON_T1RELOAD;
|
||||
break;
|
||||
|
||||
case S5P_PWM2:
|
||||
case SAMSUNG_PWM2:
|
||||
tcon |= S3C2410_TCON_T2START;
|
||||
tcon &= ~S3C2410_TCON_T2MANUALUPD;
|
||||
|
||||
|
@ -151,7 +151,7 @@ static void s5p_time_start(enum s5p_timer_mode mode, bool periodic)
|
|||
tcon &= ~S3C2410_TCON_T2RELOAD;
|
||||
break;
|
||||
|
||||
case S5P_PWM3:
|
||||
case SAMSUNG_PWM3:
|
||||
tcon |= S3C2410_TCON_T3START;
|
||||
tcon &= ~S3C2410_TCON_T3MANUALUPD;
|
||||
|
||||
|
@ -161,7 +161,7 @@ static void s5p_time_start(enum s5p_timer_mode mode, bool periodic)
|
|||
tcon &= ~S3C2410_TCON_T3RELOAD;
|
||||
break;
|
||||
|
||||
case S5P_PWM4:
|
||||
case SAMSUNG_PWM4:
|
||||
tcon |= S3C2410_TCON_T4START;
|
||||
tcon &= ~S3C2410_TCON_T4MANUALUPD;
|
||||
|
||||
|
@ -178,24 +178,24 @@ static void s5p_time_start(enum s5p_timer_mode mode, bool periodic)
|
|||
__raw_writel(tcon, S3C2410_TCON);
|
||||
}
|
||||
|
||||
static int s5p_set_next_event(unsigned long cycles,
|
||||
static int samsung_set_next_event(unsigned long cycles,
|
||||
struct clock_event_device *evt)
|
||||
{
|
||||
s5p_time_setup(timer_source.event_id, cycles);
|
||||
s5p_time_start(timer_source.event_id, NON_PERIODIC);
|
||||
samsung_time_setup(timer_source.event_id, cycles);
|
||||
samsung_time_start(timer_source.event_id, NON_PERIODIC);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void s5p_set_mode(enum clock_event_mode mode,
|
||||
static void samsung_set_mode(enum clock_event_mode mode,
|
||||
struct clock_event_device *evt)
|
||||
{
|
||||
s5p_time_stop(timer_source.event_id);
|
||||
samsung_time_stop(timer_source.event_id);
|
||||
|
||||
switch (mode) {
|
||||
case CLOCK_EVT_MODE_PERIODIC:
|
||||
s5p_time_setup(timer_source.event_id, clock_count_per_tick);
|
||||
s5p_time_start(timer_source.event_id, PERIODIC);
|
||||
samsung_time_setup(timer_source.event_id, clock_count_per_tick);
|
||||
samsung_time_start(timer_source.event_id, PERIODIC);
|
||||
break;
|
||||
|
||||
case CLOCK_EVT_MODE_ONESHOT:
|
||||
|
@ -206,24 +206,24 @@ static void s5p_set_mode(enum clock_event_mode mode,
|
|||
break;
|
||||
|
||||
case CLOCK_EVT_MODE_RESUME:
|
||||
s5p_timer_resume();
|
||||
samsung_timer_resume();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void s5p_timer_resume(void)
|
||||
static void samsung_timer_resume(void)
|
||||
{
|
||||
/* event timer restart */
|
||||
s5p_time_setup(timer_source.event_id, clock_count_per_tick);
|
||||
s5p_time_start(timer_source.event_id, PERIODIC);
|
||||
samsung_time_setup(timer_source.event_id, clock_count_per_tick);
|
||||
samsung_time_start(timer_source.event_id, PERIODIC);
|
||||
|
||||
/* source timer restart */
|
||||
s5p_time_setup(timer_source.source_id, TCNT_MAX);
|
||||
s5p_time_start(timer_source.source_id, PERIODIC);
|
||||
samsung_time_setup(timer_source.source_id, TCNT_MAX);
|
||||
samsung_time_start(timer_source.source_id, PERIODIC);
|
||||
}
|
||||
|
||||
void __init s5p_set_timer_source(enum s5p_timer_mode event,
|
||||
enum s5p_timer_mode source)
|
||||
void __init samsung_set_timer_source(enum samsung_timer_mode event,
|
||||
enum samsung_timer_mode source)
|
||||
{
|
||||
s3c_device_timer[event].dev.bus = &platform_bus_type;
|
||||
s3c_device_timer[source].dev.bus = &platform_bus_type;
|
||||
|
@ -233,14 +233,14 @@ void __init s5p_set_timer_source(enum s5p_timer_mode event,
|
|||
}
|
||||
|
||||
static struct clock_event_device time_event_device = {
|
||||
.name = "s5p_event_timer",
|
||||
.name = "samsung_event_timer",
|
||||
.features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
|
||||
.rating = 200,
|
||||
.set_next_event = s5p_set_next_event,
|
||||
.set_mode = s5p_set_mode,
|
||||
.set_next_event = samsung_set_next_event,
|
||||
.set_mode = samsung_set_mode,
|
||||
};
|
||||
|
||||
static irqreturn_t s5p_clock_event_isr(int irq, void *dev_id)
|
||||
static irqreturn_t samsung_clock_event_isr(int irq, void *dev_id)
|
||||
{
|
||||
struct clock_event_device *evt = dev_id;
|
||||
|
||||
|
@ -249,14 +249,14 @@ static irqreturn_t s5p_clock_event_isr(int irq, void *dev_id)
|
|||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
static struct irqaction s5p_clock_event_irq = {
|
||||
.name = "s5p_time_irq",
|
||||
static struct irqaction samsung_clock_event_irq = {
|
||||
.name = "samsung_time_irq",
|
||||
.flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
|
||||
.handler = s5p_clock_event_isr,
|
||||
.handler = samsung_clock_event_isr,
|
||||
.dev_id = &time_event_device,
|
||||
};
|
||||
|
||||
static void __init s5p_clockevent_init(void)
|
||||
static void __init samsung_clockevent_init(void)
|
||||
{
|
||||
unsigned long pclk;
|
||||
unsigned long clock_rate;
|
||||
|
@ -267,8 +267,8 @@ static void __init s5p_clockevent_init(void)
|
|||
|
||||
tscaler = clk_get_parent(tdiv_event);
|
||||
|
||||
clk_set_rate(tscaler, pclk / 2);
|
||||
clk_set_rate(tdiv_event, pclk / 2);
|
||||
clk_set_rate(tscaler, pclk / TSCALER_DIV);
|
||||
clk_set_rate(tdiv_event, pclk / TDIV);
|
||||
clk_set_parent(tin_event, tdiv_event);
|
||||
|
||||
clock_rate = clk_get_rate(tin_event);
|
||||
|
@ -278,22 +278,22 @@ static void __init s5p_clockevent_init(void)
|
|||
clockevents_config_and_register(&time_event_device, clock_rate, 1, -1);
|
||||
|
||||
irq_number = timer_source.event_id + IRQ_TIMER0;
|
||||
setup_irq(irq_number, &s5p_clock_event_irq);
|
||||
setup_irq(irq_number, &samsung_clock_event_irq);
|
||||
}
|
||||
|
||||
static void __iomem *s5p_timer_reg(void)
|
||||
static void __iomem *samsung_timer_reg(void)
|
||||
{
|
||||
unsigned long offset = 0;
|
||||
|
||||
switch (timer_source.source_id) {
|
||||
case S5P_PWM0:
|
||||
case S5P_PWM1:
|
||||
case S5P_PWM2:
|
||||
case S5P_PWM3:
|
||||
case SAMSUNG_PWM0:
|
||||
case SAMSUNG_PWM1:
|
||||
case SAMSUNG_PWM2:
|
||||
case SAMSUNG_PWM3:
|
||||
offset = (timer_source.source_id * 0x0c) + 0x14;
|
||||
break;
|
||||
|
||||
case S5P_PWM4:
|
||||
case SAMSUNG_PWM4:
|
||||
offset = 0x40;
|
||||
break;
|
||||
|
||||
|
@ -312,9 +312,9 @@ static void __iomem *s5p_timer_reg(void)
|
|||
* this wraps around for now, since it is just a relative time
|
||||
* stamp. (Inspired by U300 implementation.)
|
||||
*/
|
||||
static u32 notrace s5p_read_sched_clock(void)
|
||||
static u32 notrace samsung_read_sched_clock(void)
|
||||
{
|
||||
void __iomem *reg = s5p_timer_reg();
|
||||
void __iomem *reg = samsung_timer_reg();
|
||||
|
||||
if (!reg)
|
||||
return 0;
|
||||
|
@ -322,29 +322,29 @@ static u32 notrace s5p_read_sched_clock(void)
|
|||
return ~__raw_readl(reg);
|
||||
}
|
||||
|
||||
static void __init s5p_clocksource_init(void)
|
||||
static void __init samsung_clocksource_init(void)
|
||||
{
|
||||
unsigned long pclk;
|
||||
unsigned long clock_rate;
|
||||
|
||||
pclk = clk_get_rate(timerclk);
|
||||
|
||||
clk_set_rate(tdiv_source, pclk / 2);
|
||||
clk_set_rate(tdiv_source, pclk / TDIV);
|
||||
clk_set_parent(tin_source, tdiv_source);
|
||||
|
||||
clock_rate = clk_get_rate(tin_source);
|
||||
|
||||
s5p_time_setup(timer_source.source_id, TCNT_MAX);
|
||||
s5p_time_start(timer_source.source_id, PERIODIC);
|
||||
samsung_time_setup(timer_source.source_id, TCNT_MAX);
|
||||
samsung_time_start(timer_source.source_id, PERIODIC);
|
||||
|
||||
setup_sched_clock(s5p_read_sched_clock, 32, clock_rate);
|
||||
setup_sched_clock(samsung_read_sched_clock, TSIZE, clock_rate);
|
||||
|
||||
if (clocksource_mmio_init(s5p_timer_reg(), "s5p_clocksource_timer",
|
||||
clock_rate, 250, 32, clocksource_mmio_readl_down))
|
||||
panic("s5p_clocksource_timer: can't register clocksource\n");
|
||||
if (clocksource_mmio_init(samsung_timer_reg(), "samsung_clocksource_timer",
|
||||
clock_rate, 250, TSIZE, clocksource_mmio_readl_down))
|
||||
panic("samsung_clocksource_timer: can't register clocksource\n");
|
||||
}
|
||||
|
||||
static void __init s5p_timer_resources(void)
|
||||
static void __init samsung_timer_resources(void)
|
||||
{
|
||||
|
||||
unsigned long event_id = timer_source.event_id;
|
||||
|
@ -386,9 +386,9 @@ static void __init s5p_timer_resources(void)
|
|||
clk_enable(tin_source);
|
||||
}
|
||||
|
||||
void __init s5p_timer_init(void)
|
||||
void __init samsung_timer_init(void)
|
||||
{
|
||||
s5p_timer_resources();
|
||||
s5p_clockevent_init();
|
||||
s5p_clocksource_init();
|
||||
samsung_timer_resources();
|
||||
samsung_clockevent_init();
|
||||
samsung_clocksource_init();
|
||||
}
|
|
@ -1,287 +0,0 @@
|
|||
/* 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 @@
|
|||
|
||||
#include <mach/dma.h>
|
||||
|
||||
#include <mach/regs-sdi.h>
|
||||
|
||||
#include <linux/platform_data/mmc-s3cmci.h>
|
||||
|
||||
#include "s3cmci.h"
|
||||
|
||||
#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 {
|
||||
dbg_err = (1 << 0),
|
||||
dbg_debug = (1 << 1),
|
||||
|
|
Loading…
Reference in New Issue