|
@@ -203,17 +203,23 @@ static void sdhci_s3c_set_clock(struct sdhci_host *host, unsigned int clock)
|
|
|
writel(ctrl, host->ioaddr + S3C_SDHCI_CONTROL2);
|
|
|
}
|
|
|
|
|
|
- /* reconfigure the hardware for new clock rate */
|
|
|
-
|
|
|
- {
|
|
|
- struct mmc_ios ios;
|
|
|
-
|
|
|
- ios.clock = clock;
|
|
|
-
|
|
|
- if (ourhost->pdata->cfg_card)
|
|
|
- (ourhost->pdata->cfg_card)(ourhost->pdev, host->ioaddr,
|
|
|
- &ios, NULL);
|
|
|
- }
|
|
|
+ /* reprogram default hardware configuration */
|
|
|
+ writel(S3C64XX_SDHCI_CONTROL4_DRIVE_9mA,
|
|
|
+ host->ioaddr + S3C64XX_SDHCI_CONTROL4);
|
|
|
+
|
|
|
+ ctrl = readl(host->ioaddr + S3C_SDHCI_CONTROL2);
|
|
|
+ ctrl |= (S3C64XX_SDHCI_CTRL2_ENSTAASYNCCLR |
|
|
|
+ S3C64XX_SDHCI_CTRL2_ENCMDCNFMSK |
|
|
|
+ S3C_SDHCI_CTRL2_ENFBCLKRX |
|
|
|
+ S3C_SDHCI_CTRL2_DFCNT_NONE |
|
|
|
+ S3C_SDHCI_CTRL2_ENCLKOUTHOLD);
|
|
|
+ writel(ctrl, host->ioaddr + S3C_SDHCI_CONTROL2);
|
|
|
+
|
|
|
+ /* reconfigure the controller for new clock rate */
|
|
|
+ ctrl = (S3C_SDHCI_CTRL3_FCSEL1 | S3C_SDHCI_CTRL3_FCSEL0);
|
|
|
+ if (clock < 25 * 1000000)
|
|
|
+ ctrl |= (S3C_SDHCI_CTRL3_FCSEL3 | S3C_SDHCI_CTRL3_FCSEL2);
|
|
|
+ writel(ctrl, host->ioaddr + S3C_SDHCI_CONTROL3);
|
|
|
}
|
|
|
|
|
|
/**
|