|
@@ -48,14 +48,14 @@ static inline void esdhc_set_clock(struct sdhci_host *host, unsigned int clock)
|
|
int div = 1;
|
|
int div = 1;
|
|
u32 temp;
|
|
u32 temp;
|
|
|
|
|
|
|
|
+ if (clock == 0)
|
|
|
|
+ goto out;
|
|
|
|
+
|
|
temp = sdhci_readl(host, ESDHC_SYSTEM_CONTROL);
|
|
temp = sdhci_readl(host, ESDHC_SYSTEM_CONTROL);
|
|
temp &= ~(ESDHC_CLOCK_IPGEN | ESDHC_CLOCK_HCKEN | ESDHC_CLOCK_PEREN
|
|
temp &= ~(ESDHC_CLOCK_IPGEN | ESDHC_CLOCK_HCKEN | ESDHC_CLOCK_PEREN
|
|
| ESDHC_CLOCK_MASK);
|
|
| ESDHC_CLOCK_MASK);
|
|
sdhci_writel(host, temp, ESDHC_SYSTEM_CONTROL);
|
|
sdhci_writel(host, temp, ESDHC_SYSTEM_CONTROL);
|
|
|
|
|
|
- if (clock == 0)
|
|
|
|
- goto out;
|
|
|
|
-
|
|
|
|
while (host->max_clk / pre_div / 16 > clock && pre_div < 256)
|
|
while (host->max_clk / pre_div / 16 > clock && pre_div < 256)
|
|
pre_div *= 2;
|
|
pre_div *= 2;
|
|
|
|
|