]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/mmc/host/sdhci-esdhc.h
mmc: sdhci-esdhc: calculate sdclk divider from controller clock
[karo-tx-linux.git] / drivers / mmc / host / sdhci-esdhc.h
index d25f9ab9a54da919a6e54cc05743f74ad83362f1..6f16406c37cd7e2153d169e6a9429b2114f0d0b4 100644 (file)
@@ -42,7 +42,8 @@
 
 #define ESDHC_HOST_CONTROL_RES 0x05
 
-static inline void esdhc_set_clock(struct sdhci_host *host, unsigned int clock)
+static inline void esdhc_set_clock(struct sdhci_host *host, unsigned int clock,
+                                  unsigned int host_clock)
 {
        int pre_div = 2;
        int div = 1;
@@ -56,14 +57,14 @@ static inline void esdhc_set_clock(struct sdhci_host *host, unsigned int clock)
                | ESDHC_CLOCK_MASK);
        sdhci_writel(host, temp, ESDHC_SYSTEM_CONTROL);
 
-       while (host->max_clk / pre_div / 16 > clock && pre_div < 256)
+       while (host_clock / pre_div / 16 > clock && pre_div < 256)
                pre_div *= 2;
 
-       while (host->max_clk / pre_div / div > clock && div < 16)
+       while (host_clock / pre_div / div > clock && div < 16)
                div++;
 
        dev_dbg(mmc_dev(host->mmc), "desired SD clock: %d, actual: %d\n",
-               clock, host->max_clk / pre_div / div);
+               clock, host_clock / pre_div / div);
 
        pre_div >>= 1;
        div--;