diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-10-28 17:16:11 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-10-28 17:16:11 -0400 |
commit | 46b51ea2099fa2082342e52b8284aa828429b80b (patch) | |
tree | 0a0d7bfe1aff036c86a2e7beacbd91398008bfb6 /arch/arm | |
parent | 1fdb24e969110fafea36d3b393bea438f702c87f (diff) | |
parent | a6029e1f75bb484c1f5bc68b6a8572e4024795bc (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.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-msm/devices-msm7x00.c | 24 | ||||
-rw-r--r-- | arch/arm/mach-msm/devices-qsd8x50.c | 24 | ||||
-rw-r--r-- | arch/arm/mach-msm/include/mach/mmc.h | 9 | ||||
-rw-r--r-- | arch/arm/mach-shmobile/board-ag5evm.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-shmobile/board-mackerel.c | 6 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/plat/mmc.h | 19 |
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 | ||
11 | struct 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 | |||
18 | struct msm_mmc_gpio { | 11 | struct 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 | ||
36 | struct omap_mmc_dev_attr { | 53 | struct omap_mmc_dev_attr { |
37 | u8 flags; | 54 | u8 flags; |