aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/mmc/host/sdhci-esdhc-imx.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
index de2655e0db20..d7e9d365a32c 100644
--- a/drivers/mmc/host/sdhci-esdhc-imx.c
+++ b/drivers/mmc/host/sdhci-esdhc-imx.c
@@ -576,19 +576,17 @@ static unsigned int esdhc_pltfm_get_max_clock(struct sdhci_host *host)
576 struct pltfm_imx_data *imx_data = pltfm_host->priv; 576 struct pltfm_imx_data *imx_data = pltfm_host->priv;
577 struct esdhc_platform_data *boarddata = &imx_data->boarddata; 577 struct esdhc_platform_data *boarddata = &imx_data->boarddata;
578 578
579 u32 f_host = clk_get_rate(pltfm_host->clk); 579 if (boarddata->f_max && (boarddata->f_max < pltfm_host->clock))
580
581 if (boarddata->f_max && (boarddata->f_max < f_host))
582 return boarddata->f_max; 580 return boarddata->f_max;
583 else 581 else
584 return f_host; 582 return pltfm_host->clock;
585} 583}
586 584
587static unsigned int esdhc_pltfm_get_min_clock(struct sdhci_host *host) 585static unsigned int esdhc_pltfm_get_min_clock(struct sdhci_host *host)
588{ 586{
589 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); 587 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
590 588
591 return clk_get_rate(pltfm_host->clk) / 256 / 16; 589 return pltfm_host->clock / 256 / 16;
592} 590}
593 591
594static inline void esdhc_pltfm_set_clock(struct sdhci_host *host, 592static inline void esdhc_pltfm_set_clock(struct sdhci_host *host,
@@ -596,7 +594,7 @@ static inline void esdhc_pltfm_set_clock(struct sdhci_host *host,
596{ 594{
597 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); 595 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
598 struct pltfm_imx_data *imx_data = pltfm_host->priv; 596 struct pltfm_imx_data *imx_data = pltfm_host->priv;
599 unsigned int host_clock = clk_get_rate(pltfm_host->clk); 597 unsigned int host_clock = pltfm_host->clock;
600 int pre_div = 2; 598 int pre_div = 2;
601 int div = 1; 599 int div = 1;
602 u32 temp, val; 600 u32 temp, val;
@@ -997,7 +995,7 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
997 } 995 }
998 996
999 pltfm_host->clk = imx_data->clk_per; 997 pltfm_host->clk = imx_data->clk_per;
1000 998 pltfm_host->clock = clk_get_rate(pltfm_host->clk);
1001 clk_prepare_enable(imx_data->clk_per); 999 clk_prepare_enable(imx_data->clk_per);
1002 clk_prepare_enable(imx_data->clk_ipg); 1000 clk_prepare_enable(imx_data->clk_ipg);
1003 clk_prepare_enable(imx_data->clk_ahb); 1001 clk_prepare_enable(imx_data->clk_ahb);