MMC host:

- cavium: Fix DMA support
  - sdhci-sprd: Fix soft reset when runtime resuming
 -----BEGIN PGP SIGNATURE-----
 
 iQJLBAABCgA1FiEEugLDXPmKSktSkQsV/iaEJXNYjCkFAl1NQ/IXHHVsZi5oYW5z
 c29uQGxpbmFyby5vcmcACgkQ/iaEJXNYjCnu4RAAzoqXCv89hXcm3ruXfe1QALyQ
 g0fUqpcgGau2IAacIOuy0KlnkxtDuyXECNsdEhh5QxPVdroarVxSZUCXvK9ComAh
 KlxYv4zlaWTRn/sMnCLKzafJBrp0Kg5/JBVvaSgMuJYqCYTmLvWoN4JYki+ogHqE
 BtyQgz4vWi4hyE7tdBU0BwgT/ELt9/8UxW7cOYjl6xNxgIwGmJs5FI1k6D7FpdyV
 6iGW1X7/MNnaJWShSq84LrFX00GhGHB/C79giVobKTSGaYr5rj7vHDfdfDbVj0nR
 zOnbI7n8conl9KZ6JsWh3tuq1qYhCtOnhTN4mUkHnOPW1fJqEFvB14fGnZKYehxU
 qWFGephuxOvNJXkEKfca61uEjZu5HCklJ/Q3jP4F/Qne4NJpqUO7EMRR/8ruu31l
 iJEvqBoEYtuDJ1YZh6O06pLnLkiybj+4Mr4ZNnLpo83UqIKqYH6G4/MARDhXkzIM
 lZeomXyDNA3ddphP0nnHepbuJHD//sIX2mXWrM3xqem4vK7QHamaSAuL+7rdU1mG
 ScTqg5Kbhx/UhQW15Pp+Es0WiMVE22OIkAUFab9KDF9WR4LpWD7EbwzcRN/WHzld
 b0FbGsn+joa5drCWPaTbb63oClr9uqjws0+OAOHHMogHdJdQHMVAe65nynypReMM
 Pxvzh3Oj+fxWi2o570o=
 =khZR
 -----END PGP SIGNATURE-----

Merge tag 'mmc-v5.3-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc

Pull MMC fixes from Ulf Hansson:

 - cavium: Fix DMA support

 - sdhci-sprd: Fix soft reset when runtime resuming"

* tag 'mmc-v5.3-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc:
  mmc: cavium: Add the missing dma unmap when the dma has finished.
  mmc: cavium: Set the correct dma max segment size for mmc_host
  mmc: sdhci-sprd: Fix the incorrect soft reset operation when runtime resuming
This commit is contained in:
Linus Torvalds 2019-08-09 09:26:47 -07:00
commit 461d2815ac
11 changed files with 15 additions and 13 deletions

View File

@ -374,6 +374,7 @@ static int finish_dma_single(struct cvm_mmc_host *host, struct mmc_data *data)
{
data->bytes_xfered = data->blocks * data->blksz;
data->error = 0;
dma_unmap_sg(host->dev, data->sg, data->sg_len, get_dma_dir(data));
return 1;
}
@ -1046,7 +1047,8 @@ int cvm_mmc_of_slot_probe(struct device *dev, struct cvm_mmc_host *host)
mmc->max_segs = 1;
/* DMA size field can address up to 8 MB */
mmc->max_seg_size = 8 * 1024 * 1024;
mmc->max_seg_size = min_t(unsigned int, 8 * 1024 * 1024,
dma_get_max_seg_size(host->dev));
mmc->max_req_size = mmc->max_seg_size;
/* External DMA is in 512 byte blocks */
mmc->max_blk_size = 512;

View File

@ -883,7 +883,7 @@ static int sdhci_acpi_runtime_resume(struct device *dev)
sdhci_acpi_byt_setting(&c->pdev->dev);
return sdhci_runtime_resume_host(c->host);
return sdhci_runtime_resume_host(c->host, 0);
}
#endif

