diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-09-26 19:54:22 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-09-26 19:54:22 -0400 |
| commit | dc972a67cc54585bd83ad811c4e9b6ab3dcd427e (patch) | |
| tree | 511f7847bac8ba22ef2a2b94494343c964399619 /drivers | |
| parent | fc46820b27a2d9a46f7e90c9ceb4a64a1bc5fab8 (diff) | |
| parent | 6ae033689d7b1a419def78e8e990b0eab8bb6419 (diff) | |
Merge tag 'mmc-v4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc
Pull MMC fixes from Ulf Hansson:
- sdhci-pci: Fix voltage switch for some Intel host controllers
- tmio: remove broken and noisy debug macro
* tag 'mmc-v4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc:
mmc: sdhci-pci: Fix voltage switch for some Intel host controllers
mmc: tmio: remove broken and noisy debug macro
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/mmc/host/sdhci-pci-core.c | 15 | ||||
| -rw-r--r-- | drivers/mmc/host/tmio_mmc_core.c | 47 |
2 files changed, 15 insertions, 47 deletions
diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c index bbaddf18a1b3..d0ccc6729fd2 100644 --- a/drivers/mmc/host/sdhci-pci-core.c +++ b/drivers/mmc/host/sdhci-pci-core.c | |||
| @@ -392,6 +392,7 @@ static const struct sdhci_pci_fixes sdhci_intel_pch_sdio = { | |||
| 392 | 392 | ||
| 393 | enum { | 393 | enum { |
| 394 | INTEL_DSM_FNS = 0, | 394 | INTEL_DSM_FNS = 0, |
| 395 | INTEL_DSM_V18_SWITCH = 3, | ||
| 395 | INTEL_DSM_DRV_STRENGTH = 9, | 396 | INTEL_DSM_DRV_STRENGTH = 9, |
| 396 | INTEL_DSM_D3_RETUNE = 10, | 397 | INTEL_DSM_D3_RETUNE = 10, |
| 397 | }; | 398 | }; |
| @@ -557,6 +558,19 @@ static void intel_hs400_enhanced_strobe(struct mmc_host *mmc, | |||
| 557 | sdhci_writel(host, val, INTEL_HS400_ES_REG); | 558 | sdhci_writel(host, val, INTEL_HS400_ES_REG); |
| 558 | } | 559 | } |
| 559 | 560 | ||
| 561 | static void sdhci_intel_voltage_switch(struct sdhci_host *host) | ||
| 562 | { | ||
| 563 | struct sdhci_pci_slot *slot = sdhci_priv(host); | ||
| 564 | struct intel_host *intel_host = sdhci_pci_priv(slot); | ||
| 565 | struct device *dev = &slot->chip->pdev->dev; | ||
| 566 | u32 result = 0; | ||
| 567 | int err; | ||
| 568 | |||
| 569 | err = intel_dsm(intel_host, dev, INTEL_DSM_V18_SWITCH, &result); | ||
| 570 | pr_debug("%s: %s DSM error %d result %u\n", | ||
| 571 | mmc_hostname(host->mmc), __func__, err, result); | ||
| 572 | } | ||
| 573 | |||
| 560 | static const struct sdhci_ops sdhci_intel_byt_ops = { | 574 | static const struct sdhci_ops sdhci_intel_byt_ops = { |
| 561 | .set_clock = sdhci_set_clock, | 575 | .set_clock = sdhci_set_clock, |
| 562 | .set_power = sdhci_intel_set_power, | 576 | .set_power = sdhci_intel_set_power, |
| @@ -565,6 +579,7 @@ static const struct sdhci_ops sdhci_intel_byt_ops = { | |||
| 565 | .reset = sdhci_reset, | 579 | .reset = sdhci_reset, |
| 566 | .set_uhs_signaling = sdhci_set_uhs_signaling, | 580 | .set_uhs_signaling = sdhci_set_uhs_signaling, |
| 567 | .hw_reset = sdhci_pci_hw_reset, | 581 | .hw_reset = sdhci_pci_hw_reset, |
| 582 | .voltage_switch = sdhci_intel_voltage_switch, | ||
| 568 | }; | 583 | }; |
| 569 | 584 | ||
| 570 | static void byt_read_dsm(struct sdhci_pci_slot *slot) | 585 | static void byt_read_dsm(struct sdhci_pci_slot *slot) |
diff --git a/drivers/mmc/host/tmio_mmc_core.c b/drivers/mmc/host/tmio_mmc_core.c index 12cf8288d663..a7293e186e03 100644 --- a/drivers/mmc/host/tmio_mmc_core.c +++ b/drivers/mmc/host/tmio_mmc_core.c | |||
| @@ -129,50 +129,6 @@ static int tmio_mmc_next_sg(struct tmio_mmc_host *host) | |||
| 129 | 129 | ||
| 130 | #define CMDREQ_TIMEOUT 5000 | 130 | #define CMDREQ_TIMEOUT 5000 |
| 131 | 131 | ||
| 132 | #ifdef CONFIG_MMC_DEBUG | ||
| 133 | |||
| 134 | #define STATUS_TO_TEXT(a, status, i) \ | ||
| 135 | do { \ | ||
| 136 | if ((status) & TMIO_STAT_##a) { \ | ||
| 137 | if ((i)++) \ | ||
| 138 | printk(KERN_DEBUG " | "); \ | ||
| 139 | printk(KERN_DEBUG #a); \ | ||
| 140 | } \ | ||
| 141 | } while (0) | ||
| 142 | |||
| 143 | static void pr_debug_status(u32 status) | ||
| 144 | { | ||
| 145 | int i = 0; | ||
| 146 | |||
| 147 | pr_debug("status: %08x = ", status); | ||
| 148 | STATUS_TO_TEXT(CARD_REMOVE, status, i); | ||
| 149 | STATUS_TO_TEXT(CARD_INSERT, status, i); | ||
| 150 | STATUS_TO_TEXT(SIGSTATE, status, i); | ||
| 151 | STATUS_TO_TEXT(WRPROTECT, status, i); | ||
| 152 | STATUS_TO_TEXT(CARD_REMOVE_A, status, i); | ||
| 153 | STATUS_TO_TEXT(CARD_INSERT_A, status, i); | ||
| 154 | STATUS_TO_TEXT(SIGSTATE_A, status, i); | ||
| 155 | STATUS_TO_TEXT(CMD_IDX_ERR, status, i); | ||
| 156 | STATUS_TO_TEXT(STOPBIT_ERR, status, i); | ||
| 157 | STATUS_TO_TEXT(ILL_FUNC, status, i); | ||
| 158 | STATUS_TO_TEXT(CMD_BUSY, status, i); | ||
| 159 | STATUS_TO_TEXT(CMDRESPEND, status, i); | ||
| 160 | STATUS_TO_TEXT(DATAEND, status, i); | ||
| 161 | STATUS_TO_TEXT(CRCFAIL, status, i); | ||
| 162 | STATUS_TO_TEXT(DATATIMEOUT, status, i); | ||
| 163 | STATUS_TO_TEXT(CMDTIMEOUT, status, i); | ||
| 164 | STATUS_TO_TEXT(RXOVERFLOW, status, i); | ||
| 165 | STATUS_TO_TEXT(TXUNDERRUN, status, i); | ||
| 166 | STATUS_TO_TEXT(RXRDY, status, i); | ||
| 167 | STATUS_TO_TEXT(TXRQ, status, i); | ||
| 168 | STATUS_TO_TEXT(ILL_ACCESS, status, i); | ||
| 169 | printk("\n"); | ||
| 170 | } | ||
| 171 | |||
| 172 | #else | ||
| 173 | #define pr_debug_status(s) do { } while (0) | ||
| 174 | #endif | ||
| 175 | |||
| 176 | static void tmio_mmc_enable_sdio_irq(struct mmc_host *mmc, int enable) | 132 | static void tmio_mmc_enable_sdio_irq(struct mmc_host *mmc, int enable) |
| 177 | { | 133 | { |
| 178 | struct tmio_mmc_host *host = mmc_priv(mmc); | 134 | struct tmio_mmc_host *host = mmc_priv(mmc); |
| @@ -762,9 +718,6 @@ irqreturn_t tmio_mmc_irq(int irq, void *devid) | |||
| 762 | status = sd_ctrl_read16_and_16_as_32(host, CTL_STATUS); | 718 | status = sd_ctrl_read16_and_16_as_32(host, CTL_STATUS); |
| 763 | ireg = status & TMIO_MASK_IRQ & ~host->sdcard_irq_mask; | 719 | ireg = status & TMIO_MASK_IRQ & ~host->sdcard_irq_mask; |
| 764 | 720 | ||
| 765 | pr_debug_status(status); | ||
| 766 | pr_debug_status(ireg); | ||
| 767 | |||
| 768 | /* Clear the status except the interrupt status */ | 721 | /* Clear the status except the interrupt status */ |
| 769 | sd_ctrl_write32_as_16_and_16(host, CTL_STATUS, TMIO_MASK_IRQ); | 722 | sd_ctrl_write32_as_16_and_16(host, CTL_STATUS, TMIO_MASK_IRQ); |
| 770 | 723 | ||
