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
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
,
46 struct mmci_platform_data mop500_sdi0_data
= {
48 .capabilities
= MMC_CAP_4_BIT_DATA
|
49 MMC_CAP_SD_HIGHSPEED
|
50 MMC_CAP_MMC_HIGHSPEED
|
55 .sigdir
= MCI_ST_FBCLKEN
|
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
,
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
,
83 struct mmci_platform_data mop500_sdi1_data
= {
84 .ocr_mask
= MMC_VDD_29_30
,
86 .capabilities
= MMC_CAP_4_BIT_DATA
|
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
,
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
,
115 struct mmci_platform_data mop500_sdi2_data
= {
116 .ocr_mask
= MMC_VDD_165_195
,
118 .capabilities
= MMC_CAP_4_BIT_DATA
|
120 MMC_CAP_NONREMOVABLE
|
121 MMC_CAP_MMC_HIGHSPEED
|
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
,
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
,
151 struct mmci_platform_data mop500_sdi4_data
= {
153 .capabilities
= MMC_CAP_4_BIT_DATA
|
155 MMC_CAP_NONREMOVABLE
|
156 MMC_CAP_MMC_HIGHSPEED
|
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
,