Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'mmc-v6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc

Pull MMC host fixes from Ulf Hansson:

- moxart: Fix regression for sg_miter for PIO mode

- sdhci-msm: Avoid hang by preventing access to suspended controller

- sdhci-of-dwcmshc: Fix SD card tuning error for th1520

* tag 'mmc-v6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc:
mmc: moxart: fix handling of sgm->consumed, otherwise WARN_ON triggers
mmc: sdhci-of-dwcmshc: th1520: Increase tuning loop count to 128
mmc: sdhci-msm: pervent access to suspended controller

+17 -1
+1
drivers/mmc/host/moxart-mmc.c
··· 300 300 remain = sgm->length; 301 301 if (remain > host->data_len) 302 302 remain = host->data_len; 303 + sgm->consumed = 0; 303 304 304 305 if (data->flags & MMC_DATA_WRITE) { 305 306 while (remain > 0) {
+15 -1
drivers/mmc/host/sdhci-msm.c
··· 2694 2694 struct sdhci_host *host = dev_get_drvdata(dev); 2695 2695 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); 2696 2696 struct sdhci_msm_host *msm_host = sdhci_pltfm_priv(pltfm_host); 2697 + unsigned long flags; 2698 + 2699 + spin_lock_irqsave(&host->lock, flags); 2700 + host->runtime_suspended = true; 2701 + spin_unlock_irqrestore(&host->lock, flags); 2697 2702 2698 2703 /* Drop the performance vote */ 2699 2704 dev_pm_opp_set_rate(dev, 0); ··· 2713 2708 struct sdhci_host *host = dev_get_drvdata(dev); 2714 2709 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); 2715 2710 struct sdhci_msm_host *msm_host = sdhci_pltfm_priv(pltfm_host); 2711 + unsigned long flags; 2716 2712 int ret; 2717 2713 2718 2714 ret = clk_bulk_prepare_enable(ARRAY_SIZE(msm_host->bulk_clks), ··· 2732 2726 2733 2727 dev_pm_opp_set_rate(dev, msm_host->clk_rate); 2734 2728 2735 - return sdhci_msm_ice_resume(msm_host); 2729 + ret = sdhci_msm_ice_resume(msm_host); 2730 + if (ret) 2731 + return ret; 2732 + 2733 + spin_lock_irqsave(&host->lock, flags); 2734 + host->runtime_suspended = false; 2735 + spin_unlock_irqrestore(&host->lock, flags); 2736 + 2737 + return ret; 2736 2738 } 2737 2739 2738 2740 static const struct dev_pm_ops sdhci_msm_pm_ops = {
+1
drivers/mmc/host/sdhci-of-dwcmshc.c
··· 626 626 627 627 /* perform tuning */ 628 628 sdhci_start_tuning(host); 629 + host->tuning_loop_count = 128; 629 630 host->tuning_err = __sdhci_execute_tuning(host, opcode); 630 631 if (host->tuning_err) { 631 632 /* disable auto-tuning upon tuning error */