@@ -35,7 +35,7 @@ struct sdhci_pxa {
struct clk *clk;
struct resource *res;
- u8 clk_enable;
+ u8 clk_enable;
};
/*****************************************************************************\
@@ -43,25 +43,17 @@ struct sdhci_pxa {
* SDHCI core callbacks *
* *
\*****************************************************************************/
-static void set_clock(struct sdhci_host *host, unsigned int clock)
+static void enable_clock(struct sdhci_host *host)
{
struct sdhci_pxa *pxa = sdhci_priv(host);
- if (clock == 0) {
- if (pxa->clk_enable) {
- clk_disable(pxa->clk);
- pxa->clk_enable = 0;
- }
- } else {
- if (0 == pxa->clk_enable) {
- clk_enable(pxa->clk);
- pxa->clk_enable = 1;
- }
+ if (pxa->clk_enable == 0) {
+ clk_enable(pxa->clk);
+ pxa->clk_enable = 1;
}
}
static struct sdhci_ops sdhci_pxa_ops = {
- .set_clock = set_clock,
};
/*****************************************************************************\
@@ -139,6 +131,9 @@ static int __devinit sdhci_pxa_probe(struct platform_device *pdev)
if (pdata->flags & PXA_FLAG_SD_8_BIT_CAPABLE_SLOT)
host->mmc->caps |= MMC_CAP_8_BIT_DATA;
+ /* do not rely on u-boot to enable the clocks */
+ enable_clock(host);
+
ret = sdhci_add_host(host);
if (ret) {
dev_err(&pdev->dev, "failed to add host\n");
@@ -184,10 +179,6 @@ static int __devexit sdhci_pxa_remove(struct platform_device *pdev)
if (pxa->res)
release_mem_region(pxa->res->start,
resource_size(pxa->res));
- if (pxa->clk_enable) {
- clk_disable(pxa->clk);
- pxa->clk_enable = 0;
- }
clk_put(pxa->clk);
sdhci_free_host(host);