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/host.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/host.c')
-rw-r--r-- | drivers/mmc/core/host.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c index 64b03d6eaf18..abf9e884386c 100644 --- a/drivers/mmc/core/host.c +++ b/drivers/mmc/core/host.c | |||
@@ -143,9 +143,6 @@ int mmc_retune(struct mmc_host *host) | |||
143 | goto out; | 143 | goto out; |
144 | 144 | ||
145 | return_to_hs400 = true; | 145 | return_to_hs400 = true; |
146 | |||
147 | if (host->ops->prepare_hs400_tuning) | ||
148 | host->ops->prepare_hs400_tuning(host, &host->ios); | ||
149 | } | 146 | } |
150 | 147 | ||
151 | err = mmc_execute_tuning(host->card); | 148 | err = mmc_execute_tuning(host->card); |
@@ -179,7 +176,7 @@ static void mmc_retune_timer(struct timer_list *t) | |||
179 | int mmc_of_parse(struct mmc_host *host) | 176 | int mmc_of_parse(struct mmc_host *host) |
180 | { | 177 | { |
181 | struct device *dev = host->parent; | 178 | struct device *dev = host->parent; |
182 | u32 bus_width, drv_type; | 179 | u32 bus_width, drv_type, cd_debounce_delay_ms; |
183 | int ret; | 180 | int ret; |
184 | bool cd_cap_invert, cd_gpio_invert = false; | 181 | bool cd_cap_invert, cd_gpio_invert = false; |
185 | bool ro_cap_invert, ro_gpio_invert = false; | 182 | bool ro_cap_invert, ro_gpio_invert = false; |
@@ -230,11 +227,16 @@ int mmc_of_parse(struct mmc_host *host) | |||
230 | } else { | 227 | } else { |
231 | cd_cap_invert = device_property_read_bool(dev, "cd-inverted"); | 228 | cd_cap_invert = device_property_read_bool(dev, "cd-inverted"); |
232 | 229 | ||
230 | if (device_property_read_u32(dev, "cd-debounce-delay-ms", | ||
231 | &cd_debounce_delay_ms)) | ||
232 | cd_debounce_delay_ms = 200; | ||
233 | |||
233 | if (device_property_read_bool(dev, "broken-cd")) | 234 | if (device_property_read_bool(dev, "broken-cd")) |
234 | host->caps |= MMC_CAP_NEEDS_POLL; | 235 | host->caps |= MMC_CAP_NEEDS_POLL; |
235 | 236 | ||
236 | ret = mmc_gpiod_request_cd(host, "cd", 0, true, | 237 | ret = mmc_gpiod_request_cd(host, "cd", 0, true, |
237 | 0, &cd_gpio_invert); | 238 | cd_debounce_delay_ms, |
239 | &cd_gpio_invert); | ||
238 | if (!ret) | 240 | if (!ret) |
239 | dev_info(host->parent, "Got CD GPIO\n"); | 241 | dev_info(host->parent, "Got CD GPIO\n"); |
240 | else if (ret != -ENOENT && ret != -ENOSYS) | 242 | else if (ret != -ENOENT && ret != -ENOSYS) |
@@ -338,6 +340,9 @@ int mmc_of_parse(struct mmc_host *host) | |||
338 | host->dsr_req = 0; | 340 | host->dsr_req = 0; |
339 | } | 341 | } |
340 | 342 | ||
343 | device_property_read_u32(dev, "post-power-on-delay-ms", | ||
344 | &host->ios.power_delay_ms); | ||
345 | |||
341 | return mmc_pwrseq_alloc(host); | 346 | return mmc_pwrseq_alloc(host); |
342 | } | 347 | } |
343 | 348 | ||
@@ -403,6 +408,7 @@ struct mmc_host *mmc_alloc_host(int extra, struct device *dev) | |||
403 | host->max_blk_count = PAGE_SIZE / 512; | 408 | host->max_blk_count = PAGE_SIZE / 512; |
404 | 409 | ||
405 | host->fixed_drv_type = -EINVAL; | 410 | host->fixed_drv_type = -EINVAL; |
411 | host->ios.power_delay_ms = 10; | ||
406 | 412 | ||
407 | return host; | 413 | return host; |
408 | } | 414 | } |