|
@@ -15,6 +15,9 @@
|
|
|
#include <linux/spi/spi.h>
|
|
|
#include <linux/spi/flash.h>
|
|
|
#include <linux/io.h>
|
|
|
+#include <linux/mmc/host.h>
|
|
|
+#include <linux/mmc/sh_mmcif.h>
|
|
|
+#include <linux/mfd/sh_mobile_sdhi.h>
|
|
|
#include <cpu/sh7757.h>
|
|
|
#include <asm/sh_eth.h>
|
|
|
#include <asm/heartbeat.h>
|
|
@@ -98,10 +101,80 @@ static struct platform_device sh7757_eth1_device = {
|
|
|
},
|
|
|
};
|
|
|
|
|
|
+/* SH_MMCIF */
|
|
|
+static struct resource sh_mmcif_resources[] = {
|
|
|
+ [0] = {
|
|
|
+ .start = 0xffcb0000,
|
|
|
+ .end = 0xffcb00ff,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ },
|
|
|
+ [1] = {
|
|
|
+ .start = 211,
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
+ },
|
|
|
+ [2] = {
|
|
|
+ .start = 212,
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct sh_mmcif_dma sh7757lcr_mmcif_dma = {
|
|
|
+ .chan_priv_tx = SHDMA_SLAVE_MMCIF_TX,
|
|
|
+ .chan_priv_rx = SHDMA_SLAVE_MMCIF_RX,
|
|
|
+};
|
|
|
+
|
|
|
+static struct sh_mmcif_plat_data sh_mmcif_plat = {
|
|
|
+ .dma = &sh7757lcr_mmcif_dma,
|
|
|
+ .sup_pclk = 0x0f,
|
|
|
+ .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
|
|
|
+ .ocr = MMC_VDD_32_33 | MMC_VDD_33_34,
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device sh_mmcif_device = {
|
|
|
+ .name = "sh_mmcif",
|
|
|
+ .id = 0,
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &sh_mmcif_plat,
|
|
|
+ },
|
|
|
+ .num_resources = ARRAY_SIZE(sh_mmcif_resources),
|
|
|
+ .resource = sh_mmcif_resources,
|
|
|
+};
|
|
|
+
|
|
|
+/* SDHI0 */
|
|
|
+static struct sh_mobile_sdhi_info sdhi_info = {
|
|
|
+ .dma_slave_tx = SHDMA_SLAVE_SDHI_TX,
|
|
|
+ .dma_slave_rx = SHDMA_SLAVE_SDHI_RX,
|
|
|
+ .tmio_caps = MMC_CAP_SD_HIGHSPEED,
|
|
|
+};
|
|
|
+
|
|
|
+static struct resource sdhi_resources[] = {
|
|
|
+ [0] = {
|
|
|
+ .start = 0xffe50000,
|
|
|
+ .end = 0xffe501ff,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ },
|
|
|
+ [1] = {
|
|
|
+ .start = 20,
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device sdhi_device = {
|
|
|
+ .name = "sh_mobile_sdhi",
|
|
|
+ .num_resources = ARRAY_SIZE(sdhi_resources),
|
|
|
+ .resource = sdhi_resources,
|
|
|
+ .id = 0,
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &sdhi_info,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
static struct platform_device *sh7757lcr_devices[] __initdata = {
|
|
|
&heartbeat_device,
|
|
|
&sh7757_eth0_device,
|
|
|
&sh7757_eth1_device,
|
|
|
+ &sh_mmcif_device,
|
|
|
+ &sdhi_device,
|
|
|
};
|
|
|
|
|
|
static struct flash_platform_data spi_flash_data = {
|