aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-ux500/board-mop500-sdi.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-ux500/board-mop500-sdi.c')
-rw-r--r--arch/arm/mach-ux500/board-mop500-sdi.c65
1 files changed, 7 insertions, 58 deletions
diff --git a/arch/arm/mach-ux500/board-mop500-sdi.c b/arch/arm/mach-ux500/board-mop500-sdi.c
index d1ae6a09979d..68c8375e45c6 100644
--- a/arch/arm/mach-ux500/board-mop500-sdi.c
+++ b/arch/arm/mach-ux500/board-mop500-sdi.c
@@ -12,59 +12,14 @@
12#include <linux/mmc/host.h> 12#include <linux/mmc/host.h>
13#include <linux/platform_device.h> 13#include <linux/platform_device.h>
14 14
15#include <plat/pincfg.h>
16#include <plat/ste_dma40.h> 15#include <plat/ste_dma40.h>
17#include <mach/devices.h> 16#include <mach/devices.h>
18#include <mach/hardware.h> 17#include <mach/hardware.h>
19 18
20#include "devices-db8500.h" 19#include "devices-db8500.h"
21#include "pins-db8500.h"
22#include "board-mop500.h" 20#include "board-mop500.h"
23#include "ste-dma40-db8500.h" 21#include "ste-dma40-db8500.h"
24 22
25static pin_cfg_t mop500_sdi_pins[] = {
26 /* SDI0 (MicroSD slot) */
27 GPIO18_MC0_CMDDIR,
28 GPIO19_MC0_DAT0DIR,
29 GPIO20_MC0_DAT2DIR,
30 GPIO21_MC0_DAT31DIR,
31 GPIO22_MC0_FBCLK,
32 GPIO23_MC0_CLK,
33 GPIO24_MC0_CMD,
34 GPIO25_MC0_DAT0,
35 GPIO26_MC0_DAT1,
36 GPIO27_MC0_DAT2,
37 GPIO28_MC0_DAT3,
38
39 /* SDI4 (on-board eMMC) */
40 GPIO197_MC4_DAT3,
41 GPIO198_MC4_DAT2,
42 GPIO199_MC4_DAT1,
43 GPIO200_MC4_DAT0,
44 GPIO201_MC4_CMD,
45 GPIO202_MC4_FBCLK,
46 GPIO203_MC4_CLK,
47 GPIO204_MC4_DAT7,
48 GPIO205_MC4_DAT6,
49 GPIO206_MC4_DAT5,
50 GPIO207_MC4_DAT4,
51};
52
53static pin_cfg_t mop500_sdi2_pins[] = {
54 /* SDI2 (POP eMMC) */
55 GPIO128_MC2_CLK,
56 GPIO129_MC2_CMD,
57 GPIO130_MC2_FBCLK,
58 GPIO131_MC2_DAT0,
59 GPIO132_MC2_DAT1,
60 GPIO133_MC2_DAT2,
61 GPIO134_MC2_DAT3,
62 GPIO135_MC2_DAT4,
63 GPIO136_MC2_DAT5,
64 GPIO137_MC2_DAT6,
65 GPIO138_MC2_DAT7,
66};
67
68/* 23/*
69 * SDI 0 (MicroSD slot) 24 * SDI 0 (MicroSD slot)
70 */ 25 */
@@ -216,22 +171,16 @@ static struct mmci_platform_data mop500_sdi4_data = {
216 171
217void __init mop500_sdi_init(void) 172void __init mop500_sdi_init(void)
218{ 173{
219 nmk_config_pins(mop500_sdi_pins, ARRAY_SIZE(mop500_sdi_pins)); 174 /* PoP:ed eMMC on top of DB8500 v1.0 has problems with high speed */
175 if (!cpu_is_u8500v10())
176 mop500_sdi2_data.capabilities |= MMC_CAP_MMC_HIGHSPEED;
177 db8500_add_sdi2(&mop500_sdi2_data);
178
179 /* On-board eMMC */
180 db8500_add_sdi4(&mop500_sdi4_data);
220 181
221 /* 182 /*
222 * sdi0 will finally be added when the TC35892 initializes and calls 183 * sdi0 will finally be added when the TC35892 initializes and calls
223 * mop500_sdi_tc35892_init() above. 184 * mop500_sdi_tc35892_init() above.
224 */ 185 */
225
226 /* PoP:ed eMMC */
227 if (!cpu_is_u8500ed()) {
228 nmk_config_pins(mop500_sdi2_pins, ARRAY_SIZE(mop500_sdi2_pins));
229 /* POP eMMC on v1.0 has problems with high speed */
230 if (!cpu_is_u8500v10())
231 mop500_sdi2_data.capabilities |= MMC_CAP_MMC_HIGHSPEED;
232 db8500_add_sdi2(&mop500_sdi2_data);
233 }
234
235 /* On-board eMMC */
236 db8500_add_sdi4(&mop500_sdi4_data);
237} 186}