diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-06-05 19:11:43 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-06-05 19:11:43 -0400 |
commit | f60342fac9fae20ada2cd5faadbc2a1337cae03f (patch) | |
tree | fe64b1cb3ea699d819e5e808264903aee2d8dc9a /drivers/mmc/core/mmc.c | |
parent | 5231804cf9e584f3e7e763a0d6d2fffe011c1bce (diff) | |
parent | ef5332c10d4f332a2ac79e9ad5452f4e89d1815a (diff) |
Merge tag 'mmc-v4.18' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc
Pull MMC updates from Ulf Hansson:
"MMC core:
- Decrease polling rate for erase/trim/discard
- Allow non-sleeping GPIOs for card detect
- Improve mmc block removal path
- Enable support for mmc_sw_reset() for SDIO cards
- Add mmc_sw_reset() to allow users to do a soft reset of the card
- Allow power delay to be tunable via DT
- Allow card detect debounce delay to be tunable via DT
- Enable new quirk to limit clock rate for Marvell 8887 chip
- Don't show eMMC RPMB and BOOT areas in /proc/partitions
- Add capability to avoid 3.3V signaling for fragile HWs
MMC host:
- Improve/fixup support for handle highmem pages
- Remove depends on HAS_DMA in case of platform dependency
- mvsdio: Enable support for erase/trim/discard
- rtsx_usb: Enable support for erase/trim/discard
- renesas_sdhi: Fix WP logic regressions
- renesas_sdhi: Add r8a77965 support
- renesas_sdhi: Add R8A77980 to whitelist
- meson: Add optional support for device reset
- meson: Add support for the Meson-AXG platform
- dw_mmc: Add new driver for BlueField DW variant
- mediatek: Add support for 64G DRAM DMA
- sunxi: Deploy runtime PM support
- jz4740: Add support for JZ4780
- jz4740: Enable support for DT based platforms
- sdhci: Various improvement to timeout handling
- sdhci: Disable support for HS200/HS400/UHS when no 1.8V support
- sdhci-omap: Add support for controller in k2g SoC
- sdhci-omap: Add workarounds for a couple of Erratas
- sdhci-omap: Enable support for generic sdhci DT properties
- sdhci-cadence: Re-send tune request to deal with errata
- sdhci-pci: Fix 3.3V voltage switch for some BYT-based Intel controllers
- sdhci-pci: Avoid 3.3V signaling on some NI 904x
- sdhci-esdhc-imx: Use watermark levels for PIO access
- sdhci-msm: Improve card detection handling
- sdhci-msm: Add support voltage pad switching"
* tag 'mmc-v4.18' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc: (104 commits)
mmc: renesas_sdhi: really fix WP logic regressions
mmc: mvsdio: Enable MMC_CAP_ERASE
mmc: mvsdio: Respect card busy time out from mmc core
mmc: sdhci-msm: Remove NO_CARD_NO_RESET quirk
mmc: sunxi: Use ifdef rather than __maybe_unused
mmc: mxmmc: Use ifdef rather than __maybe_unused
mmc: mxmmc: include linux/highmem.h
mmc: sunxi: mark PM functions as __maybe_unused
mmc: Throttle calls to MMC_SEND_STATUS during mmc_do_erase()
mmc: au1xmmc: handle highmem pages
mmc: Allow non-sleeping GPIO cd
mmc: sdhci-*: Don't emit error msg if sdhci_add_host() fails
mmc: sd: Define name for default speed dtr
mmc: core: Move calls to ->prepare_hs400_tuning() closer to mmc code
mmc: sdhci-xenon: use match_string() helper
mmc: wbsd: handle highmem pages
mmc: ushc: handle highmem pages
mmc: mxcmmc: handle highmem pages
mmc: atmel-mci: use sg_copy_{from,to}_buffer
mmc: android-goldfish: use sg_copy_{from,to}_buffer
...
Diffstat (limited to 'drivers/mmc/core/mmc.c')
-rw-r--r-- | drivers/mmc/core/mmc.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c index 6f8ebd6caa4c..4466f5de54d4 100644 --- a/drivers/mmc/core/mmc.c +++ b/drivers/mmc/core/mmc.c | |||
@@ -1282,6 +1282,10 @@ int mmc_hs400_to_hs200(struct mmc_card *card) | |||
1282 | 1282 | ||
1283 | mmc_set_bus_speed(card); | 1283 | mmc_set_bus_speed(card); |
1284 | 1284 | ||
1285 | /* Prepare tuning for HS400 mode. */ | ||
1286 | if (host->ops->prepare_hs400_tuning) | ||
1287 | host->ops->prepare_hs400_tuning(host, &host->ios); | ||
1288 | |||
1285 | return 0; | 1289 | return 0; |
1286 | 1290 | ||
1287 | out_err: | 1291 | out_err: |
@@ -1830,6 +1834,14 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, | |||
1830 | } | 1834 | } |
1831 | } | 1835 | } |
1832 | 1836 | ||
1837 | if (host->caps2 & MMC_CAP2_AVOID_3_3V && | ||
1838 | host->ios.signal_voltage == MMC_SIGNAL_VOLTAGE_330) { | ||
1839 | pr_err("%s: Host failed to negotiate down from 3.3V\n", | ||
1840 | mmc_hostname(host)); | ||
1841 | err = -EINVAL; | ||
1842 | goto free_card; | ||
1843 | } | ||
1844 | |||
1833 | if (!oldcard) | 1845 | if (!oldcard) |
1834 | host->card = card; | 1846 | host->card = card; |
1835 | 1847 | ||
@@ -2117,7 +2129,7 @@ static int mmc_can_reset(struct mmc_card *card) | |||
2117 | return 1; | 2129 | return 1; |
2118 | } | 2130 | } |
2119 | 2131 | ||
2120 | static int mmc_reset(struct mmc_host *host) | 2132 | static int _mmc_hw_reset(struct mmc_host *host) |
2121 | { | 2133 | { |
2122 | struct mmc_card *card = host->card; | 2134 | struct mmc_card *card = host->card; |
2123 | 2135 | ||
@@ -2151,7 +2163,7 @@ static const struct mmc_bus_ops mmc_ops = { | |||
2151 | .runtime_resume = mmc_runtime_resume, | 2163 | .runtime_resume = mmc_runtime_resume, |
2152 | .alive = mmc_alive, | 2164 | .alive = mmc_alive, |
2153 | .shutdown = mmc_shutdown, | 2165 | .shutdown = mmc_shutdown, |
2154 | .reset = mmc_reset, | 2166 | .hw_reset = _mmc_hw_reset, |
2155 | }; | 2167 | }; |
2156 | 2168 | ||
2157 | /* | 2169 | /* |