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:
commit
461d2815ac
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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 */
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue