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/sd.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/sd.c')
-rw-r--r-- | drivers/mmc/core/sd.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c index baf3d5da4ccb..d0d9f90e7cdf 100644 --- a/drivers/mmc/core/sd.c +++ b/drivers/mmc/core/sd.c | |||
@@ -1058,6 +1058,14 @@ retry: | |||
1058 | mmc_set_bus_width(host, MMC_BUS_WIDTH_4); | 1058 | mmc_set_bus_width(host, MMC_BUS_WIDTH_4); |
1059 | } | 1059 | } |
1060 | } | 1060 | } |
1061 | |||
1062 | if (host->caps2 & MMC_CAP2_AVOID_3_3V && | ||
1063 | host->ios.signal_voltage == MMC_SIGNAL_VOLTAGE_330) { | ||
1064 | pr_err("%s: Host failed to negotiate down from 3.3V\n", | ||
1065 | mmc_hostname(host)); | ||
1066 | err = -EINVAL; | ||
1067 | goto free_card; | ||
1068 | } | ||
1061 | done: | 1069 | done: |
1062 | host->card = card; | 1070 | host->card = card; |
1063 | return 0; | 1071 | return 0; |
@@ -1214,7 +1222,7 @@ static int mmc_sd_runtime_resume(struct mmc_host *host) | |||
1214 | return 0; | 1222 | return 0; |
1215 | } | 1223 | } |
1216 | 1224 | ||
1217 | static int mmc_sd_reset(struct mmc_host *host) | 1225 | static int mmc_sd_hw_reset(struct mmc_host *host) |
1218 | { | 1226 | { |
1219 | mmc_power_cycle(host, host->card->ocr); | 1227 | mmc_power_cycle(host, host->card->ocr); |
1220 | return mmc_sd_init_card(host, host->card->ocr, host->card); | 1228 | return mmc_sd_init_card(host, host->card->ocr, host->card); |
@@ -1229,7 +1237,7 @@ static const struct mmc_bus_ops mmc_sd_ops = { | |||
1229 | .resume = mmc_sd_resume, | 1237 | .resume = mmc_sd_resume, |
1230 | .alive = mmc_sd_alive, | 1238 | .alive = mmc_sd_alive, |
1231 | .shutdown = mmc_sd_suspend, | 1239 | .shutdown = mmc_sd_suspend, |
1232 | .reset = mmc_sd_reset, | 1240 | .hw_reset = mmc_sd_hw_reset, |
1233 | }; | 1241 | }; |
1234 | 1242 | ||
1235 | /* | 1243 | /* |