aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-10-28 17:16:11 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-10-28 17:16:11 -0400
commit46b51ea2099fa2082342e52b8284aa828429b80b (patch)
tree0a0d7bfe1aff036c86a2e7beacbd91398008bfb6 /arch/arm
parent1fdb24e969110fafea36d3b393bea438f702c87f (diff)
parenta6029e1f75bb484c1f5bc68b6a8572e4024795bc (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc: (83 commits) mmc: fix compile error when CONFIG_BLOCK is not enabled mmc: core: Cleanup eMMC4.5 conditionals mmc: omap_hsmmc: if multiblock reads are broken, disable them mmc: core: add workaround for controllers with broken multiblock reads mmc: core: Prevent too long response times for suspend mmc: recognise SDIO cards with SDIO_CCCR_REV 3.00 mmc: sd: Handle SD3.0 cards not supporting UHS-I bus speed mode mmc: core: support HPI send command mmc: core: Add cache control for eMMC4.5 device mmc: core: Modify the timeout value for writing power class mmc: core: new discard feature support at eMMC v4.5 mmc: core: mmc sanitize feature support for v4.5 mmc: dw_mmc: modify DATA register offset mmc: sdhci-pci: add flag for devices that can support runtime PM mmc: omap_hsmmc: ensure pbias configuration is always done mmc: core: Add Power Off Notify Feature eMMC 4.5 mmc: sdhci-s3c: fix potential NULL dereference mmc: replace printk with appropriate display macro mmc: core: Add default timeout value for CMD6 mmc: sdhci-pci: add runtime pm support ...
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/mach-at91/at91sam9260_devices.c2
-rw-r--r--arch/arm/mach-msm/devices-msm7x00.c24
-rw-r--r--arch/arm/mach-msm/devices-qsd8x50.c24
-rw-r--r--arch/arm/mach-msm/include/mach/mmc.h9
-rw-r--r--arch/arm/mach-shmobile/board-ag5evm.c6
-rw-r--r--arch/arm/mach-shmobile/board-mackerel.c6
-rw-r--r--arch/arm/plat-omap/include/plat/mmc.h19
7 files changed, 32 insertions, 58 deletions
diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c
index a53b3de9daa2..3c2b580b9d75 100644
--- a/arch/arm/mach-at91/at91sam9260_devices.c
+++ b/arch/arm/mach-at91/at91sam9260_devices.c
@@ -319,7 +319,7 @@ void __init at91_add_device_mci(short mmc_id, struct mci_platform_data *data)
319 if (!data) 319 if (!data)
320 return; 320 return;
321 321
322 for (i = 0; i < ATMEL_MCI_MAX_NR_SLOTS; i++) { 322 for (i = 0; i < ATMCI_MAX_NR_SLOTS; i++) {
323 if (data->slot[i].bus_width) { 323 if (data->slot[i].bus_width) {
324 /* input/irq */ 324 /* input/irq */
325 if (data->slot[i].detect_pin) { 325 if (data->slot[i].detect_pin) {
diff --git a/arch/arm/mach-msm/devices-msm7x00.c b/arch/arm/mach-msm/devices-msm7x00.c
index c4f5e26feb4d..993780f490ad 100644
--- a/arch/arm/mach-msm/devices-msm7x00.c
+++ b/arch/arm/mach-msm/devices-msm7x00.c
@@ -176,12 +176,6 @@ static struct resource resources_sdc1[] = {
176 .name = "cmd_irq", 176 .name = "cmd_irq",
177 }, 177 },
178 { 178 {
179 .start = INT_SDC1_1,
180 .end = INT_SDC1_1,
181 .flags = IORESOURCE_IRQ,
182 .name = "pio_irq",
183 },
184 {
185 .flags = IORESOURCE_IRQ | IORESOURCE_DISABLED, 179 .flags = IORESOURCE_IRQ | IORESOURCE_DISABLED,
186 .name = "status_irq" 180 .name = "status_irq"
187 }, 181 },
@@ -204,12 +198,6 @@ static struct resource resources_sdc2[] = {
204 .flags = IORESOURCE_IRQ, 198 .flags = IORESOURCE_IRQ,
205 .name = "cmd_irq", 199 .name = "cmd_irq",
206 }, 200 },
207 {
208 .start = INT_SDC2_1,
209 .end = INT_SDC2_1,
210 .flags = IORESOURCE_IRQ,
211 .name = "pio_irq",
212 },
213 { 201 {
214 .flags = IORESOURCE_IRQ | IORESOURCE_DISABLED, 202 .flags = IORESOURCE_IRQ | IORESOURCE_DISABLED,
215 .name = "status_irq" 203 .name = "status_irq"
@@ -233,12 +221,6 @@ static struct resource resources_sdc3[] = {
233 .flags = IORESOURCE_IRQ, 221 .flags = IORESOURCE_IRQ,
234 .name = "cmd_irq", 222 .name = "cmd_irq",
235 }, 223 },
236 {
237 .start = INT_SDC3_1,
238 .end = INT_SDC3_1,
239 .flags = IORESOURCE_IRQ,
240 .name = "pio_irq",
241 },
242 { 224 {
243 .flags = IORESOURCE_IRQ | IORESOURCE_DISABLED, 225 .flags = IORESOURCE_IRQ | IORESOURCE_DISABLED,
244 .name = "status_irq" 226 .name = "status_irq"
@@ -262,12 +244,6 @@ static struct resource resources_sdc4[] = {
262 .flags = IORESOURCE_IRQ, 244 .flags = IORESOURCE_IRQ,
263 .name = "cmd_irq", 245 .name = "cmd_irq",
264 }, 246 },
265 {
266 .start = INT_SDC4_1,
267 .end = INT_SDC4_1,
268 .flags = IORESOURCE_IRQ,
269 .name = "pio_irq",
270 },
271 { 247 {
272 .flags = IORESOURCE_IRQ | IORESOURCE_DISABLED, 248 .flags = IORESOURCE_IRQ | IORESOURCE_DISABLED,
273 .name = "status_irq" 249 .name = "status_irq"
diff --git a/arch/arm/mach-msm/devices-qsd8x50.c b/arch/arm/mach-msm/devices-qsd8x50.c
index 12d8deb78d9c..131633b12a34 100644
--- a/arch/arm/mach-msm/devices-qsd8x50.c
+++ b/arch/arm/mach-msm/devices-qsd8x50.c
@@ -140,12 +140,6 @@ static struct resource resources_sdc1[] = {
140 .name = "cmd_irq", 140 .name = "cmd_irq",
141 }, 141 },
142 { 142 {
143 .start = INT_SDC1_1,
144 .end = INT_SDC1_1,
145 .flags = IORESOURCE_IRQ,
146 .name = "pio_irq",
147 },
148 {
149 .flags = IORESOURCE_IRQ | IORESOURCE_DISABLED, 143 .flags = IORESOURCE_IRQ | IORESOURCE_DISABLED,
150 .name = "status_irq" 144 .name = "status_irq"
151 }, 145 },
@@ -168,12 +162,6 @@ static struct resource resources_sdc2[] = {
168 .flags = IORESOURCE_IRQ, 162 .flags = IORESOURCE_IRQ,
169 .name = "cmd_irq", 163 .name = "cmd_irq",
170 }, 164 },
171 {
172 .start = INT_SDC2_1,
173 .end = INT_SDC2_1,
174 .flags = IORESOURCE_IRQ,
175 .name = "pio_irq",
176 },
177 { 165 {
178 .flags = IORESOURCE_IRQ | IORESOURCE_DISABLED, 166 .flags = IORESOURCE_IRQ | IORESOURCE_DISABLED,
179 .name = "status_irq" 167 .name = "status_irq"
@@ -197,12 +185,6 @@ static struct resource resources_sdc3[] = {
197 .flags = IORESOURCE_IRQ, 185 .flags = IORESOURCE_IRQ,
198 .name = "cmd_irq", 186 .name = "cmd_irq",
199 }, 187 },
200 {
201 .start = INT_SDC3_1,
202 .end = INT_SDC3_1,
203 .flags = IORESOURCE_IRQ,
204 .name = "pio_irq",
205 },
206 { 188 {
207 .flags = IORESOURCE_IRQ | IORESOURCE_DISABLED, 189 .flags = IORESOURCE_IRQ | IORESOURCE_DISABLED,
208 .name = "status_irq" 190 .name = "status_irq"
@@ -226,12 +208,6 @@ static struct resource resources_sdc4[] = {
226 .flags = IORESOURCE_IRQ, 208 .flags = IORESOURCE_IRQ,
227 .name = "cmd_irq", 209 .name = "cmd_irq",
228 }, 210 },
229 {
230 .start = INT_SDC4_1,
231 .end = INT_SDC4_1,
232 .flags = IORESOURCE_IRQ,
233 .name = "pio_irq",
234 },
235 { 211 {
236 .flags = IORESOURCE_IRQ | IORESOURCE_DISABLED, 212 .flags = IORESOURCE_IRQ | IORESOURCE_DISABLED,
237 .name = "status_irq" 213 .name = "status_irq"
diff --git a/arch/arm/mach-msm/include/mach/mmc.h b/arch/arm/mach-msm/include/mach/mmc.h
index 5631b51cec46..ffcd9e3a6a7e 100644
--- a/arch/arm/mach-msm/include/mach/mmc.h
+++ b/arch/arm/mach-msm/include/mach/mmc.h
@@ -8,13 +8,6 @@
8#include <linux/mmc/card.h> 8#include <linux/mmc/card.h>
9#include <linux/mmc/sdio_func.h> 9#include <linux/mmc/sdio_func.h>
10 10
11struct embedded_sdio_data {
12 struct sdio_cis cis;
13 struct sdio_cccr cccr;
14 struct sdio_embedded_func *funcs;
15 int num_funcs;
16};
17
18struct msm_mmc_gpio { 11struct msm_mmc_gpio {
19 unsigned no; 12 unsigned no;
20 const char *name; 13 const char *name;
@@ -29,9 +22,9 @@ struct msm_mmc_platform_data {
29 unsigned int ocr_mask; /* available voltages */ 22 unsigned int ocr_mask; /* available voltages */
30 u32 (*translate_vdd)(struct device *, unsigned int); 23 u32 (*translate_vdd)(struct device *, unsigned int);
31 unsigned int (*status)(struct device *); 24 unsigned int (*status)(struct device *);
32 struct embedded_sdio_data *embedded_sdio;
33 int (*register_status_notify)(void (*callback)(int card_present, void *dev_id), void *dev_id); 25 int (*register_status_notify)(void (*callback)(int card_present, void *dev_id), void *dev_id);
34 struct msm_mmc_gpio_data *gpio_data; 26 struct msm_mmc_gpio_data *gpio_data;
27 void (*init_card)(struct mmc_card *card);
35}; 28};
36 29
37#endif 30#endif
diff --git a/arch/arm/mach-shmobile/board-ag5evm.c b/arch/arm/mach-shmobile/board-ag5evm.c
index 5fde49da399a..475342bcc95c 100644
--- a/arch/arm/mach-shmobile/board-ag5evm.c
+++ b/arch/arm/mach-shmobile/board-ag5evm.c
@@ -355,14 +355,17 @@ static struct resource sdhi0_resources[] = {
355 .flags = IORESOURCE_MEM, 355 .flags = IORESOURCE_MEM,
356 }, 356 },
357 [1] = { 357 [1] = {
358 .name = SH_MOBILE_SDHI_IRQ_CARD_DETECT,
358 .start = gic_spi(83), 359 .start = gic_spi(83),
359 .flags = IORESOURCE_IRQ, 360 .flags = IORESOURCE_IRQ,
360 }, 361 },
361 [2] = { 362 [2] = {
363 .name = SH_MOBILE_SDHI_IRQ_SDCARD,
362 .start = gic_spi(84), 364 .start = gic_spi(84),
363 .flags = IORESOURCE_IRQ, 365 .flags = IORESOURCE_IRQ,
364 }, 366 },
365 [3] = { 367 [3] = {
368 .name = SH_MOBILE_SDHI_IRQ_SDIO,
366 .start = gic_spi(85), 369 .start = gic_spi(85),
367 .flags = IORESOURCE_IRQ, 370 .flags = IORESOURCE_IRQ,
368 }, 371 },
@@ -398,14 +401,17 @@ static struct resource sdhi1_resources[] = {
398 .flags = IORESOURCE_MEM, 401 .flags = IORESOURCE_MEM,
399 }, 402 },
400 [1] = { 403 [1] = {
404 .name = SH_MOBILE_SDHI_IRQ_CARD_DETECT,
401 .start = gic_spi(87), 405 .start = gic_spi(87),
402 .flags = IORESOURCE_IRQ, 406 .flags = IORESOURCE_IRQ,
403 }, 407 },
404 [2] = { 408 [2] = {
409 .name = SH_MOBILE_SDHI_IRQ_SDCARD,
405 .start = gic_spi(88), 410 .start = gic_spi(88),
406 .flags = IORESOURCE_IRQ, 411 .flags = IORESOURCE_IRQ,
407 }, 412 },
408 [3] = { 413 [3] = {
414 .name = SH_MOBILE_SDHI_IRQ_SDIO,
409 .start = gic_spi(89), 415 .start = gic_spi(89),
410 .flags = IORESOURCE_IRQ, 416 .flags = IORESOURCE_IRQ,
411 }, 417 },
diff --git a/arch/arm/mach-shmobile/board-mackerel.c b/arch/arm/mach-shmobile/board-mackerel.c
index 7d073c121941..4de92dc570b0 100644
--- a/arch/arm/mach-shmobile/board-mackerel.c
+++ b/arch/arm/mach-shmobile/board-mackerel.c
@@ -1072,14 +1072,17 @@ static struct resource sdhi1_resources[] = {
1072 .flags = IORESOURCE_MEM, 1072 .flags = IORESOURCE_MEM,
1073 }, 1073 },
1074 [1] = { 1074 [1] = {
1075 .name = SH_MOBILE_SDHI_IRQ_CARD_DETECT,
1075 .start = evt2irq(0x0e80), /* SDHI1_SDHI1I0 */ 1076 .start = evt2irq(0x0e80), /* SDHI1_SDHI1I0 */
1076 .flags = IORESOURCE_IRQ, 1077 .flags = IORESOURCE_IRQ,
1077 }, 1078 },
1078 [2] = { 1079 [2] = {
1080 .name = SH_MOBILE_SDHI_IRQ_SDCARD,
1079 .start = evt2irq(0x0ea0), /* SDHI1_SDHI1I1 */ 1081 .start = evt2irq(0x0ea0), /* SDHI1_SDHI1I1 */
1080 .flags = IORESOURCE_IRQ, 1082 .flags = IORESOURCE_IRQ,
1081 }, 1083 },
1082 [3] = { 1084 [3] = {
1085 .name = SH_MOBILE_SDHI_IRQ_SDIO,
1083 .start = evt2irq(0x0ec0), /* SDHI1_SDHI1I2 */ 1086 .start = evt2irq(0x0ec0), /* SDHI1_SDHI1I2 */
1084 .flags = IORESOURCE_IRQ, 1087 .flags = IORESOURCE_IRQ,
1085 }, 1088 },
@@ -1123,14 +1126,17 @@ static struct resource sdhi2_resources[] = {
1123 .flags = IORESOURCE_MEM, 1126 .flags = IORESOURCE_MEM,
1124 }, 1127 },
1125 [1] = { 1128 [1] = {
1129 .name = SH_MOBILE_SDHI_IRQ_CARD_DETECT,
1126 .start = evt2irq(0x1200), /* SDHI2_SDHI2I0 */ 1130 .start = evt2irq(0x1200), /* SDHI2_SDHI2I0 */
1127 .flags = IORESOURCE_IRQ, 1131 .flags = IORESOURCE_IRQ,
1128 }, 1132 },
1129 [2] = { 1133 [2] = {
1134 .name = SH_MOBILE_SDHI_IRQ_SDCARD,
1130 .start = evt2irq(0x1220), /* SDHI2_SDHI2I1 */ 1135 .start = evt2irq(0x1220), /* SDHI2_SDHI2I1 */
1131 .flags = IORESOURCE_IRQ, 1136 .flags = IORESOURCE_IRQ,
1132 }, 1137 },
1133 [3] = { 1138 [3] = {
1139 .name = SH_MOBILE_SDHI_IRQ_SDIO,
1134 .start = evt2irq(0x1240), /* SDHI2_SDHI2I2 */ 1140 .start = evt2irq(0x1240), /* SDHI2_SDHI2I2 */
1135 .flags = IORESOURCE_IRQ, 1141 .flags = IORESOURCE_IRQ,
1136 }, 1142 },
diff --git a/arch/arm/plat-omap/include/plat/mmc.h b/arch/arm/plat-omap/include/plat/mmc.h
index c7b874186c27..94cf70afb236 100644
--- a/arch/arm/plat-omap/include/plat/mmc.h
+++ b/arch/arm/plat-omap/include/plat/mmc.h
@@ -31,7 +31,24 @@
31 31
32#define OMAP_MMC_MAX_SLOTS 2 32#define OMAP_MMC_MAX_SLOTS 2
33 33
34#define OMAP_HSMMC_SUPPORTS_DUAL_VOLT BIT(1) 34/*
35 * struct omap_mmc_dev_attr.flags possibilities
36 *
37 * OMAP_HSMMC_SUPPORTS_DUAL_VOLT: Some HSMMC controller instances can
38 * operate with either 1.8Vdc or 3.0Vdc card voltages; this flag
39 * should be set if this is the case. See for example Section 22.5.3
40 * "MMC/SD/SDIO1 Bus Voltage Selection" of the OMAP34xx Multimedia
41 * Device Silicon Revision 3.1.x Revision ZR (July 2011) (SWPU223R).
42 *
43 * OMAP_HSMMC_BROKEN_MULTIBLOCK_READ: Multiple-block read transfers
44 * don't work correctly on some MMC controller instances on some
45 * OMAP3 SoCs; this flag should be set if this is the case. See
46 * for example Advisory 2.1.1.128 "MMC: Multiple Block Read
47 * Operation Issue" in _OMAP3530/3525/3515/3503 Silicon Errata_
48 * Revision F (October 2010) (SPRZ278F).
49 */
50#define OMAP_HSMMC_SUPPORTS_DUAL_VOLT BIT(0)
51#define OMAP_HSMMC_BROKEN_MULTIBLOCK_READ BIT(1)
35 52
36struct omap_mmc_dev_attr { 53struct omap_mmc_dev_attr {
37 u8 flags; 54 u8 flags;