diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-09-08 19:33:16 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-09-08 19:33:16 -0400 |
| commit | 85579ad7f1dfc0b72bb243b7227bc4f663035e71 (patch) | |
| tree | ef68893bca233ea5683e49117c05b32f8c907d70 /include | |
| parent | 3af6e98f25d1f68b9c36beee330342944a4e0048 (diff) | |
| parent | 092b6dbe8a4a24c17f2ebfe86995dc994e61f420 (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.h | 3 | ||||
| -rw-r--r-- | include/linux/mmc/dw_mmc.h | 9 | ||||
| -rw-r--r-- | include/linux/mmc/host.h | 3 | ||||
| -rw-r--r-- | include/linux/platform_data/mmc-esdhc-imx.h | 1 |
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 | ||
| 230 | struct dma_pdata; | 230 | struct 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 | ||
| 418 | void sdio_run_irqs(struct mmc_host *host); | 419 | void 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 */ |
