aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-09-08 19:33:16 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-09-08 19:33:16 -0400
commit85579ad7f1dfc0b72bb243b7227bc4f663035e71 (patch)
treeef68893bca233ea5683e49117c05b32f8c907d70 /include
parent3af6e98f25d1f68b9c36beee330342944a4e0048 (diff)
parent092b6dbe8a4a24c17f2ebfe86995dc994e61f420 (diff)
Merge tag 'mmc-v4.3' of git://git.linaro.org/people/ulf.hansson/mmc
Pull MMC updates from Ulf Hansson: "MMC core: - Fix a race condition in the request handling - Skip trim commands for some buggy kingston eMMCs - An optimization and a correction for erase groups - Set CMD23 quirk for some Sandisk cards MMC host: - sdhci: Give GPIO CD higher precedence and don't poll when it's used - sdhci: Fix DMA memory leakage - sdhci: Some updates for clock management - sdhci-of-at91: introduce driver for the Atmel SDMMC - sdhci-of-arasan: Add support for sdhci-5.1 - sdhci-esdhc-imx: Add support for imx7d which also supports HS400 - sdhci: A collection of fixes and improvements for various sdhci hosts - omap_hsmmc: Modernization of the regulator code - dw_mmc: A couple of fixes for DMA and PIO mode - usdhi6rol0: A few fixes and support probe deferral for regulators - pxamci: Convert to use dmaengine - sh_mmcif: Fix the suspend process in a short term solution - tmio: Adjust timeout for commands - sunxi: Fix timeout while gating/ungating clock" * tag 'mmc-v4.3' of git://git.linaro.org/people/ulf.hansson/mmc: (67 commits) mmc: android-goldfish: remove incorrect __iomem annotation mmc: core: fix race condition in mmc_wait_data_done mmc: host: omap_hsmmc: remove CONFIG_REGULATOR check mmc: host: omap_hsmmc: use ios->vdd for setting vmmc voltage mmc: host: omap_hsmmc: use regulator_is_enabled to find pbias status mmc: host: omap_hsmmc: enable/disable vmmc_aux regulator based on previous state mmc: host: omap_hsmmc: don't use ->set_power to set initial regulator state mmc: host: omap_hsmmc: avoid pbias regulator enable on power off mmc: host: omap_hsmmc: add separate function to set pbias mmc: host: omap_hsmmc: add separate functions for enable/disable supply mmc: host: omap_hsmmc: return error if any of the regulator APIs fail mmc: host: omap_hsmmc: remove unnecessary pbias set_voltage mmc: host: omap_hsmmc: use mmc_host's vmmc and vqmmc mmc: host: omap_hsmmc: use the ocrmask provided by the vmmc regulator mmc: host: omap_hsmmc: cleanup omap_hsmmc_reg_get() mmc: host: omap_hsmmc: return on fatal errors from omap_hsmmc_reg_get mmc: host: omap_hsmmc: use devm_regulator_get_optional() for vmmc mmc: sdhci-of-at91: fix platform_no_drv_owner.cocci warnings mmc: sh_mmcif: Fix suspend process mmc: usdhi6rol0: fix error return code ...
Diffstat (limited to 'include')
-rw-r--r--include/linux/mmc/card.h3
-rw-r--r--include/linux/mmc/dw_mmc.h9
-rw-r--r--include/linux/mmc/host.h3
-rw-r--r--include/linux/platform_data/mmc-esdhc-imx.h1
4 files changed, 10 insertions, 6 deletions
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
index 4d3776d25925..fdd0779ccdfa 100644
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
@@ -279,10 +279,13 @@ struct mmc_card {
279#define MMC_QUIRK_LONG_READ_TIME (1<<9) /* Data read time > CSD says */ 279#define MMC_QUIRK_LONG_READ_TIME (1<<9) /* Data read time > CSD says */
280#define MMC_QUIRK_SEC_ERASE_TRIM_BROKEN (1<<10) /* Skip secure for erase/trim */ 280#define MMC_QUIRK_SEC_ERASE_TRIM_BROKEN (1<<10) /* Skip secure for erase/trim */
281#define MMC_QUIRK_BROKEN_IRQ_POLLING (1<<11) /* Polling SDIO_CCCR_INTx could create a fake interrupt */ 281#define MMC_QUIRK_BROKEN_IRQ_POLLING (1<<11) /* Polling SDIO_CCCR_INTx could create a fake interrupt */
282#define MMC_QUIRK_TRIM_BROKEN (1<<12) /* Skip trim */
283
282 284
283 unsigned int erase_size; /* erase size in sectors */ 285 unsigned int erase_size; /* erase size in sectors */
284 unsigned int erase_shift; /* if erase unit is power 2 */ 286 unsigned int erase_shift; /* if erase unit is power 2 */
285 unsigned int pref_erase; /* in sectors */ 287 unsigned int pref_erase; /* in sectors */
288 unsigned int eg_boundary; /* don't cross erase-group boundaries */
286 u8 erased_byte; /* value of erased bytes */ 289 u8 erased_byte; /* value of erased bytes */
287 290
288 u32 raw_cid[4]; /* raw card CID */ 291 u32 raw_cid[4]; /* raw card CID */
diff --git a/include/linux/mmc/dw_mmc.h b/include/linux/mmc/dw_mmc.h
index 5be97676f1fa..134c57422740 100644
--- a/include/linux/mmc/dw_mmc.h
+++ b/include/linux/mmc/dw_mmc.h
@@ -98,6 +98,7 @@ struct mmc_data;
98 * @irq_flags: The flags to be passed to request_irq. 98 * @irq_flags: The flags to be passed to request_irq.
99 * @irq: The irq value to be passed to request_irq. 99 * @irq: The irq value to be passed to request_irq.
100 * @sdio_id0: Number of slot0 in the SDIO interrupt registers. 100 * @sdio_id0: Number of slot0 in the SDIO interrupt registers.
101 * @dto_timer: Timer for broken data transfer over scheme.
101 * 102 *
102 * Locking 103 * Locking
103 * ======= 104 * =======
@@ -153,11 +154,7 @@ struct dw_mci {
153 dma_addr_t sg_dma; 154 dma_addr_t sg_dma;
154 void *sg_cpu; 155 void *sg_cpu;
155 const struct dw_mci_dma_ops *dma_ops; 156 const struct dw_mci_dma_ops *dma_ops;
156#ifdef CONFIG_MMC_DW_IDMAC
157 unsigned int ring_size; 157 unsigned int ring_size;
158#else
159 struct dw_mci_dma_data *dma_data;
160#endif
161 u32 cmd_status; 158 u32 cmd_status;
162 u32 data_status; 159 u32 data_status;
163 u32 stop_cmdr; 160 u32 stop_cmdr;
@@ -204,6 +201,7 @@ struct dw_mci {
204 int sdio_id0; 201 int sdio_id0;
205 202
206 struct timer_list cmd11_timer; 203 struct timer_list cmd11_timer;
204 struct timer_list dto_timer;
207}; 205};
208 206
209/* DMA ops for Internal/External DMAC interface */ 207/* DMA ops for Internal/External DMAC interface */
@@ -226,6 +224,8 @@ struct dw_mci_dma_ops {
226#define DW_MCI_QUIRK_HIGHSPEED BIT(2) 224#define DW_MCI_QUIRK_HIGHSPEED BIT(2)
227/* Unreliable card detection */ 225/* Unreliable card detection */
228#define DW_MCI_QUIRK_BROKEN_CARD_DETECTION BIT(3) 226#define DW_MCI_QUIRK_BROKEN_CARD_DETECTION BIT(3)
227/* Timer for broken data transfer over scheme */
228#define DW_MCI_QUIRK_BROKEN_DTO BIT(4)
229 229
230struct dma_pdata; 230struct dma_pdata;
231 231
@@ -259,7 +259,6 @@ struct dw_mci_board {
259 259
260 struct dw_mci_dma_ops *dma_ops; 260 struct dw_mci_dma_ops *dma_ops;
261 struct dma_pdata *data; 261 struct dma_pdata *data;
262 struct block_settings *blk_settings;
263}; 262};
264 263
265#endif /* LINUX_MMC_DW_MMC_H */ 264#endif /* LINUX_MMC_DW_MMC_H */
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
index 1369e54faeb7..83b81fd865f3 100644
--- a/include/linux/mmc/host.h
+++ b/include/linux/mmc/host.h
@@ -412,7 +412,8 @@ static inline void mmc_signal_sdio_irq(struct mmc_host *host)
412{ 412{
413 host->ops->enable_sdio_irq(host, 0); 413 host->ops->enable_sdio_irq(host, 0);
414 host->sdio_irq_pending = true; 414 host->sdio_irq_pending = true;
415 wake_up_process(host->sdio_irq_thread); 415 if (host->sdio_irq_thread)
416 wake_up_process(host->sdio_irq_thread);
416} 417}
417 418
418void sdio_run_irqs(struct mmc_host *host); 419void sdio_run_irqs(struct mmc_host *host);
diff --git a/include/linux/platform_data/mmc-esdhc-imx.h b/include/linux/platform_data/mmc-esdhc-imx.h
index e1571efa3f2b..95ccab3f454a 100644
--- a/include/linux/platform_data/mmc-esdhc-imx.h
+++ b/include/linux/platform_data/mmc-esdhc-imx.h
@@ -45,5 +45,6 @@ struct esdhc_platform_data {
45 int max_bus_width; 45 int max_bus_width;
46 bool support_vsel; 46 bool support_vsel;
47 unsigned int delay_line; 47 unsigned int delay_line;
48 unsigned int tuning_step; /* The delay cell steps in tuning procedure */
48}; 49};
49#endif /* __ASM_ARCH_IMX_ESDHC_H */ 50#endif /* __ASM_ARCH_IMX_ESDHC_H */