diff options
Diffstat (limited to 'arch/arm/mach-s3c2416')
-rw-r--r-- | arch/arm/mach-s3c2416/Kconfig | 1 | ||||
-rw-r--r-- | arch/arm/mach-s3c2416/clock.c | 29 | ||||
-rw-r--r-- | arch/arm/mach-s3c2416/s3c2416.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-s3c2416/setup-sdhci.c | 37 |
4 files changed, 30 insertions, 41 deletions
diff --git a/arch/arm/mach-s3c2416/Kconfig b/arch/arm/mach-s3c2416/Kconfig index 69b48a7d1dbd..84c7b03e5a30 100644 --- a/arch/arm/mach-s3c2416/Kconfig +++ b/arch/arm/mach-s3c2416/Kconfig | |||
@@ -13,7 +13,6 @@ config CPU_S3C2416 | |||
13 | select CPU_ARM926T | 13 | select CPU_ARM926T |
14 | select S3C2416_DMA if S3C2410_DMA | 14 | select S3C2416_DMA if S3C2410_DMA |
15 | select CPU_LLSERIAL_S3C2440 | 15 | select CPU_LLSERIAL_S3C2440 |
16 | select S3C_GPIO_PULL_UPDOWN | ||
17 | select SAMSUNG_CLKSRC | 16 | select SAMSUNG_CLKSRC |
18 | select S3C2443_CLOCK | 17 | select S3C2443_CLOCK |
19 | help | 18 | help |
diff --git a/arch/arm/mach-s3c2416/clock.c b/arch/arm/mach-s3c2416/clock.c index 21a5e81f0ab5..72b7c6274c79 100644 --- a/arch/arm/mach-s3c2416/clock.c +++ b/arch/arm/mach-s3c2416/clock.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <plat/cpu.h> | 21 | #include <plat/cpu.h> |
22 | 22 | ||
23 | #include <plat/cpu-freq.h> | 23 | #include <plat/cpu-freq.h> |
24 | #include <plat/pll6553x.h> | ||
25 | #include <plat/pll.h> | 24 | #include <plat/pll.h> |
26 | 25 | ||
27 | #include <asm/mach/map.h> | 26 | #include <asm/mach/map.h> |
@@ -38,6 +37,32 @@ static unsigned int armdiv[8] = { | |||
38 | [7] = 8, | 37 | [7] = 8, |
39 | }; | 38 | }; |
40 | 39 | ||
40 | static struct clksrc_clk hsspi_eplldiv = { | ||
41 | .clk = { | ||
42 | .name = "hsspi-eplldiv", | ||
43 | .parent = &clk_esysclk.clk, | ||
44 | .ctrlbit = (1 << 14), | ||
45 | .enable = s3c2443_clkcon_enable_s, | ||
46 | }, | ||
47 | .reg_div = { .reg = S3C2443_CLKDIV1, .size = 2, .shift = 24 }, | ||
48 | }; | ||
49 | |||
50 | static struct clk *hsspi_sources[] = { | ||
51 | [0] = &hsspi_eplldiv.clk, | ||
52 | [1] = NULL, /* to fix */ | ||
53 | }; | ||
54 | |||
55 | static struct clksrc_clk hsspi_mux = { | ||
56 | .clk = { | ||
57 | .name = "hsspi-if", | ||
58 | }, | ||
59 | .sources = &(struct clksrc_sources) { | ||
60 | .sources = hsspi_sources, | ||
61 | .nr_sources = ARRAY_SIZE(hsspi_sources), | ||
62 | }, | ||
63 | .reg_src = { .reg = S3C2443_CLKSRC, .size = 1, .shift = 18 }, | ||
64 | }; | ||
65 | |||
41 | static struct clksrc_clk hsmmc_div[] = { | 66 | static struct clksrc_clk hsmmc_div[] = { |
42 | [0] = { | 67 | [0] = { |
43 | .clk = { | 68 | .clk = { |
@@ -114,6 +139,8 @@ void __init_or_cpufreq s3c2416_setup_clocks(void) | |||
114 | 139 | ||
115 | 140 | ||
116 | static struct clksrc_clk *clksrcs[] __initdata = { | 141 | static struct clksrc_clk *clksrcs[] __initdata = { |
142 | &hsspi_eplldiv, | ||
143 | &hsspi_mux, | ||
117 | &hsmmc_div[0], | 144 | &hsmmc_div[0], |
118 | &hsmmc_div[1], | 145 | &hsmmc_div[1], |
119 | &hsmmc_mux[0], | 146 | &hsmmc_mux[0], |
diff --git a/arch/arm/mach-s3c2416/s3c2416.c b/arch/arm/mach-s3c2416/s3c2416.c index 494ce913dc95..3156b7a71371 100644 --- a/arch/arm/mach-s3c2416/s3c2416.c +++ b/arch/arm/mach-s3c2416/s3c2416.c | |||
@@ -118,8 +118,8 @@ void __init s3c2416_init_uarts(struct s3c2410_uartcfg *cfg, int no) | |||
118 | 118 | ||
119 | void __init s3c2416_map_io(void) | 119 | void __init s3c2416_map_io(void) |
120 | { | 120 | { |
121 | s3c24xx_gpiocfg_default.set_pull = s3c_gpio_setpull_updown; | 121 | s3c24xx_gpiocfg_default.set_pull = samsung_gpio_setpull_updown; |
122 | s3c24xx_gpiocfg_default.get_pull = s3c_gpio_getpull_updown; | 122 | s3c24xx_gpiocfg_default.get_pull = samsung_gpio_getpull_updown; |
123 | 123 | ||
124 | /* initialize device information early */ | 124 | /* initialize device information early */ |
125 | s3c2416_default_sdhci0(); | 125 | s3c2416_default_sdhci0(); |
diff --git a/arch/arm/mach-s3c2416/setup-sdhci.c b/arch/arm/mach-s3c2416/setup-sdhci.c index ed34fad8f2c6..cee53955eb02 100644 --- a/arch/arm/mach-s3c2416/setup-sdhci.c +++ b/arch/arm/mach-s3c2416/setup-sdhci.c | |||
@@ -12,17 +12,7 @@ | |||
12 | * published by the Free Software Foundation. | 12 | * published by the Free Software Foundation. |
13 | */ | 13 | */ |
14 | 14 | ||
15 | #include <linux/kernel.h> | ||
16 | #include <linux/types.h> | 15 | #include <linux/types.h> |
17 | #include <linux/interrupt.h> | ||
18 | #include <linux/platform_device.h> | ||
19 | #include <linux/io.h> | ||
20 | |||
21 | #include <linux/mmc/card.h> | ||
22 | #include <linux/mmc/host.h> | ||
23 | |||
24 | #include <plat/regs-sdhci.h> | ||
25 | #include <plat/sdhci.h> | ||
26 | 16 | ||
27 | /* clock sources for the mmc bus clock, order as for the ctrl2[5..4] */ | 17 | /* clock sources for the mmc bus clock, order as for the ctrl2[5..4] */ |
28 | 18 | ||
@@ -32,30 +22,3 @@ char *s3c2416_hsmmc_clksrcs[4] = { | |||
32 | [2] = "hsmmc-if", | 22 | [2] = "hsmmc-if", |
33 | /* [3] = "48m", - note not successfully used yet */ | 23 | /* [3] = "48m", - note not successfully used yet */ |
34 | }; | 24 | }; |
35 | |||
36 | void s3c2416_setup_sdhci_cfg_card(struct platform_device *dev, | ||
37 | void __iomem *r, | ||
38 | struct mmc_ios *ios, | ||
39 | struct mmc_card *card) | ||
40 | { | ||
41 | u32 ctrl2, ctrl3; | ||
42 | |||
43 | ctrl2 = __raw_readl(r + S3C_SDHCI_CONTROL2); | ||
44 | ctrl2 &= S3C_SDHCI_CTRL2_SELBASECLK_MASK; | ||
45 | ctrl2 |= (S3C64XX_SDHCI_CTRL2_ENSTAASYNCCLR | | ||
46 | S3C64XX_SDHCI_CTRL2_ENCMDCNFMSK | | ||
47 | S3C_SDHCI_CTRL2_ENFBCLKRX | | ||
48 | S3C_SDHCI_CTRL2_DFCNT_NONE | | ||
49 | S3C_SDHCI_CTRL2_ENCLKOUTHOLD); | ||
50 | |||
51 | if (ios->clock < 25 * 1000000) | ||
52 | ctrl3 = (S3C_SDHCI_CTRL3_FCSEL3 | | ||
53 | S3C_SDHCI_CTRL3_FCSEL2 | | ||
54 | S3C_SDHCI_CTRL3_FCSEL1 | | ||
55 | S3C_SDHCI_CTRL3_FCSEL0); | ||
56 | else | ||
57 | ctrl3 = (S3C_SDHCI_CTRL3_FCSEL1 | S3C_SDHCI_CTRL3_FCSEL0); | ||
58 | |||
59 | __raw_writel(ctrl2, r + S3C_SDHCI_CONTROL2); | ||
60 | __raw_writel(ctrl3, r + S3C_SDHCI_CONTROL3); | ||
61 | } | ||