Add a set_ios hook which is called when the SDHCI driver is called to change parameters such as clock or card width. Signed-off-by: Ben Dooks Index: linux.git/drivers/mmc/host/sdhci.c =================================================================== --- linux.git.orig/drivers/mmc/host/sdhci.c 2008-12-01 19:26:25.000000000 +0000 +++ linux.git/drivers/mmc/host/sdhci.c 2008-12-02 14:36:47.000000000 +0000 @@ -1038,6 +1038,9 @@ static void sdhci_set_ios(struct mmc_hos sdhci_init(host); } + if (host->ops->set_ios) + host->ops->set_ios(host, ios); + sdhci_set_clock(host, ios->clock); if (ios->power_mode == MMC_POWER_OFF) @@ -1615,11 +1618,12 @@ int sdhci_add_host(struct sdhci_host *ho if (host->max_clk == 0) { if (host->ops->get_max_clock) host->max_clk = host->ops->get_max_clock(host); - else + else { printk(KERN_ERR "%s: Hardware doesn't specify base clock " "frequency.\n", mmc_hostname(mmc)); - return -ENODEV; + return -ENODEV; + } } host->timeout_clk = @@ -1627,11 +1631,12 @@ int sdhci_add_host(struct sdhci_host *ho if (host->timeout_clk == 0) { if (host->ops->get_timeout_clock) host->timeout_clk = host->ops->get_timeout_clock(host); - else + else { printk(KERN_ERR "%s: Hardware doesn't specify timeout clock " "frequency.\n", mmc_hostname(mmc)); - return -ENODEV; + return -ENODEV; + } } if (caps & SDHCI_TIMEOUT_CLK_UNIT) host->timeout_clk *= 1000; Index: linux.git/drivers/mmc/host/sdhci.h =================================================================== --- linux.git.orig/drivers/mmc/host/sdhci.h 2008-12-01 19:17:55.000000000 +0000 +++ linux.git/drivers/mmc/host/sdhci.h 2008-12-02 14:36:39.000000000 +0000 @@ -269,6 +269,9 @@ struct sdhci_ops { int (*enable_dma)(struct sdhci_host *host); unsigned int (*get_max_clock)(struct sdhci_host *host); unsigned int (*get_timeout_clock)(struct sdhci_host *host); + + void (*set_ios)(struct sdhci_host *host, + struct mmc_ios *ios); }; -- Ben (ben@fluff.org, http://www.fluff.org/) 'a smiley only costs 4 bytes' -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/