diff options
author | Prashant Gaikwad <pgaikwad@nvidia.com> | 2011-08-16 18:15:01 +0530 |
---|---|---|
committer | Varun Colbert <vcolbert@nvidia.com> | 2011-08-16 17:54:21 -0700 |
commit | 8a87fcba2fc76a2220e93616c6119dd933a7aaab (patch) | |
tree | f1cf8c7f7d24b34e9f4d7f30110a78caeb21775f /drivers/mmc/host/sdhci-tegra.c | |
parent | 458732fb452d5dc981f1608dd35fa5349f98b339 (diff) |
sdhci: tegra: correct clock setting at set_clk
Limit max sdio clock when enabling.
Bug 834281
Bug 845180
Change-Id: I408bcae0a47c367073c38e897383337306f691db
Reviewed-on: http://git-master/r/47322
Reviewed-by: Prashant Gaikwad <pgaikwad@nvidia.com>
Tested-by: Prashant Gaikwad <pgaikwad@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'drivers/mmc/host/sdhci-tegra.c')
-rw-r--r-- | drivers/mmc/host/sdhci-tegra.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c index 3bffca0d5f77..ce68286e09c3 100644 --- a/drivers/mmc/host/sdhci-tegra.c +++ b/drivers/mmc/host/sdhci-tegra.c @@ -73,6 +73,7 @@ struct tegra_sdhci_host { int wp_gpio_polarity; unsigned int tap_delay; unsigned int max_clk; + unsigned int clk_limit; struct regulator *vsd; unsigned int card_present; struct regulator *reg_vdd_slot; @@ -169,6 +170,8 @@ static void tegra_sdhci_enable_clock(struct tegra_sdhci_host *host, int clock) sdhci_writeb(host->sdhci, val, SDHCI_VENDOR_CLOCK_CNTRL); host->clk_enabled = 1; } + if (host->clk_limit && (clock > host->clk_limit)) + clock = host->clk_limit; if (clock < SDHCI_TEGRA_MIN_CONTROLLER_CLOCK) clk_set_rate(host->clk, SDHCI_TEGRA_MIN_CONTROLLER_CLOCK); else @@ -300,6 +303,7 @@ static int __devinit tegra_sdhci_probe(struct platform_device *pdev) host->sdhci = sdhci; host->card_always_on = (plat->power_gpio == -1) ? 1 : 0; host->max_clk = plat->max_clk; + host->clk_limit = plat->clk_limit; host->tap_delay = plat->tap_delay; host->cd_gpio = plat->cd_gpio; host->cd_gpio_polarity = plat->cd_gpio_polarity; |