>From ab5cfb88aab633ef448749531a0b9ddb99a4ee1f Mon Sep 17 00:00:00 2001 From: Philip Rakity <prakity@xxxxxxxxxxx> Date: Tue, 14 Dec 2010 16:56:41 -0800 Subject: [PATCH] sdhci: support setting f_max clock via call back need ability to set f_max independent of max_clk. setting max_clk does not work since our clock speed is fixed. adjusting max_clk lower just messes up the clock dividers. Signed-off-by: Philip Rakity <prakity@xxxxxxxxxxx> --- drivers/mmc/host/sdhci.c | 8 +++++++- drivers/mmc/host/sdhci.h | 1 + 2 files changed, 8 insertions(+), 1 deletions(-) diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index f439881..6486009 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -1884,7 +1884,13 @@ int sdhci_add_host(struct sdhci_host *host) else mmc->f_min = host->max_clk / SDHCI_MAX_DIV_SPEC_200; - mmc->f_max = host->max_clk; + if (host->ops->get_f_max_clock) { + mmc->f_max = host->ops->get_f_max_clock(host); + if (mmc->f_max > host->max_clk) + mmc->f_max = host->max_clk; + } else + mmc->f_max = host->max_clk; + mmc->caps |= MMC_CAP_SDIO_IRQ; /* diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h index 9dd7bc1..a8c43c9 100644 --- a/drivers/mmc/host/sdhci.h +++ b/drivers/mmc/host/sdhci.h @@ -224,6 +224,7 @@ struct sdhci_ops { unsigned int (*get_ro)(struct sdhci_host *host); void (*platform_reset_enter)(struct sdhci_host *host, u8 mask); void (*platform_reset_exit)(struct sdhci_host *host, u8 mask); + unsigned int (*get_f_max_clock)(struct sdhci_host *host); }; #ifdef CONFIG_MMC_SDHCI_IO_ACCESSORS -- 1.6.0.4
Attachment:
0008-sdhci-support-setting-f_max-clock-via-call-back.patch
Description: 0008-sdhci-support-setting-f_max-clock-via-call-back.patch