提交 19b90c7c 编写于 作者: M Marek Szyprowski 提交者: Kukjin Kim

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: NMarek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: NKyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: NKukjin Kim <kgene.kim@samsung.com>
上级 ba3fbef9
...@@ -74,8 +74,12 @@ config MACH_GONI ...@@ -74,8 +74,12 @@ config MACH_GONI
select CPU_S5PV210 select CPU_S5PV210
select ARCH_SPARSEMEM_ENABLE select ARCH_SPARSEMEM_ENABLE
select S5PV210_SETUP_FB_24BPP select S5PV210_SETUP_FB_24BPP
select S5PV210_SETUP_SDHCI
select S3C_DEV_FB select S3C_DEV_FB
select S5PC110_DEV_ONENAND select S5PC110_DEV_ONENAND
select S3C_DEV_HSMMC
select S3C_DEV_HSMMC1
select S3C_DEV_HSMMC2
help help
Machine support for Samsung GONI board Machine support for Samsung GONI board
S5PC110(MCP) is one of package option of S5PV210 S5PC110(MCP) is one of package option of S5PV210
......
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/fb.h> #include <plat/fb.h>
#include <plat/sdhci.h>
/* Following are default values for UCON, ULCON and UFCON UART registers */ /* Following are default values for UCON, ULCON and UFCON UART registers */
#define S5PV210_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \ #define S5PV210_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \
...@@ -420,12 +421,47 @@ static void __init goni_pmic_init(void) ...@@ -420,12 +421,47 @@ static void __init goni_pmic_init(void)
s3c_gpio_setpull(S5PV210_GPH2(6), S3C_GPIO_PULL_UP); s3c_gpio_setpull(S5PV210_GPH2(6), S3C_GPIO_PULL_UP);
} }
/* MoviNAND */
static struct s3c_sdhci_platdata goni_hsmmc0_data __initdata = {
.max_width = 4,
.cd_type = S3C_SDHCI_CD_PERMANENT,
};
/* Wireless LAN */
static struct s3c_sdhci_platdata goni_hsmmc1_data __initdata = {
.max_width = 4,
.cd_type = S3C_SDHCI_CD_EXTERNAL,
/* ext_cd_{init,cleanup} callbacks will be added later */
};
/* External Flash */
#define GONI_EXT_FLASH_EN S5PV210_MP05(4)
#define GONI_EXT_FLASH_CD S5PV210_GPH3(4)
static struct s3c_sdhci_platdata goni_hsmmc2_data __initdata = {
.max_width = 4,
.cd_type = S3C_SDHCI_CD_GPIO,
.ext_cd_gpio = GONI_EXT_FLASH_CD,
.ext_cd_gpio_invert = 1,
};
static void goni_setup_sdhci(void)
{
gpio_request(GONI_EXT_FLASH_EN, "FLASH_EN");
gpio_direction_output(GONI_EXT_FLASH_EN, 1);
s3c_sdhci0_set_platdata(&goni_hsmmc0_data);
s3c_sdhci1_set_platdata(&goni_hsmmc1_data);
s3c_sdhci2_set_platdata(&goni_hsmmc2_data);
};
static struct platform_device *goni_devices[] __initdata = { static struct platform_device *goni_devices[] __initdata = {
&s3c_device_fb, &s3c_device_fb,
&s5pc110_device_onenand, &s5pc110_device_onenand,
&goni_i2c_gpio_pmic, &goni_i2c_gpio_pmic,
&goni_device_gpiokeys, &goni_device_gpiokeys,
&s3c_device_hsmmc0,
&s3c_device_hsmmc1,
&s3c_device_hsmmc2,
}; };
static void __init goni_map_io(void) static void __init goni_map_io(void)
...@@ -441,6 +477,9 @@ static void __init goni_machine_init(void) ...@@ -441,6 +477,9 @@ static void __init goni_machine_init(void)
goni_pmic_init(); goni_pmic_init();
i2c_register_board_info(AP_I2C_GPIO_PMIC_BUS_4, i2c_gpio_pmic_devs, i2c_register_board_info(AP_I2C_GPIO_PMIC_BUS_4, i2c_gpio_pmic_devs,
ARRAY_SIZE(i2c_gpio_pmic_devs)); ARRAY_SIZE(i2c_gpio_pmic_devs));
/* SDHCI */
goni_setup_sdhci();
/* FB */ /* FB */
s3c_fb_set_platdata(&goni_lcd_pdata); s3c_fb_set_platdata(&goni_lcd_pdata);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册