[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <0077b8bc2a4da024a3b985dd622674ebebe5b71b.1585827904.git.mirq-linux@rere.qmqm.pl>
Date: Thu, 02 Apr 2020 13:54:55 +0200
From: Michał Mirosław <mirq-linux@...e.qmqm.pl>
To: Adrian Hunter <adrian.hunter@...el.com>,
Kevin Liu <kliu5@...vell.com>,
Michal Simek <michal.simek@...inx.com>,
Suneel Garapati <suneel.garapati@...inx.com>,
Ulf Hansson <ulf.hansson@...aro.org>
Cc: linux-kernel@...r.kernel.org, linux-mmc@...r.kernel.org
Subject: [PATCH 2/7] mmc: sdhci: fix programmable clock config from preset
value
When host controller uses programmable clock presets but doesn't
advertise programmable clock support, we can only guess what frequency
it generates. Let's at least return correct SDHCI_PROG_CLOCK_MODE bit
value in this case.
Fixes: 52983382c74f ("mmc: sdhci: enhance preset value function")
Signed-off-by: Michał Mirosław <mirq-linux@...e.qmqm.pl>
---
drivers/mmc/host/sdhci.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 9aa3af5826df..b2dc4f1cfa5c 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -1767,11 +1767,10 @@ u16 sdhci_calc_clk(struct sdhci_host *host, unsigned int clock,
pre_val = sdhci_get_preset_value(host);
div = FIELD_GET(SDHCI_PRESET_SDCLK_FREQ_MASK, pre_val);
- if (host->clk_mul &&
- (pre_val & SDHCI_PRESET_CLKGEN_SEL)) {
+ if (pre_val & SDHCI_PRESET_CLKGEN_SEL) {
clk = SDHCI_PROG_CLOCK_MODE;
real_div = div + 1;
- clk_mul = host->clk_mul;
+ clk_mul = host->clk_mul ?: 1;
} else {
real_div = max_t(int, 1, div << 1);
}
--
2.20.1
Powered by blists - more mailing lists