aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorMarek Szyprowski <m.szyprowski@samsung.com>2010-08-05 05:00:18 -0400
committerKukjin Kim <kgene.kim@samsung.com>2010-08-05 05:36:22 -0400
commit19b90c7c0fc0d9c9193d38fad180785aa6d7b7e3 (patch)
tree3cd65d7915193fd3c0bcdef1dc50c4da8ca443a7 /arch
parentba3fbef93590e50fec5b044aa87aa5fc89af3e78 (diff)
ARM: S5PV210: Add SDHCI devices for GONI board
This patch add support for SDHCI blocks on Samsung Goni board. The following host controllers are defined: 1. Internal MoviNAND device (permanently wired to the controller) 2. Internal WiFI SDIO device (card is activated by power regualor) 3. External MMC/SD socket (card detection is provided by external gpio interrupt) Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-s5pv210/Kconfig4
-rw-r--r--arch/arm/mach-s5pv210/mach-goni.c39
2 files changed, 43 insertions, 0 deletions
diff --git a/arch/arm/mach-s5pv210/Kconfig b/arch/arm/mach-s5pv210/Kconfig
index a392748dffa0..9b84abf1a822 100644
--- a/arch/arm/mach-s5pv210/Kconfig
+++ b/arch/arm/mach-s5pv210/Kconfig
@@ -74,8 +74,12 @@ config MACH_GONI
74 select CPU_S5PV210 74 select CPU_S5PV210
75 select ARCH_SPARSEMEM_ENABLE 75 select ARCH_SPARSEMEM_ENABLE
76 select S5PV210_SETUP_FB_24BPP 76 select S5PV210_SETUP_FB_24BPP
77 select S5PV210_SETUP_SDHCI
77 select S3C_DEV_FB 78 select S3C_DEV_FB
78 select S5PC110_DEV_ONENAND 79 select S5PC110_DEV_ONENAND
80 select S3C_DEV_HSMMC
81 select S3C_DEV_HSMMC1
82 select S3C_DEV_HSMMC2
79 help 83 help
80 Machine support for Samsung GONI board 84 Machine support for Samsung GONI board
81 S5PC110(MCP) is one of package option of S5PV210 85 S5PC110(MCP) is one of package option of S5PV210
diff --git a/arch/arm/mach-s5pv210/mach-goni.c b/arch/arm/mach-s5pv210/mach-goni.c
index 7b18505e5171..a094b44a43e8 100644
--- a/arch/arm/mach-s5pv210/mach-goni.c
+++ b/arch/arm/mach-s5pv210/mach-goni.c
@@ -35,6 +35,7 @@
35#include <plat/devs.h> 35#include <plat/devs.h>
36#include <plat/cpu.h> 36#include <plat/cpu.h>
37#include <plat/fb.h> 37#include <plat/fb.h>
38#include <plat/sdhci.h>
38 39
39/* Following are default values for UCON, ULCON and UFCON UART registers */ 40/* Following are default values for UCON, ULCON and UFCON UART registers */
40#define S5PV210_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \ 41#define S5PV210_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \
@@ -420,12 +421,47 @@ static void __init goni_pmic_init(void)
420 s3c_gpio_setpull(S5PV210_GPH2(6), S3C_GPIO_PULL_UP); 421 s3c_gpio_setpull(S5PV210_GPH2(6), S3C_GPIO_PULL_UP);
421} 422}
422 423
424/* MoviNAND */
425static struct s3c_sdhci_platdata goni_hsmmc0_data __initdata = {
426 .max_width = 4,
427 .cd_type = S3C_SDHCI_CD_PERMANENT,
428};
429
430/* Wireless LAN */
431static struct s3c_sdhci_platdata goni_hsmmc1_data __initdata = {
432 .max_width = 4,
433 .cd_type = S3C_SDHCI_CD_EXTERNAL,
434 /* ext_cd_{init,cleanup} callbacks will be added later */
435};
436
437/* External Flash */
438#define GONI_EXT_FLASH_EN S5PV210_MP05(4)
439#define GONI_EXT_FLASH_CD S5PV210_GPH3(4)
440static struct s3c_sdhci_platdata goni_hsmmc2_data __initdata = {
441 .max_width = 4,
442 .cd_type = S3C_SDHCI_CD_GPIO,
443 .ext_cd_gpio = GONI_EXT_FLASH_CD,
444 .ext_cd_gpio_invert = 1,
445};
446
447static void goni_setup_sdhci(void)
448{
449 gpio_request(GONI_EXT_FLASH_EN, "FLASH_EN");
450 gpio_direction_output(GONI_EXT_FLASH_EN, 1);
451
452 s3c_sdhci0_set_platdata(&goni_hsmmc0_data);
453 s3c_sdhci1_set_platdata(&goni_hsmmc1_data);
454 s3c_sdhci2_set_platdata(&goni_hsmmc2_data);
455};
423 456
424static struct platform_device *goni_devices[] __initdata = { 457static struct platform_device *goni_devices[] __initdata = {
425 &s3c_device_fb, 458 &s3c_device_fb,
426 &s5pc110_device_onenand, 459 &s5pc110_device_onenand,
427 &goni_i2c_gpio_pmic, 460 &goni_i2c_gpio_pmic,
428 &goni_device_gpiokeys, 461 &goni_device_gpiokeys,
462 &s3c_device_hsmmc0,
463 &s3c_device_hsmmc1,
464 &s3c_device_hsmmc2,
429}; 465};
430 466
431static void __init goni_map_io(void) 467static void __init goni_map_io(void)
@@ -441,6 +477,9 @@ static void __init goni_machine_init(void)
441 goni_pmic_init(); 477 goni_pmic_init();
442 i2c_register_board_info(AP_I2C_GPIO_PMIC_BUS_4, i2c_gpio_pmic_devs, 478 i2c_register_board_info(AP_I2C_GPIO_PMIC_BUS_4, i2c_gpio_pmic_devs,
443 ARRAY_SIZE(i2c_gpio_pmic_devs)); 479 ARRAY_SIZE(i2c_gpio_pmic_devs));
480 /* SDHCI */
481 goni_setup_sdhci();
482
444 /* FB */ 483 /* FB */
445 s3c_fb_set_platdata(&goni_lcd_pdata); 484 s3c_fb_set_platdata(&goni_lcd_pdata);
446 485