diff options
author | Ben Dooks <ben-linux@fluff.org> | 2008-11-03 20:19:03 +0000 |
---|---|---|
committer | Ben Dooks <ben-linux@fluff.org> | 2008-11-03 20:30:50 +0000 |
commit | 1e00ce0538023c76fb13ebcba48d93543ba3dd7f (patch) | |
tree | 9ad6ccdcd3701ca03bb680b8fee4a104cdcfbf7c /drivers/mmc/host/sdhci.c | |
parent | 6d26f8260a3c06933310d9641deae782182eba24 (diff) |
SDHCI: Add change_clock callback for glue drivers
Add a change_clock callback to allow drivers to update
device specific clock selections and control registers
when there is a change in clock.
Move the main part of sdhci_set_clock() to a new routine
which can be called by the glue drivers to do the sdhci
standard clock management.
Update the sdhci-s3c driver to use this to select the
appropriate clock source when clocks change.
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Diffstat (limited to 'drivers/mmc/host/sdhci.c')
-rw-r--r-- | drivers/mmc/host/sdhci.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 59c890e7b4c..280f3eafac9 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -907,13 +907,18 @@ static void sdhci_finish_command(struct sdhci_host *host) static void sdhci_set_clock(struct sdhci_host *host, unsigned int clock) { + if (clock == host->clock) + return; + + host->ops->change_clock(host, clock); +} + +void sdhci_change_clock(struct sdhci_host *host, unsigned int clock) +{ int div; u16 clk; unsigned long timeout; - if (clock == host->clock) - return; - writew(0, host->ioaddr + SDHCI_CLOCK_CONTROL); if (clock == 0) @@ -950,6 +955,8 @@ out: host->clock = clock; } +EXPORT_SYMBOL_GPL(sdhci_set_clock); + static void sdhci_set_power(struct sdhci_host *host, unsigned short power) { u8 pwr; |