View File

@ -1705,7 +1705,7 @@ static int sdhci_esdhc_runtime_resume(struct device *dev)
esdhc_pltfm_set_clock(host, imx_data->actual_clock);
}
err = sdhci_runtime_resume_host(host);
err = sdhci_runtime_resume_host(host, 0);
if (err)
goto disable_ipg_clk;

View File

@ -289,7 +289,7 @@ static int sdhci_at91_runtime_resume(struct device *dev)
}
out:
return sdhci_runtime_resume_host(host);
return sdhci_runtime_resume_host(host, 0);
}
#endif /* CONFIG_PM */

View File

@ -167,7 +167,7 @@ static int sdhci_pci_runtime_suspend_host(struct sdhci_pci_chip *chip)
err_pci_runtime_suspend:
while (--i >= 0)
sdhci_runtime_resume_host(chip->slots[i]->host);
sdhci_runtime_resume_host(chip->slots[i]->host, 0);
return ret;
}
@ -181,7 +181,7 @@ static int sdhci_pci_runtime_resume_host(struct sdhci_pci_chip *chip)
if (!slot)
continue;
ret = sdhci_runtime_resume_host(slot->host);
ret = sdhci_runtime_resume_host(slot->host, 0);
if (ret)
return ret;
}

View File

@ -554,7 +554,7 @@ static int sdhci_pxav3_runtime_resume(struct device *dev)
if (!IS_ERR(pxa->clk_core))
clk_prepare_enable(pxa->clk_core);
return sdhci_runtime_resume_host(host);
return sdhci_runtime_resume_host(host, 0);
}
#endif

View File

@ -745,7 +745,7 @@ static int sdhci_s3c_runtime_resume(struct device *dev)
clk_prepare_enable(busclk);
if (ourhost->cur_clk >= 0)
clk_prepare_enable(ourhost->clk_bus[ourhost->cur_clk]);
ret = sdhci_runtime_resume_host(host);
ret = sdhci_runtime_resume_host(host, 0);
return ret;
}
#endif

View File

@ -696,7 +696,7 @@ static int sdhci_sprd_runtime_resume(struct device *dev)
if (ret)
goto clk_disable;
sdhci_runtime_resume_host(host);
sdhci_runtime_resume_host(host, 1);
return 0;
clk_disable:

View File

@ -638,7 +638,7 @@ static int xenon_runtime_resume(struct device *dev)
priv->restore_needed = false;
}
ret = sdhci_runtime_resume_host(host);
ret = sdhci_runtime_resume_host(host, 0);
if (ret)
goto out;
return 0;

View File

@ -3320,7 +3320,7 @@ int sdhci_runtime_suspend_host(struct sdhci_host *host)
}
EXPORT_SYMBOL_GPL(sdhci_runtime_suspend_host);
int sdhci_runtime_resume_host(struct sdhci_host *host)
int sdhci_runtime_resume_host(struct sdhci_host *host, int soft_reset)
{
struct mmc_host *mmc = host->mmc;
unsigned long flags;
@ -3331,7 +3331,7 @@ int sdhci_runtime_resume_host(struct sdhci_host *host)
host->ops->enable_dma(host);
}
sdhci_init(host, 0);
sdhci_init(host, soft_reset);
if (mmc->ios.power_mode != MMC_POWER_UNDEFINED &&
mmc->ios.power_mode != MMC_POWER_OFF) {

View File

@ -781,7 +781,7 @@ void sdhci_adma_write_desc(struct sdhci_host *host, void **desc,
int sdhci_suspend_host(struct sdhci_host *host);
int sdhci_resume_host(struct sdhci_host *host);
int sdhci_runtime_suspend_host(struct sdhci_host *host);
int sdhci_runtime_resume_host(struct sdhci_host *host);
int sdhci_runtime_resume_host(struct sdhci_host *host, int soft_reset);
#endif
void sdhci_cqe_enable(struct mmc_host *mmc);