summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilippe Langlais <philippe.langlais@linaro.org>2011-03-22 14:27:12 +0100
committerUlf Hansson <ulf.hansson@stericsson.com>2011-09-19 15:14:36 +0200
commit7179c4df2ce5172bfcb261b26c71a2ac2b6f19fc (patch)
tree57efe534952d6cf296ad2a0ce7d9c8de813db04b
parent532f68fd2ac840819f3283d8bc14748b3c255ebc (diff)
mach-ux500: Add SDIO WLAN support on sdi1
-rw-r--r--arch/arm/mach-ux500/board-mop500-sdi.c49
1 files changed, 47 insertions, 2 deletions
diff --git a/arch/arm/mach-ux500/board-mop500-sdi.c b/arch/arm/mach-ux500/board-mop500-sdi.c
index d0cb9e5eb87..92e2e0a5e7e 100644
--- a/arch/arm/mach-ux500/board-mop500-sdi.c
+++ b/arch/arm/mach-ux500/board-mop500-sdi.c
@@ -20,6 +20,7 @@
#include "devices-db8500.h"
#include "board-mop500.h"
#include "ste-dma40-db8500.h"
+#include "../../../drivers/mmc/host/mmci.h" /* to avoid MCI_ST* redefinition */
/*
* SDI 0 (MicroSD slot)
@@ -59,8 +60,8 @@ static u32 mop500_sdi0_vdd_handler(struct device *dev, unsigned int vdd,
break;
}
- return MCI_FBCLKEN | MCI_CMDDIREN | MCI_DATA0DIREN |
- MCI_DATA2DIREN | MCI_DATA31DIREN;
+ return MCI_ST_FBCLKEN | MCI_ST_CMDDIREN | MCI_ST_DATA0DIREN |
+ MCI_ST_DATA2DIREN;
}
#ifdef CONFIG_STE_DMA40
@@ -132,6 +133,50 @@ void mop500_sdi_tc35892_init(void)
}
/*
+ * SDI1 (SDIO WLAN)
+ */
+#ifdef CONFIG_STE_DMA40
+#ifdef MMC_WITH_DMA
+static struct stedma40_chan_cfg sdi1_dma_cfg_rx = {
+ .dir = STEDMA40_PERIPH_TO_MEM,
+ .src_dev_type = DB8500_DMA_DEV32_SD_MM1_RX,
+ .dst_dev_type = STEDMA40_DEV_DST_MEMORY,
+ .src_info.data_width = STEDMA40_WORD_WIDTH,
+ .dst_info.data_width = STEDMA40_WORD_WIDTH,
+};
+
+static struct stedma40_chan_cfg sdi1_dma_cfg_tx = {
+ .dir = STEDMA40_MEM_TO_PERIPH,
+ .src_dev_type = STEDMA40_DEV_SRC_MEMORY,
+ .dst_dev_type = DB8500_DMA_DEV32_SD_MM1_TX,
+ .src_info.data_width = STEDMA40_WORD_WIDTH,
+ .dst_info.data_width = STEDMA40_WORD_WIDTH,
+};
+#endif
+#endif
+
+/*
+ * TODO 1: SDIO power management not fully supported.
+ * TODO 2: SDIO with DMA not yet supported.
+ */
+static struct mmci_platform_data mop500_sdi1_data = {
+ .ocr_mask = MMC_VDD_29_30,
+ .f_max = 15000000,
+ .capabilities = MMC_CAP_4_BIT_DATA |
+ MMC_CAP_SDIO_IRQ |
+ MMC_CAP_BROKEN_SDIO_CMD53,
+ .gpio_cd = -1,
+ .gpio_wp = -1,
+#ifdef MMC_WITH_DMA /* To be verified. */
+#ifdef CONFIG_STE_DMA40
+ .dma_filter = stedma40_filter,
+ .dma_rx_param = &sdi1_dma_cfg_rx,
+ .dma_tx_param = &sdi1_dma_cfg_tx,
+#endif
+#endif
+};
+
+/*
* SDI 2 (POP eMMC, not on DB8500ed)
*/