Loading drivers/mmc/host/sdhci-msm.c +6 −17 Original line number Original line Diff line number Diff line Loading @@ -2366,21 +2366,6 @@ out: return ret; return ret; } } /* * Reset vreg by ensuring it is off during probe. A call * to enable vreg is needed to balance disable vreg */ static int sdhci_msm_vreg_reset(struct sdhci_msm_pltfm_data *pdata) { int ret; ret = sdhci_msm_setup_vreg(pdata, 1, true); if (ret) return ret; ret = sdhci_msm_setup_vreg(pdata, 0, true); return ret; } /* This init function should be called only once for each SDHC slot */ /* This init function should be called only once for each SDHC slot */ static int sdhci_msm_vreg_init(struct device *dev, static int sdhci_msm_vreg_init(struct device *dev, struct sdhci_msm_pltfm_data *pdata, struct sdhci_msm_pltfm_data *pdata, Loading Loading @@ -2415,7 +2400,7 @@ static int sdhci_msm_vreg_init(struct device *dev, if (ret) if (ret) goto vdd_reg_deinit; goto vdd_reg_deinit; } } ret = sdhci_msm_vreg_reset(pdata); if (ret) if (ret) dev_err(dev, "vreg reset failed (%d)\n", ret); dev_err(dev, "vreg reset failed (%d)\n", ret); goto out; goto out; Loading Loading @@ -2592,7 +2577,9 @@ static irqreturn_t sdhci_msm_pwr_irq(int irq, void *data) io_level = REQ_IO_HIGH; io_level = REQ_IO_HIGH; } } if (irq_status & CORE_PWRCTL_BUS_OFF) { if (irq_status & CORE_PWRCTL_BUS_OFF) { ret = sdhci_msm_setup_vreg(msm_host->pdata, false, false); if (msm_host->pltfm_init_done) ret = sdhci_msm_setup_vreg(msm_host->pdata, false, false); if (!ret) { if (!ret) { ret = sdhci_msm_setup_pins(msm_host->pdata, false); ret = sdhci_msm_setup_pins(msm_host->pdata, false); ret |= sdhci_msm_set_vdd_io_vol(msm_host->pdata, ret |= sdhci_msm_set_vdd_io_vol(msm_host->pdata, Loading Loading @@ -4668,6 +4655,8 @@ static int sdhci_msm_probe(struct platform_device *pdev) goto vreg_deinit; goto vreg_deinit; } } msm_host->pltfm_init_done = true; pm_runtime_set_active(&pdev->dev); pm_runtime_set_active(&pdev->dev); pm_runtime_enable(&pdev->dev); pm_runtime_enable(&pdev->dev); pm_runtime_set_autosuspend_delay(&pdev->dev, MSM_AUTOSUSPEND_DELAY_MS); pm_runtime_set_autosuspend_delay(&pdev->dev, MSM_AUTOSUSPEND_DELAY_MS); Loading drivers/mmc/host/sdhci-msm.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -226,6 +226,7 @@ struct sdhci_msm_host { bool mci_removed; bool mci_removed; const struct sdhci_msm_offset *offset; const struct sdhci_msm_offset *offset; bool core_3_0v_support; bool core_3_0v_support; bool pltfm_init_done; }; }; extern char *saved_command_line; extern char *saved_command_line; Loading Loading
drivers/mmc/host/sdhci-msm.c +6 −17 Original line number Original line Diff line number Diff line Loading @@ -2366,21 +2366,6 @@ out: return ret; return ret; } } /* * Reset vreg by ensuring it is off during probe. A call * to enable vreg is needed to balance disable vreg */ static int sdhci_msm_vreg_reset(struct sdhci_msm_pltfm_data *pdata) { int ret; ret = sdhci_msm_setup_vreg(pdata, 1, true); if (ret) return ret; ret = sdhci_msm_setup_vreg(pdata, 0, true); return ret; } /* This init function should be called only once for each SDHC slot */ /* This init function should be called only once for each SDHC slot */ static int sdhci_msm_vreg_init(struct device *dev, static int sdhci_msm_vreg_init(struct device *dev, struct sdhci_msm_pltfm_data *pdata, struct sdhci_msm_pltfm_data *pdata, Loading Loading @@ -2415,7 +2400,7 @@ static int sdhci_msm_vreg_init(struct device *dev, if (ret) if (ret) goto vdd_reg_deinit; goto vdd_reg_deinit; } } ret = sdhci_msm_vreg_reset(pdata); if (ret) if (ret) dev_err(dev, "vreg reset failed (%d)\n", ret); dev_err(dev, "vreg reset failed (%d)\n", ret); goto out; goto out; Loading Loading @@ -2592,7 +2577,9 @@ static irqreturn_t sdhci_msm_pwr_irq(int irq, void *data) io_level = REQ_IO_HIGH; io_level = REQ_IO_HIGH; } } if (irq_status & CORE_PWRCTL_BUS_OFF) { if (irq_status & CORE_PWRCTL_BUS_OFF) { ret = sdhci_msm_setup_vreg(msm_host->pdata, false, false); if (msm_host->pltfm_init_done) ret = sdhci_msm_setup_vreg(msm_host->pdata, false, false); if (!ret) { if (!ret) { ret = sdhci_msm_setup_pins(msm_host->pdata, false); ret = sdhci_msm_setup_pins(msm_host->pdata, false); ret |= sdhci_msm_set_vdd_io_vol(msm_host->pdata, ret |= sdhci_msm_set_vdd_io_vol(msm_host->pdata, Loading Loading @@ -4668,6 +4655,8 @@ static int sdhci_msm_probe(struct platform_device *pdev) goto vreg_deinit; goto vreg_deinit; } } msm_host->pltfm_init_done = true; pm_runtime_set_active(&pdev->dev); pm_runtime_set_active(&pdev->dev); pm_runtime_enable(&pdev->dev); pm_runtime_enable(&pdev->dev); pm_runtime_set_autosuspend_delay(&pdev->dev, MSM_AUTOSUSPEND_DELAY_MS); pm_runtime_set_autosuspend_delay(&pdev->dev, MSM_AUTOSUSPEND_DELAY_MS); Loading
drivers/mmc/host/sdhci-msm.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -226,6 +226,7 @@ struct sdhci_msm_host { bool mci_removed; bool mci_removed; const struct sdhci_msm_offset *offset; const struct sdhci_msm_offset *offset; bool core_3_0v_support; bool core_3_0v_support; bool pltfm_init_done; }; }; extern char *saved_command_line; extern char *saved_command_line; Loading