Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris...
[linux/fpc-iii.git] / arch / arm / mach-ux500 / board-mop500-sdi.c
blobfcbf3a13a5392235a9343fb44b66f2891bdb38c4
1 /*
2 * Copyright (C) ST-Ericsson SA 2010
4 * Author: Hanumath Prasad <hanumath.prasad@stericsson.com>
5 * License terms: GNU General Public License (GPL) version 2
6 */
8 #include <linux/kernel.h>
9 #include <linux/gpio.h>
10 #include <linux/amba/bus.h>
11 #include <linux/amba/mmci.h>
12 #include <linux/mmc/host.h>
13 #include <linux/platform_device.h>
14 #include <linux/platform_data/dma-ste-dma40.h>
16 #include <asm/mach-types.h>
18 #include "db8500-regs.h"
19 #include "board-mop500.h"
20 #include "ste-dma40-db8500.h"
23 * v2 has a new version of this block that need to be forced, the number found
24 * in hardware is incorrect
26 #define U8500_SDI_V2_PERIPHID 0x10480180
29 * SDI 0 (MicroSD slot)
32 #ifdef CONFIG_STE_DMA40
33 struct stedma40_chan_cfg mop500_sdi0_dma_cfg_rx = {
34 .mode = STEDMA40_MODE_LOGICAL,
35 .dir = DMA_DEV_TO_MEM,
36 .dev_type = DB8500_DMA_DEV29_SD_MM0,
39 static struct stedma40_chan_cfg mop500_sdi0_dma_cfg_tx = {
40 .mode = STEDMA40_MODE_LOGICAL,
41 .dir = DMA_MEM_TO_DEV,
42 .dev_type = DB8500_DMA_DEV29_SD_MM0,
44 #endif
46 struct mmci_platform_data mop500_sdi0_data = {
47 .f_max = 100000000,
48 .capabilities = MMC_CAP_4_BIT_DATA |
49 MMC_CAP_SD_HIGHSPEED |
50 MMC_CAP_MMC_HIGHSPEED |
51 MMC_CAP_ERASE |
52 MMC_CAP_UHS_SDR12 |
53 MMC_CAP_UHS_SDR25,
54 .gpio_wp = -1,
55 .sigdir = MCI_ST_FBCLKEN |
56 MCI_ST_CMDDIREN |
57 MCI_ST_DATA0DIREN |
58 MCI_ST_DATA2DIREN,
59 #ifdef CONFIG_STE_DMA40
60 .dma_filter = stedma40_filter,
61 .dma_rx_param = &mop500_sdi0_dma_cfg_rx,
62 .dma_tx_param = &mop500_sdi0_dma_cfg_tx,
63 #endif
67 * SDI1 (SDIO WLAN)
69 #ifdef CONFIG_STE_DMA40
70 static struct stedma40_chan_cfg sdi1_dma_cfg_rx = {
71 .mode = STEDMA40_MODE_LOGICAL,
72 .dir = DMA_DEV_TO_MEM,
73 .dev_type = DB8500_DMA_DEV32_SD_MM1,
76 static struct stedma40_chan_cfg sdi1_dma_cfg_tx = {
77 .mode = STEDMA40_MODE_LOGICAL,
78 .dir = DMA_MEM_TO_DEV,
79 .dev_type = DB8500_DMA_DEV32_SD_MM1,
81 #endif
83 struct mmci_platform_data mop500_sdi1_data = {
84 .ocr_mask = MMC_VDD_29_30,
85 .f_max = 100000000,
86 .capabilities = MMC_CAP_4_BIT_DATA |
87 MMC_CAP_NONREMOVABLE,
88 .gpio_cd = -1,
89 .gpio_wp = -1,
90 #ifdef CONFIG_STE_DMA40
91 .dma_filter = stedma40_filter,
92 .dma_rx_param = &sdi1_dma_cfg_rx,
93 .dma_tx_param = &sdi1_dma_cfg_tx,
94 #endif
98 * SDI 2 (POP eMMC, not on DB8500ed)
101 #ifdef CONFIG_STE_DMA40
102 struct stedma40_chan_cfg mop500_sdi2_dma_cfg_rx = {
103 .mode = STEDMA40_MODE_LOGICAL,
104 .dir = DMA_DEV_TO_MEM,
105 .dev_type = DB8500_DMA_DEV28_SD_MM2,
108 static struct stedma40_chan_cfg mop500_sdi2_dma_cfg_tx = {
109 .mode = STEDMA40_MODE_LOGICAL,
110 .dir = DMA_MEM_TO_DEV,
111 .dev_type = DB8500_DMA_DEV28_SD_MM2,
113 #endif
115 struct mmci_platform_data mop500_sdi2_data = {
116 .ocr_mask = MMC_VDD_165_195,
117 .f_max = 100000000,
118 .capabilities = MMC_CAP_4_BIT_DATA |
119 MMC_CAP_8_BIT_DATA |
120 MMC_CAP_NONREMOVABLE |
121 MMC_CAP_MMC_HIGHSPEED |
122 MMC_CAP_ERASE |
123 MMC_CAP_CMD23,
124 .gpio_cd = -1,
125 .gpio_wp = -1,
126 #ifdef CONFIG_STE_DMA40
127 .dma_filter = stedma40_filter,
128 .dma_rx_param = &mop500_sdi2_dma_cfg_rx,
129 .dma_tx_param = &mop500_sdi2_dma_cfg_tx,
130 #endif
134 * SDI 4 (on-board eMMC)
137 #ifdef CONFIG_STE_DMA40
138 struct stedma40_chan_cfg mop500_sdi4_dma_cfg_rx = {
139 .mode = STEDMA40_MODE_LOGICAL,
140 .dir = DMA_DEV_TO_MEM,
141 .dev_type = DB8500_DMA_DEV42_SD_MM4,
144 static struct stedma40_chan_cfg mop500_sdi4_dma_cfg_tx = {
145 .mode = STEDMA40_MODE_LOGICAL,
146 .dir = DMA_MEM_TO_DEV,
147 .dev_type = DB8500_DMA_DEV42_SD_MM4,
149 #endif
151 struct mmci_platform_data mop500_sdi4_data = {
152 .f_max = 100000000,
153 .capabilities = MMC_CAP_4_BIT_DATA |
154 MMC_CAP_8_BIT_DATA |
155 MMC_CAP_NONREMOVABLE |
156 MMC_CAP_MMC_HIGHSPEED |
157 MMC_CAP_ERASE |
158 MMC_CAP_CMD23,
159 .gpio_cd = -1,
160 .gpio_wp = -1,
161 #ifdef CONFIG_STE_DMA40
162 .dma_filter = stedma40_filter,
163 .dma_rx_param = &mop500_sdi4_dma_cfg_rx,
164 .dma_tx_param = &mop500_sdi4_dma_cfg_tx,
165 #endif