diff options
23 files changed, 67 insertions, 61 deletions
diff --git a/arch/arm/mach-omap2/board-2430sdp.c b/arch/arm/mach-omap2/board-2430sdp.c index 8538e4131d27..fc178a022dd2 100644 --- a/arch/arm/mach-omap2/board-2430sdp.c +++ b/arch/arm/mach-omap2/board-2430sdp.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/mtd/mtd.h> | 19 | #include <linux/mtd/mtd.h> |
20 | #include <linux/mtd/partitions.h> | 20 | #include <linux/mtd/partitions.h> |
21 | #include <linux/mtd/physmap.h> | 21 | #include <linux/mtd/physmap.h> |
22 | #include <linux/mmc/host.h> | ||
22 | #include <linux/delay.h> | 23 | #include <linux/delay.h> |
23 | #include <linux/i2c/twl.h> | 24 | #include <linux/i2c/twl.h> |
24 | #include <linux/err.h> | 25 | #include <linux/err.h> |
@@ -190,7 +191,7 @@ static int __init omap2430_i2c_init(void) | |||
190 | static struct omap2_hsmmc_info mmc[] __initdata = { | 191 | static struct omap2_hsmmc_info mmc[] __initdata = { |
191 | { | 192 | { |
192 | .mmc = 1, | 193 | .mmc = 1, |
193 | .wires = 4, | 194 | .caps = MMC_CAP_4_BIT_DATA, |
194 | .gpio_cd = -EINVAL, | 195 | .gpio_cd = -EINVAL, |
195 | .gpio_wp = -EINVAL, | 196 | .gpio_wp = -EINVAL, |
196 | .ext_clock = 1, | 197 | .ext_clock = 1, |
diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c index 67b95b5f1a2f..3eb9839e33ed 100644 --- a/arch/arm/mach-omap2/board-3430sdp.c +++ b/arch/arm/mach-omap2/board-3430sdp.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/regulator/machine.h> | 24 | #include <linux/regulator/machine.h> |
25 | #include <linux/io.h> | 25 | #include <linux/io.h> |
26 | #include <linux/gpio.h> | 26 | #include <linux/gpio.h> |
27 | #include <linux/mmc/host.h> | ||
27 | 28 | ||
28 | #include <mach/hardware.h> | 29 | #include <mach/hardware.h> |
29 | #include <asm/mach-types.h> | 30 | #include <asm/mach-types.h> |
@@ -353,12 +354,12 @@ static struct omap2_hsmmc_info mmc[] = { | |||
353 | /* 8 bits (default) requires S6.3 == ON, | 354 | /* 8 bits (default) requires S6.3 == ON, |
354 | * so the SIM card isn't used; else 4 bits. | 355 | * so the SIM card isn't used; else 4 bits. |
355 | */ | 356 | */ |
356 | .wires = 8, | 357 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
357 | .gpio_wp = 4, | 358 | .gpio_wp = 4, |
358 | }, | 359 | }, |
359 | { | 360 | { |
360 | .mmc = 2, | 361 | .mmc = 2, |
361 | .wires = 8, | 362 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
362 | .gpio_wp = 7, | 363 | .gpio_wp = 7, |
363 | }, | 364 | }, |
364 | {} /* Terminator */ | 365 | {} /* Terminator */ |
diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c index 9447644774c2..e379bef1ef40 100644 --- a/arch/arm/mach-omap2/board-4430sdp.c +++ b/arch/arm/mach-omap2/board-4430sdp.c | |||
@@ -193,12 +193,12 @@ static struct omap_musb_board_data musb_board_data = { | |||
193 | static struct omap2_hsmmc_info mmc[] = { | 193 | static struct omap2_hsmmc_info mmc[] = { |
194 | { | 194 | { |
195 | .mmc = 1, | 195 | .mmc = 1, |
196 | .wires = 8, | 196 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
197 | .gpio_wp = -EINVAL, | 197 | .gpio_wp = -EINVAL, |
198 | }, | 198 | }, |
199 | { | 199 | { |
200 | .mmc = 2, | 200 | .mmc = 2, |
201 | .wires = 8, | 201 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
202 | .gpio_cd = -EINVAL, | 202 | .gpio_cd = -EINVAL, |
203 | .gpio_wp = -EINVAL, | 203 | .gpio_wp = -EINVAL, |
204 | .nonremovable = true, | 204 | .nonremovable = true, |
diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c index e10bc109415c..b72009a50f01 100644 --- a/arch/arm/mach-omap2/board-cm-t35.c +++ b/arch/arm/mach-omap2/board-cm-t35.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <linux/i2c/at24.h> | 31 | #include <linux/i2c/at24.h> |
32 | #include <linux/i2c/twl.h> | 32 | #include <linux/i2c/twl.h> |
33 | #include <linux/regulator/machine.h> | 33 | #include <linux/regulator/machine.h> |
34 | #include <linux/mmc/host.h> | ||
34 | 35 | ||
35 | #include <linux/spi/spi.h> | 36 | #include <linux/spi/spi.h> |
36 | #include <linux/spi/tdo24m.h> | 37 | #include <linux/spi/tdo24m.h> |
@@ -579,14 +580,14 @@ static struct twl4030_keypad_data cm_t35_kp_data = { | |||
579 | static struct omap2_hsmmc_info mmc[] = { | 580 | static struct omap2_hsmmc_info mmc[] = { |
580 | { | 581 | { |
581 | .mmc = 1, | 582 | .mmc = 1, |
582 | .wires = 4, | 583 | .caps = MMC_CAP_4_BIT_DATA, |
583 | .gpio_cd = -EINVAL, | 584 | .gpio_cd = -EINVAL, |
584 | .gpio_wp = -EINVAL, | 585 | .gpio_wp = -EINVAL, |
585 | 586 | ||
586 | }, | 587 | }, |
587 | { | 588 | { |
588 | .mmc = 2, | 589 | .mmc = 2, |
589 | .wires = 4, | 590 | .caps = MMC_CAP_4_BIT_DATA, |
590 | .transceiver = 1, | 591 | .transceiver = 1, |
591 | .gpio_cd = -EINVAL, | 592 | .gpio_cd = -EINVAL, |
592 | .gpio_wp = -EINVAL, | 593 | .gpio_wp = -EINVAL, |
diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c index a07086d6a0b2..de5e2c2f4e80 100644 --- a/arch/arm/mach-omap2/board-devkit8000.c +++ b/arch/arm/mach-omap2/board-devkit8000.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <linux/mtd/mtd.h> | 28 | #include <linux/mtd/mtd.h> |
29 | #include <linux/mtd/partitions.h> | 29 | #include <linux/mtd/partitions.h> |
30 | #include <linux/mtd/nand.h> | 30 | #include <linux/mtd/nand.h> |
31 | #include <linux/mmc/host.h> | ||
31 | 32 | ||
32 | #include <linux/regulator/machine.h> | 33 | #include <linux/regulator/machine.h> |
33 | #include <linux/i2c/twl.h> | 34 | #include <linux/i2c/twl.h> |
@@ -105,7 +106,7 @@ static struct omap_nand_platform_data devkit8000_nand_data = { | |||
105 | static struct omap2_hsmmc_info mmc[] = { | 106 | static struct omap2_hsmmc_info mmc[] = { |
106 | { | 107 | { |
107 | .mmc = 1, | 108 | .mmc = 1, |
108 | .wires = 8, | 109 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
109 | .gpio_wp = 29, | 110 | .gpio_wp = 29, |
110 | }, | 111 | }, |
111 | {} /* Terminator */ | 112 | {} /* Terminator */ |
diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c index 175f04339761..f3f028056916 100644 --- a/arch/arm/mach-omap2/board-igep0020.c +++ b/arch/arm/mach-omap2/board-igep0020.c | |||
@@ -20,6 +20,7 @@ | |||
20 | 20 | ||
21 | #include <linux/regulator/machine.h> | 21 | #include <linux/regulator/machine.h> |
22 | #include <linux/i2c/twl.h> | 22 | #include <linux/i2c/twl.h> |
23 | #include <linux/mmc/host.h> | ||
23 | 24 | ||
24 | #include <asm/mach-types.h> | 25 | #include <asm/mach-types.h> |
25 | #include <asm/mach/arch.h> | 26 | #include <asm/mach/arch.h> |
@@ -248,13 +249,13 @@ static struct regulator_init_data igep2_vmmc2 = { | |||
248 | static struct omap2_hsmmc_info mmc[] = { | 249 | static struct omap2_hsmmc_info mmc[] = { |
249 | { | 250 | { |
250 | .mmc = 1, | 251 | .mmc = 1, |
251 | .wires = 4, | 252 | .caps = MMC_CAP_4_BIT_DATA, |
252 | .gpio_cd = -EINVAL, | 253 | .gpio_cd = -EINVAL, |
253 | .gpio_wp = -EINVAL, | 254 | .gpio_wp = -EINVAL, |
254 | }, | 255 | }, |
255 | { | 256 | { |
256 | .mmc = 2, | 257 | .mmc = 2, |
257 | .wires = 4, | 258 | .caps = MMC_CAP_4_BIT_DATA, |
258 | .gpio_cd = -EINVAL, | 259 | .gpio_cd = -EINVAL, |
259 | .gpio_wp = -EINVAL, | 260 | .gpio_wp = -EINVAL, |
260 | }, | 261 | }, |
diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c index 00d9b13b01c5..58698e359ccf 100644 --- a/arch/arm/mach-omap2/board-ldp.c +++ b/arch/arm/mach-omap2/board-ldp.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/i2c/twl.h> | 27 | #include <linux/i2c/twl.h> |
28 | #include <linux/io.h> | 28 | #include <linux/io.h> |
29 | #include <linux/smsc911x.h> | 29 | #include <linux/smsc911x.h> |
30 | #include <linux/mmc/host.h> | ||
30 | 31 | ||
31 | #include <mach/hardware.h> | 32 | #include <mach/hardware.h> |
32 | #include <asm/mach-types.h> | 33 | #include <asm/mach-types.h> |
@@ -362,7 +363,7 @@ static int __init omap_i2c_init(void) | |||
362 | static struct omap2_hsmmc_info mmc[] __initdata = { | 363 | static struct omap2_hsmmc_info mmc[] __initdata = { |
363 | { | 364 | { |
364 | .mmc = 1, | 365 | .mmc = 1, |
365 | .wires = 4, | 366 | .caps = MMC_CAP_4_BIT_DATA, |
366 | .gpio_cd = -EINVAL, | 367 | .gpio_cd = -EINVAL, |
367 | .gpio_wp = -EINVAL, | 368 | .gpio_wp = -EINVAL, |
368 | }, | 369 | }, |
diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c index 8fd226989b25..7a93bd5b24c5 100644 --- a/arch/arm/mach-omap2/board-n8x0.c +++ b/arch/arm/mach-omap2/board-n8x0.c | |||
@@ -488,7 +488,7 @@ static struct omap_mmc_platform_data mmc1_data = { | |||
488 | .max_freq = 24000000, | 488 | .max_freq = 24000000, |
489 | .dma_mask = 0xffffffff, | 489 | .dma_mask = 0xffffffff, |
490 | .slots[0] = { | 490 | .slots[0] = { |
491 | .wires = 4, | 491 | .caps = MMC_CAP_4_BIT_DATA, |
492 | .set_power = n8x0_mmc_set_power, | 492 | .set_power = n8x0_mmc_set_power, |
493 | .set_bus_mode = n8x0_mmc_set_bus_mode, | 493 | .set_bus_mode = n8x0_mmc_set_bus_mode, |
494 | .get_cover_state = n8x0_mmc_get_cover_state, | 494 | .get_cover_state = n8x0_mmc_get_cover_state, |
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c index 87969c7df652..51493f59325d 100644 --- a/arch/arm/mach-omap2/board-omap3beagle.c +++ b/arch/arm/mach-omap2/board-omap3beagle.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/mtd/mtd.h> | 27 | #include <linux/mtd/mtd.h> |
28 | #include <linux/mtd/partitions.h> | 28 | #include <linux/mtd/partitions.h> |
29 | #include <linux/mtd/nand.h> | 29 | #include <linux/mtd/nand.h> |
30 | #include <linux/mmc/host.h> | ||
30 | 31 | ||
31 | #include <linux/regulator/machine.h> | 32 | #include <linux/regulator/machine.h> |
32 | #include <linux/i2c/twl.h> | 33 | #include <linux/i2c/twl.h> |
@@ -166,7 +167,7 @@ static void __init beagle_display_init(void) | |||
166 | static struct omap2_hsmmc_info mmc[] = { | 167 | static struct omap2_hsmmc_info mmc[] = { |
167 | { | 168 | { |
168 | .mmc = 1, | 169 | .mmc = 1, |
169 | .wires = 8, | 170 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
170 | .gpio_wp = 29, | 171 | .gpio_wp = 29, |
171 | }, | 172 | }, |
172 | {} /* Terminator */ | 173 | {} /* Terminator */ |
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c index f76d9c0a47a1..523ba551ee7b 100644 --- a/arch/arm/mach-omap2/board-omap3evm.c +++ b/arch/arm/mach-omap2/board-omap3evm.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <linux/smsc911x.h> | 31 | #include <linux/smsc911x.h> |
32 | 32 | ||
33 | #include <linux/regulator/machine.h> | 33 | #include <linux/regulator/machine.h> |
34 | #include <linux/mmc/host.h> | ||
34 | 35 | ||
35 | #include <mach/hardware.h> | 36 | #include <mach/hardware.h> |
36 | #include <asm/mach-types.h> | 37 | #include <asm/mach-types.h> |
@@ -370,7 +371,7 @@ static struct regulator_init_data omap3evm_vsim = { | |||
370 | static struct omap2_hsmmc_info mmc[] = { | 371 | static struct omap2_hsmmc_info mmc[] = { |
371 | { | 372 | { |
372 | .mmc = 1, | 373 | .mmc = 1, |
373 | .wires = 4, | 374 | .caps = MMC_CAP_4_BIT_DATA, |
374 | .gpio_cd = -EINVAL, | 375 | .gpio_cd = -EINVAL, |
375 | .gpio_wp = 63, | 376 | .gpio_wp = 63, |
376 | }, | 377 | }, |
diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c index dd3af2be13be..2d2e6fc127ac 100644 --- a/arch/arm/mach-omap2/board-omap3pandora.c +++ b/arch/arm/mach-omap2/board-omap3pandora.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <linux/input.h> | 32 | #include <linux/input.h> |
33 | #include <linux/input/matrix_keypad.h> | 33 | #include <linux/input/matrix_keypad.h> |
34 | #include <linux/gpio_keys.h> | 34 | #include <linux/gpio_keys.h> |
35 | #include <linux/mmc/host.h> | ||
35 | #include <linux/mmc/card.h> | 36 | #include <linux/mmc/card.h> |
36 | 37 | ||
37 | #include <asm/mach-types.h> | 38 | #include <asm/mach-types.h> |
@@ -276,14 +277,14 @@ static void pandora_wl1251_init_card(struct mmc_card *card) | |||
276 | static struct omap2_hsmmc_info omap3pandora_mmc[] = { | 277 | static struct omap2_hsmmc_info omap3pandora_mmc[] = { |
277 | { | 278 | { |
278 | .mmc = 1, | 279 | .mmc = 1, |
279 | .wires = 4, | 280 | .caps = MMC_CAP_4_BIT_DATA, |
280 | .gpio_cd = -EINVAL, | 281 | .gpio_cd = -EINVAL, |
281 | .gpio_wp = 126, | 282 | .gpio_wp = 126, |
282 | .ext_clock = 0, | 283 | .ext_clock = 0, |
283 | }, | 284 | }, |
284 | { | 285 | { |
285 | .mmc = 2, | 286 | .mmc = 2, |
286 | .wires = 4, | 287 | .caps = MMC_CAP_4_BIT_DATA, |
287 | .gpio_cd = -EINVAL, | 288 | .gpio_cd = -EINVAL, |
288 | .gpio_wp = 127, | 289 | .gpio_wp = 127, |
289 | .ext_clock = 1, | 290 | .ext_clock = 1, |
@@ -291,7 +292,7 @@ static struct omap2_hsmmc_info omap3pandora_mmc[] = { | |||
291 | }, | 292 | }, |
292 | { | 293 | { |
293 | .mmc = 3, | 294 | .mmc = 3, |
294 | .wires = 4, | 295 | .caps = MMC_CAP_4_BIT_DATA, |
295 | .gpio_cd = -EINVAL, | 296 | .gpio_cd = -EINVAL, |
296 | .gpio_wp = -EINVAL, | 297 | .gpio_wp = -EINVAL, |
297 | .init_card = pandora_wl1251_init_card, | 298 | .init_card = pandora_wl1251_init_card, |
diff --git a/arch/arm/mach-omap2/board-omap3stalker.c b/arch/arm/mach-omap2/board-omap3stalker.c index bcd01d278c65..c1b881d3d8ae 100644 --- a/arch/arm/mach-omap2/board-omap3stalker.c +++ b/arch/arm/mach-omap2/board-omap3stalker.c | |||
@@ -26,6 +26,7 @@ | |||
26 | 26 | ||
27 | #include <linux/regulator/machine.h> | 27 | #include <linux/regulator/machine.h> |
28 | #include <linux/i2c/twl.h> | 28 | #include <linux/i2c/twl.h> |
29 | #include <linux/mmc/host.h> | ||
29 | 30 | ||
30 | #include <mach/hardware.h> | 31 | #include <mach/hardware.h> |
31 | #include <asm/mach-types.h> | 32 | #include <asm/mach-types.h> |
@@ -275,7 +276,7 @@ static struct regulator_init_data omap3stalker_vsim = { | |||
275 | static struct omap2_hsmmc_info mmc[] = { | 276 | static struct omap2_hsmmc_info mmc[] = { |
276 | { | 277 | { |
277 | .mmc = 1, | 278 | .mmc = 1, |
278 | .wires = 4, | 279 | .caps = MMC_CAP_4_BIT_DATA, |
279 | .gpio_cd = -EINVAL, | 280 | .gpio_cd = -EINVAL, |
280 | .gpio_wp = 23, | 281 | .gpio_wp = 23, |
281 | }, | 282 | }, |
diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c index 663c62d271e8..9ab18fdd974c 100644 --- a/arch/arm/mach-omap2/board-omap3touchbook.c +++ b/arch/arm/mach-omap2/board-omap3touchbook.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/mtd/mtd.h> | 27 | #include <linux/mtd/mtd.h> |
28 | #include <linux/mtd/partitions.h> | 28 | #include <linux/mtd/partitions.h> |
29 | #include <linux/mtd/nand.h> | 29 | #include <linux/mtd/nand.h> |
30 | #include <linux/mmc/host.h> | ||
30 | 31 | ||
31 | #include <plat/mcspi.h> | 32 | #include <plat/mcspi.h> |
32 | #include <linux/spi/spi.h> | 33 | #include <linux/spi/spi.h> |
@@ -108,7 +109,7 @@ static struct omap_nand_platform_data omap3touchbook_nand_data = { | |||
108 | static struct omap2_hsmmc_info mmc[] = { | 109 | static struct omap2_hsmmc_info mmc[] = { |
109 | { | 110 | { |
110 | .mmc = 1, | 111 | .mmc = 1, |
111 | .wires = 8, | 112 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
112 | .gpio_wp = 29, | 113 | .gpio_wp = 29, |
113 | }, | 114 | }, |
114 | {} /* Terminator */ | 115 | {} /* Terminator */ |
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c index 96f5bbb73b6f..0bb2353b64a4 100644 --- a/arch/arm/mach-omap2/board-omap4panda.c +++ b/arch/arm/mach-omap2/board-omap4panda.c | |||
@@ -56,7 +56,7 @@ static struct omap_musb_board_data musb_board_data = { | |||
56 | static struct omap2_hsmmc_info mmc[] = { | 56 | static struct omap2_hsmmc_info mmc[] = { |
57 | { | 57 | { |
58 | .mmc = 1, | 58 | .mmc = 1, |
59 | .wires = 8, | 59 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
60 | .gpio_wp = -EINVAL, | 60 | .gpio_wp = -EINVAL, |
61 | }, | 61 | }, |
62 | {} /* Terminator */ | 62 | {} /* Terminator */ |
diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c index 4c4843618350..93441e5b36ef 100644 --- a/arch/arm/mach-omap2/board-overo.c +++ b/arch/arm/mach-omap2/board-overo.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <linux/mtd/mtd.h> | 32 | #include <linux/mtd/mtd.h> |
33 | #include <linux/mtd/nand.h> | 33 | #include <linux/mtd/nand.h> |
34 | #include <linux/mtd/partitions.h> | 34 | #include <linux/mtd/partitions.h> |
35 | #include <linux/mmc/host.h> | ||
35 | 36 | ||
36 | #include <asm/mach-types.h> | 37 | #include <asm/mach-types.h> |
37 | #include <asm/mach/arch.h> | 38 | #include <asm/mach/arch.h> |
@@ -303,13 +304,13 @@ static void __init overo_flash_init(void) | |||
303 | static struct omap2_hsmmc_info mmc[] = { | 304 | static struct omap2_hsmmc_info mmc[] = { |
304 | { | 305 | { |
305 | .mmc = 1, | 306 | .mmc = 1, |
306 | .wires = 4, | 307 | .caps = MMC_CAP_4_BIT_DATA, |
307 | .gpio_cd = -EINVAL, | 308 | .gpio_cd = -EINVAL, |
308 | .gpio_wp = -EINVAL, | 309 | .gpio_wp = -EINVAL, |
309 | }, | 310 | }, |
310 | { | 311 | { |
311 | .mmc = 2, | 312 | .mmc = 2, |
312 | .wires = 4, | 313 | .caps = MMC_CAP_4_BIT_DATA, |
313 | .gpio_cd = -EINVAL, | 314 | .gpio_cd = -EINVAL, |
314 | .gpio_wp = -EINVAL, | 315 | .gpio_wp = -EINVAL, |
315 | .transceiver = true, | 316 | .transceiver = true, |
diff --git a/arch/arm/mach-omap2/board-rx51-peripherals.c b/arch/arm/mach-omap2/board-rx51-peripherals.c index 9a5eb87425fc..a3dbaa7b8632 100644 --- a/arch/arm/mach-omap2/board-rx51-peripherals.c +++ b/arch/arm/mach-omap2/board-rx51-peripherals.c | |||
@@ -302,7 +302,7 @@ static struct omap2_hsmmc_info mmc[] __initdata = { | |||
302 | { | 302 | { |
303 | .name = "external", | 303 | .name = "external", |
304 | .mmc = 1, | 304 | .mmc = 1, |
305 | .wires = 4, | 305 | .caps = MMC_CAP_4_BIT_DATA, |
306 | .cover_only = true, | 306 | .cover_only = true, |
307 | .gpio_cd = 160, | 307 | .gpio_cd = 160, |
308 | .gpio_wp = -EINVAL, | 308 | .gpio_wp = -EINVAL, |
@@ -311,7 +311,8 @@ static struct omap2_hsmmc_info mmc[] __initdata = { | |||
311 | { | 311 | { |
312 | .name = "internal", | 312 | .name = "internal", |
313 | .mmc = 2, | 313 | .mmc = 2, |
314 | .wires = 8, /* See also rx51_mmc2_remux */ | 314 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
315 | /* See also rx51_mmc2_remux */ | ||
315 | .gpio_cd = -EINVAL, | 316 | .gpio_cd = -EINVAL, |
316 | .gpio_wp = -EINVAL, | 317 | .gpio_wp = -EINVAL, |
317 | .nonremovable = true, | 318 | .nonremovable = true, |
diff --git a/arch/arm/mach-omap2/board-zoom-peripherals.c b/arch/arm/mach-omap2/board-zoom-peripherals.c index 6b3984964cc5..e5eac46bbac9 100644 --- a/arch/arm/mach-omap2/board-zoom-peripherals.c +++ b/arch/arm/mach-omap2/board-zoom-peripherals.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/gpio.h> | 16 | #include <linux/gpio.h> |
17 | #include <linux/i2c/twl.h> | 17 | #include <linux/i2c/twl.h> |
18 | #include <linux/regulator/machine.h> | 18 | #include <linux/regulator/machine.h> |
19 | #include <linux/mmc/host.h> | ||
19 | 20 | ||
20 | #include <asm/mach-types.h> | 21 | #include <asm/mach-types.h> |
21 | #include <asm/mach/arch.h> | 22 | #include <asm/mach/arch.h> |
@@ -155,14 +156,14 @@ static struct omap2_hsmmc_info mmc[] __initdata = { | |||
155 | { | 156 | { |
156 | .name = "external", | 157 | .name = "external", |
157 | .mmc = 1, | 158 | .mmc = 1, |
158 | .wires = 4, | 159 | .caps = MMC_CAP_4_BIT_DATA, |
159 | .gpio_wp = -EINVAL, | 160 | .gpio_wp = -EINVAL, |
160 | .power_saving = true, | 161 | .power_saving = true, |
161 | }, | 162 | }, |
162 | { | 163 | { |
163 | .name = "internal", | 164 | .name = "internal", |
164 | .mmc = 2, | 165 | .mmc = 2, |
165 | .wires = 8, | 166 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
166 | .gpio_cd = -EINVAL, | 167 | .gpio_cd = -EINVAL, |
167 | .gpio_wp = -EINVAL, | 168 | .gpio_wp = -EINVAL, |
168 | .nonremovable = true, | 169 | .nonremovable = true, |
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index dc49c07dc161..9e5d51bee94a 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c | |||
@@ -694,7 +694,7 @@ static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller, | |||
694 | omap_mux_init_signal("sdmmc_dat0", 0); | 694 | omap_mux_init_signal("sdmmc_dat0", 0); |
695 | omap_mux_init_signal("sdmmc_dat_dir0", 0); | 695 | omap_mux_init_signal("sdmmc_dat_dir0", 0); |
696 | omap_mux_init_signal("sdmmc_cmd_dir", 0); | 696 | omap_mux_init_signal("sdmmc_cmd_dir", 0); |
697 | if (mmc_controller->slots[0].wires == 4) { | 697 | if (mmc_controller->slots[0].caps & MMC_CAP_4_BIT_DATA) { |
698 | omap_mux_init_signal("sdmmc_dat1", 0); | 698 | omap_mux_init_signal("sdmmc_dat1", 0); |
699 | omap_mux_init_signal("sdmmc_dat2", 0); | 699 | omap_mux_init_signal("sdmmc_dat2", 0); |
700 | omap_mux_init_signal("sdmmc_dat3", 0); | 700 | omap_mux_init_signal("sdmmc_dat3", 0); |
@@ -722,8 +722,8 @@ static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller, | |||
722 | OMAP_PIN_INPUT_PULLUP); | 722 | OMAP_PIN_INPUT_PULLUP); |
723 | omap_mux_init_signal("sdmmc1_dat0", | 723 | omap_mux_init_signal("sdmmc1_dat0", |
724 | OMAP_PIN_INPUT_PULLUP); | 724 | OMAP_PIN_INPUT_PULLUP); |
725 | if (mmc_controller->slots[0].wires == 4 || | 725 | if (mmc_controller->slots[0].caps & |
726 | mmc_controller->slots[0].wires == 8) { | 726 | (MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA)) { |
727 | omap_mux_init_signal("sdmmc1_dat1", | 727 | omap_mux_init_signal("sdmmc1_dat1", |
728 | OMAP_PIN_INPUT_PULLUP); | 728 | OMAP_PIN_INPUT_PULLUP); |
729 | omap_mux_init_signal("sdmmc1_dat2", | 729 | omap_mux_init_signal("sdmmc1_dat2", |
@@ -731,7 +731,8 @@ static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller, | |||
731 | omap_mux_init_signal("sdmmc1_dat3", | 731 | omap_mux_init_signal("sdmmc1_dat3", |
732 | OMAP_PIN_INPUT_PULLUP); | 732 | OMAP_PIN_INPUT_PULLUP); |
733 | } | 733 | } |
734 | if (mmc_controller->slots[0].wires == 8) { | 734 | if (mmc_controller->slots[0].caps & |
735 | MMC_CAP_8_BIT_DATA) { | ||
735 | omap_mux_init_signal("sdmmc1_dat4", | 736 | omap_mux_init_signal("sdmmc1_dat4", |
736 | OMAP_PIN_INPUT_PULLUP); | 737 | OMAP_PIN_INPUT_PULLUP); |
737 | omap_mux_init_signal("sdmmc1_dat5", | 738 | omap_mux_init_signal("sdmmc1_dat5", |
@@ -755,8 +756,8 @@ static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller, | |||
755 | * For 8 wire configurations, Lines DAT4, 5, 6 and 7 need to be muxed | 756 | * For 8 wire configurations, Lines DAT4, 5, 6 and 7 need to be muxed |
756 | * in the board-*.c files | 757 | * in the board-*.c files |
757 | */ | 758 | */ |
758 | if (mmc_controller->slots[0].wires == 4 || | 759 | if (mmc_controller->slots[0].caps & |
759 | mmc_controller->slots[0].wires == 8) { | 760 | (MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA)) { |
760 | omap_mux_init_signal("sdmmc2_dat1", | 761 | omap_mux_init_signal("sdmmc2_dat1", |
761 | OMAP_PIN_INPUT_PULLUP); | 762 | OMAP_PIN_INPUT_PULLUP); |
762 | omap_mux_init_signal("sdmmc2_dat2", | 763 | omap_mux_init_signal("sdmmc2_dat2", |
@@ -764,7 +765,8 @@ static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller, | |||
764 | omap_mux_init_signal("sdmmc2_dat3", | 765 | omap_mux_init_signal("sdmmc2_dat3", |
765 | OMAP_PIN_INPUT_PULLUP); | 766 | OMAP_PIN_INPUT_PULLUP); |
766 | } | 767 | } |
767 | if (mmc_controller->slots[0].wires == 8) { | 768 | if (mmc_controller->slots[0].caps & |
769 | MMC_CAP_8_BIT_DATA) { | ||
768 | omap_mux_init_signal("sdmmc2_dat4.sdmmc2_dat4", | 770 | omap_mux_init_signal("sdmmc2_dat4.sdmmc2_dat4", |
769 | OMAP_PIN_INPUT_PULLUP); | 771 | OMAP_PIN_INPUT_PULLUP); |
770 | omap_mux_init_signal("sdmmc2_dat5.sdmmc2_dat5", | 772 | omap_mux_init_signal("sdmmc2_dat5.sdmmc2_dat5", |
diff --git a/arch/arm/mach-omap2/hsmmc.c b/arch/arm/mach-omap2/hsmmc.c index c8f647b6205e..87ce6ffccefc 100644 --- a/arch/arm/mach-omap2/hsmmc.c +++ b/arch/arm/mach-omap2/hsmmc.c | |||
@@ -258,7 +258,7 @@ void __init omap2_hsmmc_init(struct omap2_hsmmc_info *controllers) | |||
258 | "mmc%islot%i", c->mmc, 1); | 258 | "mmc%islot%i", c->mmc, 1); |
259 | mmc->slots[0].name = hc->name; | 259 | mmc->slots[0].name = hc->name; |
260 | mmc->nr_slots = 1; | 260 | mmc->nr_slots = 1; |
261 | mmc->slots[0].wires = c->wires; | 261 | mmc->slots[0].caps = c->caps; |
262 | mmc->slots[0].internal_clock = !c->ext_clock; | 262 | mmc->slots[0].internal_clock = !c->ext_clock; |
263 | mmc->dma_mask = 0xffffffff; | 263 | mmc->dma_mask = 0xffffffff; |
264 | 264 | ||
@@ -316,16 +316,20 @@ void __init omap2_hsmmc_init(struct omap2_hsmmc_info *controllers) | |||
316 | } | 316 | } |
317 | 317 | ||
318 | /* Omap3630 HSMMC1 supports only 4-bit */ | 318 | /* Omap3630 HSMMC1 supports only 4-bit */ |
319 | if (cpu_is_omap3630() && c->wires > 4) { | 319 | if (cpu_is_omap3630() && |
320 | c->wires = 4; | 320 | (c->caps & MMC_CAP_8_BIT_DATA)) { |
321 | mmc->slots[0].wires = c->wires; | 321 | c->caps &= ~MMC_CAP_8_BIT_DATA; |
322 | c->caps |= MMC_CAP_4_BIT_DATA; | ||
323 | mmc->slots[0].caps = c->caps; | ||
322 | } | 324 | } |
323 | break; | 325 | break; |
324 | case 2: | 326 | case 2: |
325 | if (c->ext_clock) | 327 | if (c->ext_clock) |
326 | c->transceiver = 1; | 328 | c->transceiver = 1; |
327 | if (c->transceiver && c->wires > 4) | 329 | if (c->transceiver && (c->caps & MMC_CAP_8_BIT_DATA)) { |
328 | c->wires = 4; | 330 | c->caps &= ~MMC_CAP_8_BIT_DATA; |
331 | c->caps |= MMC_CAP_4_BIT_DATA; | ||
332 | } | ||
329 | /* FALLTHROUGH */ | 333 | /* FALLTHROUGH */ |
330 | case 3: | 334 | case 3: |
331 | if (mmc->slots[0].features & HSMMC_HAS_PBIAS) { | 335 | if (mmc->slots[0].features & HSMMC_HAS_PBIAS) { |
diff --git a/arch/arm/mach-omap2/hsmmc.h b/arch/arm/mach-omap2/hsmmc.h index 1fe6f0187177..281e97287adf 100644 --- a/arch/arm/mach-omap2/hsmmc.h +++ b/arch/arm/mach-omap2/hsmmc.h | |||
@@ -10,7 +10,8 @@ struct mmc_card; | |||
10 | 10 | ||
11 | struct omap2_hsmmc_info { | 11 | struct omap2_hsmmc_info { |
12 | u8 mmc; /* controller 1/2/3 */ | 12 | u8 mmc; /* controller 1/2/3 */ |
13 | u8 wires; /* 1/4/8 wires */ | 13 | u32 caps; /* 4/8 wires and any additional host |
14 | * capabilities OR'd (ref. linux/mmc/host.h) */ | ||
14 | bool transceiver; /* MMC-2 option */ | 15 | bool transceiver; /* MMC-2 option */ |
15 | bool ext_clock; /* use external pin for input clock */ | 16 | bool ext_clock; /* use external pin for input clock */ |
16 | bool cover_only; /* No card detect - just cover switch */ | 17 | bool cover_only; /* No card detect - just cover switch */ |
diff --git a/arch/arm/plat-omap/include/plat/mmc.h b/arch/arm/plat-omap/include/plat/mmc.h index 9b89ec601ee2..4f819fc261b7 100644 --- a/arch/arm/plat-omap/include/plat/mmc.h +++ b/arch/arm/plat-omap/include/plat/mmc.h | |||
@@ -73,10 +73,9 @@ struct omap_mmc_platform_data { | |||
73 | 73 | ||
74 | struct omap_mmc_slot_data { | 74 | struct omap_mmc_slot_data { |
75 | 75 | ||
76 | /* 4 wire signaling is optional, and is used for SD/SDIO/HSMMC; | 76 | /* 4/8 wires and any additional host capabilities |
77 | * 8 wire signaling is also optional, and is used with HSMMC | 77 | * need to OR'd all capabilities (ref. linux/mmc/host.h) */ |
78 | */ | 78 | u32 caps; |
79 | u8 wires; | ||
80 | 79 | ||
81 | /* | 80 | /* |
82 | * nomux means "standard" muxing is wrong on this board, and | 81 | * nomux means "standard" muxing is wrong on this board, and |
diff --git a/drivers/mmc/host/omap.c b/drivers/mmc/host/omap.c index d98ddcfac5e5..a9d62cfa87a2 100644 --- a/drivers/mmc/host/omap.c +++ b/drivers/mmc/host/omap.c | |||
@@ -1317,7 +1317,7 @@ static int __init mmc_omap_new_slot(struct mmc_omap_host *host, int id) | |||
1317 | host->slots[id] = slot; | 1317 | host->slots[id] = slot; |
1318 | 1318 | ||
1319 | mmc->caps = 0; | 1319 | mmc->caps = 0; |
1320 | if (host->pdata->slots[id].wires >= 4) | 1320 | if (host->pdata->slots[id].caps & MMC_CAP_8_BIT_DATA) |
1321 | mmc->caps |= MMC_CAP_4_BIT_DATA; | 1321 | mmc->caps |= MMC_CAP_4_BIT_DATA; |
1322 | 1322 | ||
1323 | mmc->ops = &mmc_omap_ops; | 1323 | mmc->ops = &mmc_omap_ops; |
diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c index 4526d2791f29..53f8fa599cf5 100644 --- a/drivers/mmc/host/omap_hsmmc.c +++ b/drivers/mmc/host/omap_hsmmc.c | |||
@@ -2116,23 +2116,9 @@ static int __init omap_hsmmc_probe(struct platform_device *pdev) | |||
2116 | mmc->caps |= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED | | 2116 | mmc->caps |= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED | |
2117 | MMC_CAP_WAIT_WHILE_BUSY | MMC_CAP_ERASE; | 2117 | MMC_CAP_WAIT_WHILE_BUSY | MMC_CAP_ERASE; |
2118 | 2118 | ||
2119 | switch (mmc_slot(host).wires) { | 2119 | mmc->caps |= mmc_slot(host).caps; |
2120 | case 8: | 2120 | if (mmc->caps & MMC_CAP_8_BIT_DATA) |
2121 | mmc->caps |= MMC_CAP_8_BIT_DATA; | ||
2122 | /* Fall through */ | ||
2123 | case 4: | ||
2124 | mmc->caps |= MMC_CAP_4_BIT_DATA; | 2121 | mmc->caps |= MMC_CAP_4_BIT_DATA; |
2125 | break; | ||
2126 | case 1: | ||
2127 | /* Nothing to crib here */ | ||
2128 | case 0: | ||
2129 | /* Assuming nothing was given by board, Core use's 1-Bit */ | ||
2130 | break; | ||
2131 | default: | ||
2132 | /* Completely unexpected.. Core goes with 1-Bit Width */ | ||
2133 | dev_crit(mmc_dev(host->mmc), "Invalid width %d\n used!" | ||
2134 | "using 1 instead\n", mmc_slot(host).wires); | ||
2135 | } | ||
2136 | 2122 | ||
2137 | if (mmc_slot(host).nonremovable) | 2123 | if (mmc_slot(host).nonremovable) |
2138 | mmc->caps |= MMC_CAP_NONREMOVABLE; | 2124 | mmc->caps |= MMC_CAP_NONREMOVABLE; |