Commit 976a62f2 authored by Hyuk Lee's avatar Hyuk Lee Committed by Kukjin Kim

ARM: S5PV210: Add support HSMMC on SMDKV210

This patch adds support HSMMC on SMDKV210, and gpio configuration for
S5PV210 hsmmc3.
Signed-off-by: default avatarHyuk Lee <hyuk1.lee@samsung.com>
Signed-off-by: default avatarKukjin Kim <kgene.kim@samsung.com>
parent 88a1cc43
...@@ -102,6 +102,10 @@ config MACH_SMDKV210 ...@@ -102,6 +102,10 @@ config MACH_SMDKV210
select CPU_S5PV210 select CPU_S5PV210
select ARCH_SPARSEMEM_ENABLE select ARCH_SPARSEMEM_ENABLE
select SAMSUNG_DEV_ADC select SAMSUNG_DEV_ADC
select S3C_DEV_HSMMC
select S3C_DEV_HSMMC1
select S3C_DEV_HSMMC2
select S3C_DEV_HSMMC3
select SAMSUNG_DEV_IDE select SAMSUNG_DEV_IDE
select SAMSUNG_DEV_KEYPAD select SAMSUNG_DEV_KEYPAD
select SAMSUNG_DEV_TS select SAMSUNG_DEV_TS
...@@ -109,6 +113,7 @@ config MACH_SMDKV210 ...@@ -109,6 +113,7 @@ config MACH_SMDKV210
select S5PV210_SETUP_KEYPAD select S5PV210_SETUP_KEYPAD
select HAVE_S3C2410_WATCHDOG select HAVE_S3C2410_WATCHDOG
select S5PV210_SETUP_IDE select S5PV210_SETUP_IDE
select S5PV210_SETUP_SDHCI
help help
Machine support for Samsung SMDKV210 Machine support for Samsung SMDKV210
......
...@@ -87,6 +87,7 @@ void __init s5pv210_map_io(void) ...@@ -87,6 +87,7 @@ void __init s5pv210_map_io(void)
s5pv210_default_sdhci0(); s5pv210_default_sdhci0();
s5pv210_default_sdhci1(); s5pv210_default_sdhci1();
s5pv210_default_sdhci2(); s5pv210_default_sdhci2();
s5pv210_default_sdhci3();
s3c_cfcon_setname("s5pv210-pata"); s3c_cfcon_setname("s5pv210-pata");
......
...@@ -101,6 +101,7 @@ ...@@ -101,6 +101,7 @@
#define S3C_PA_HSMMC0 S5PV210_PA_HSMMC(0) #define S3C_PA_HSMMC0 S5PV210_PA_HSMMC(0)
#define S3C_PA_HSMMC1 S5PV210_PA_HSMMC(1) #define S3C_PA_HSMMC1 S5PV210_PA_HSMMC(1)
#define S3C_PA_HSMMC2 S5PV210_PA_HSMMC(2) #define S3C_PA_HSMMC2 S5PV210_PA_HSMMC(2)
#define S3C_PA_HSMMC3 S5PV210_PA_HSMMC(3)
#define S3C_PA_IIC S5PV210_PA_IIC0 #define S3C_PA_IIC S5PV210_PA_IIC0
#define S3C_PA_IIC1 S5PV210_PA_IIC1 #define S3C_PA_IIC1 S5PV210_PA_IIC1
#define S3C_PA_IIC2 S5PV210_PA_IIC2 #define S3C_PA_IIC2 S5PV210_PA_IIC2
......
...@@ -103,6 +103,10 @@ static struct platform_device *smdkv210_devices[] __initdata = { ...@@ -103,6 +103,10 @@ static struct platform_device *smdkv210_devices[] __initdata = {
&s5pv210_device_ac97, &s5pv210_device_ac97,
&s3c_device_adc, &s3c_device_adc,
&s3c_device_cfcon, &s3c_device_cfcon,
&s3c_device_hsmmc0,
&s3c_device_hsmmc1,
&s3c_device_hsmmc2,
&s3c_device_hsmmc3,
&samsung_device_keypad, &samsung_device_keypad,
&s3c_device_ts, &s3c_device_ts,
&s3c_device_wdt, &s3c_device_wdt,
......
...@@ -102,3 +102,23 @@ void s5pv210_setup_sdhci2_cfg_gpio(struct platform_device *dev, int width) ...@@ -102,3 +102,23 @@ void s5pv210_setup_sdhci2_cfg_gpio(struct platform_device *dev, int width)
s3c_gpio_setpull(S5PV210_GPG2(2), S3C_GPIO_PULL_UP); s3c_gpio_setpull(S5PV210_GPG2(2), S3C_GPIO_PULL_UP);
s3c_gpio_cfgpin(S5PV210_GPG2(2), S3C_GPIO_SFN(2)); s3c_gpio_cfgpin(S5PV210_GPG2(2), S3C_GPIO_SFN(2));
} }
void s5pv210_setup_sdhci3_cfg_gpio(struct platform_device *dev, int width)
{
unsigned int gpio;
/* Set all the necessary GPG3[0:2] pins to special-function 2 */
for (gpio = S5PV210_GPG3(0); gpio < S5PV210_GPG3(2); gpio++) {
s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
}
/* Data pin GPG3[3:6] to special-function 2 */
for (gpio = S5PV210_GPG3(3); gpio <= S5PV210_GPG3(6); gpio++) {
s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
}
s3c_gpio_setpull(S5PV210_GPG3(2), S3C_GPIO_PULL_UP);
s3c_gpio_cfgpin(S5PV210_GPG3(2), S3C_GPIO_SFN(2));
}
...@@ -78,6 +78,7 @@ extern void s3c64xx_setup_sdhci2_cfg_gpio(struct platform_device *, int w); ...@@ -78,6 +78,7 @@ extern void s3c64xx_setup_sdhci2_cfg_gpio(struct platform_device *, int w);
extern void s5pv210_setup_sdhci0_cfg_gpio(struct platform_device *, int w); extern void s5pv210_setup_sdhci0_cfg_gpio(struct platform_device *, int w);
extern void s5pv210_setup_sdhci1_cfg_gpio(struct platform_device *, int w); extern void s5pv210_setup_sdhci1_cfg_gpio(struct platform_device *, int w);
extern void s5pv210_setup_sdhci2_cfg_gpio(struct platform_device *, int w); extern void s5pv210_setup_sdhci2_cfg_gpio(struct platform_device *, int w);
extern void s5pv210_setup_sdhci3_cfg_gpio(struct platform_device *, int w);
/* S3C6400 SDHCI setup */ /* S3C6400 SDHCI setup */
...@@ -266,10 +267,22 @@ static inline void s5pv210_default_sdhci2(void) ...@@ -266,10 +267,22 @@ static inline void s5pv210_default_sdhci2(void)
static inline void s5pv210_default_sdhci2(void) { } static inline void s5pv210_default_sdhci2(void) { }
#endif /* CONFIG_S3C_DEV_HSMMC2 */ #endif /* CONFIG_S3C_DEV_HSMMC2 */
#ifdef CONFIG_S3C_DEV_HSMMC3
static inline void s5pv210_default_sdhci3(void)
{
s3c_hsmmc3_def_platdata.clocks = s5pv210_hsmmc_clksrcs;
s3c_hsmmc3_def_platdata.cfg_gpio = s5pv210_setup_sdhci3_cfg_gpio;
s3c_hsmmc3_def_platdata.cfg_card = s5pv210_setup_sdhci_cfg_card;
}
#else
static inline void s5pv210_default_sdhci3(void) { }
#endif /* CONFIG_S3C_DEV_HSMMC3 */
#else #else
static inline void s5pv210_default_sdhci0(void) { } static inline void s5pv210_default_sdhci0(void) { }
static inline void s5pv210_default_sdhci1(void) { } static inline void s5pv210_default_sdhci1(void) { }
static inline void s5pv210_default_sdhci2(void) { } static inline void s5pv210_default_sdhci2(void) { }
static inline void s5pv210_default_sdhci3(void) { }
#endif /* CONFIG_S5PC100_SETUP_SDHCI */ #endif /* CONFIG_S5PC100_SETUP_SDHCI */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment