Skip to contentSkip to conversation

mmc: sdhci-s3c: Check if clk_set_rate() succeeds

PATCH In review Mark Brown 2 participants 2 messages Aug 29, 2013 – Aug 30, 2013

Subsystems (4)
lore
Share & tools
lore

Mark Brown

author
#0 lore raw

PATCH 1/1 mmc: sdhci-s3c: Check if clk_set_rate() succeeds

From: Mark Brown <[email protected]>

It is possible that we may fail to set the clock rate, if we do so then log the failure and don't bother reprogramming the IP.

---
 drivers/mmc/host/sdhci-s3c.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
drivers/mmc/host/sdhci-s3c.c +7 -1
index 926aaf6..d10de3f 100644
@@ -295,6 +295,7 @@ static void sdhci_cmu_set_clock(struct sdhci_host *host, unsigned int clock)
 	struct device *dev = &ourhost->pdev->dev;
 	unsigned long timeout;
 	u16 clk = 0;
+	int ret;
 
 	/* don't bother if the clock is going off */
 	if (clock == 0)
@@ -302,7 +303,12 @@ static void sdhci_cmu_set_clock(struct sdhci_host *host, unsigned int clock)
 
 	sdhci_s3c_set_clock(host, clock);
 
-	clk_set_rate(ourhost->clk_bus[ourhost->cur_clk], clock);
+	ret = clk_set_rate(ourhost->clk_bus[ourhost->cur_clk], clock);
+	if (ret != 0) {
+		dev_err(dev, "%s: failed to set clock rate %uHz\n",
+			mmc_hostname(host->mmc), clock);
+		return;
+	}
 
 	host->clock = clock;
 
Signature · 1 line
1.8.4.rc3
maintainer Acked-by on v1 1/1
#1 lore raw

Looks good to me.

Quoted 37 lines · Mark Brown

From: Mark Brown <[email protected]>

It is possible that we may fail to set the clock rate, if we do so then log the failure and don't bother reprogramming the IP.

---
 drivers/mmc/host/sdhci-s3c.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
drivers/mmc/host/sdhci-s3c.c +7 -1
index 926aaf6..d10de3f 100644
@@ -295,6 +295,7 @@ static void sdhci_cmu_set_clock(struct sdhci_host *host, unsigned int clock)
 	struct device *dev = &ourhost->pdev->dev;
 	unsigned long timeout;
 	u16 clk = 0;
+	int ret;
 
 	/* don't bother if the clock is going off */
 	if (clock == 0)
@@ -302,7 +303,12 @@ static void sdhci_cmu_set_clock(struct sdhci_host *host, unsigned int clock)
 
 	sdhci_s3c_set_clock(host, clock);
 
-	clk_set_rate(ourhost->clk_bus[ourhost->cur_clk], clock);
+	ret = clk_set_rate(ourhost->clk_bus[ourhost->cur_clk], clock);
+	if (ret != 0) {
+		dev_err(dev, "%s: failed to set clock rate %uHz\n",
+			mmc_hostname(host->mmc), clock);
+		return;
+	}
 
 	host->clock = clock;