Loading drivers/mmc/host/sdhci-msm.c +5 −4 Original line number Original line Diff line number Diff line Loading @@ -1937,7 +1937,7 @@ struct sdhci_msm_pltfm_data *sdhci_msm_populate_pdata(struct device *dev, sdhci_msm_pm_qos_parse(dev, pdata); sdhci_msm_pm_qos_parse(dev, pdata); if (of_get_property(np, "qcom,core_3_0v_support", NULL)) if (of_get_property(np, "qcom,core_3_0v_support", NULL)) pdata->core_3_0v_support = true; msm_host->core_3_0v_support = true; pdata->sdr104_wa = of_property_read_bool(np, "qcom,sdr104-wa"); pdata->sdr104_wa = of_property_read_bool(np, "qcom,sdr104-wa"); Loading Loading @@ -2617,8 +2617,9 @@ static irqreturn_t sdhci_msm_pwr_irq(int irq, void *data) * completed before its next update to registers within hc_mem. * completed before its next update to registers within hc_mem. */ */ mb(); mb(); if ((io_level & REQ_IO_HIGH) && if ((io_level & REQ_IO_HIGH) && (msm_host->caps_0 & CORE_3_0V_SUPPORT)) (msm_host->caps_0 & CORE_3_0V_SUPPORT) && !msm_host->core_3_0v_support) writel_relaxed((readl_relaxed(host->ioaddr + writel_relaxed((readl_relaxed(host->ioaddr + msm_host_offset->CORE_VENDOR_SPEC) & msm_host_offset->CORE_VENDOR_SPEC) & ~CORE_IO_PAD_PWR_SWITCH), host->ioaddr + ~CORE_IO_PAD_PWR_SWITCH), host->ioaddr + Loading Loading @@ -4024,7 +4025,7 @@ static void sdhci_set_default_hw_caps(struct sdhci_msm_host *msm_host, msm_host->use_14lpp_dll = true; msm_host->use_14lpp_dll = true; /* Fake 3.0V support for SDIO devices which requires such voltage */ /* Fake 3.0V support for SDIO devices which requires such voltage */ if (msm_host->pdata->core_3_0v_support) { if (msm_host->core_3_0v_support) { caps |= CORE_3_0V_SUPPORT; caps |= CORE_3_0V_SUPPORT; writel_relaxed((readl_relaxed(host->ioaddr + writel_relaxed((readl_relaxed(host->ioaddr + SDHCI_CAPABILITIES) | caps), host->ioaddr + SDHCI_CAPABILITIES) | caps), host->ioaddr + Loading drivers/mmc/host/sdhci-msm.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -150,7 +150,6 @@ struct sdhci_msm_pltfm_data { u32 *sup_ice_clk_table; u32 *sup_ice_clk_table; unsigned char sup_ice_clk_cnt; unsigned char sup_ice_clk_cnt; struct sdhci_msm_pm_qos_data pm_qos_data; struct sdhci_msm_pm_qos_data pm_qos_data; bool core_3_0v_support; bool sdr104_wa; bool sdr104_wa; }; }; Loading Loading @@ -218,6 +217,7 @@ struct sdhci_msm_host { bool tuning_in_progress; bool tuning_in_progress; bool mci_removed; bool mci_removed; const struct sdhci_msm_offset *offset; const struct sdhci_msm_offset *offset; bool core_3_0v_support; }; }; extern char *saved_command_line; extern char *saved_command_line; Loading Loading
drivers/mmc/host/sdhci-msm.c +5 −4 Original line number Original line Diff line number Diff line Loading @@ -1937,7 +1937,7 @@ struct sdhci_msm_pltfm_data *sdhci_msm_populate_pdata(struct device *dev, sdhci_msm_pm_qos_parse(dev, pdata); sdhci_msm_pm_qos_parse(dev, pdata); if (of_get_property(np, "qcom,core_3_0v_support", NULL)) if (of_get_property(np, "qcom,core_3_0v_support", NULL)) pdata->core_3_0v_support = true; msm_host->core_3_0v_support = true; pdata->sdr104_wa = of_property_read_bool(np, "qcom,sdr104-wa"); pdata->sdr104_wa = of_property_read_bool(np, "qcom,sdr104-wa"); Loading Loading @@ -2617,8 +2617,9 @@ static irqreturn_t sdhci_msm_pwr_irq(int irq, void *data) * completed before its next update to registers within hc_mem. * completed before its next update to registers within hc_mem. */ */ mb(); mb(); if ((io_level & REQ_IO_HIGH) && if ((io_level & REQ_IO_HIGH) && (msm_host->caps_0 & CORE_3_0V_SUPPORT)) (msm_host->caps_0 & CORE_3_0V_SUPPORT) && !msm_host->core_3_0v_support) writel_relaxed((readl_relaxed(host->ioaddr + writel_relaxed((readl_relaxed(host->ioaddr + msm_host_offset->CORE_VENDOR_SPEC) & msm_host_offset->CORE_VENDOR_SPEC) & ~CORE_IO_PAD_PWR_SWITCH), host->ioaddr + ~CORE_IO_PAD_PWR_SWITCH), host->ioaddr + Loading Loading @@ -4024,7 +4025,7 @@ static void sdhci_set_default_hw_caps(struct sdhci_msm_host *msm_host, msm_host->use_14lpp_dll = true; msm_host->use_14lpp_dll = true; /* Fake 3.0V support for SDIO devices which requires such voltage */ /* Fake 3.0V support for SDIO devices which requires such voltage */ if (msm_host->pdata->core_3_0v_support) { if (msm_host->core_3_0v_support) { caps |= CORE_3_0V_SUPPORT; caps |= CORE_3_0V_SUPPORT; writel_relaxed((readl_relaxed(host->ioaddr + writel_relaxed((readl_relaxed(host->ioaddr + SDHCI_CAPABILITIES) | caps), host->ioaddr + SDHCI_CAPABILITIES) | caps), host->ioaddr + Loading
drivers/mmc/host/sdhci-msm.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -150,7 +150,6 @@ struct sdhci_msm_pltfm_data { u32 *sup_ice_clk_table; u32 *sup_ice_clk_table; unsigned char sup_ice_clk_cnt; unsigned char sup_ice_clk_cnt; struct sdhci_msm_pm_qos_data pm_qos_data; struct sdhci_msm_pm_qos_data pm_qos_data; bool core_3_0v_support; bool sdr104_wa; bool sdr104_wa; }; }; Loading Loading @@ -218,6 +217,7 @@ struct sdhci_msm_host { bool tuning_in_progress; bool tuning_in_progress; bool mci_removed; bool mci_removed; const struct sdhci_msm_offset *offset; const struct sdhci_msm_offset *offset; bool core_3_0v_support; }; }; extern char *saved_command_line; extern char *saved_command_line; Loading