Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 63311bec authored by Jean-Francois Moine's avatar Jean-Francois Moine Committed by Ulf Hansson
Browse files

mmc: sunxi: Check the value returned by clk_round_rate



clk_round_rate() may return an error. Check it.

Signed-off-by: default avatarJean-Francois Moine <moinejf@free.fr>
Acked-by: default avatarMaxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent b2db9c67
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -692,7 +692,8 @@ static int sunxi_mmc_clk_set_phase(struct sunxi_mmc_host *host,
static int sunxi_mmc_clk_set_rate(struct sunxi_mmc_host *host,
				  struct mmc_ios *ios)
{
	u32 rate, rval, clock = ios->clock;
	long rate;
	u32 rval, clock = ios->clock;
	int ret;

	/* 8 bit DDR requires a higher module clock */
@@ -701,13 +702,18 @@ static int sunxi_mmc_clk_set_rate(struct sunxi_mmc_host *host,
		clock <<= 1;

	rate = clk_round_rate(host->clk_mmc, clock);
	dev_dbg(mmc_dev(host->mmc), "setting clk to %d, rounded %d\n",
	if (rate < 0) {
		dev_err(mmc_dev(host->mmc), "error rounding clk to %d: %ld\n",
			clock, rate);
		return rate;
	}
	dev_dbg(mmc_dev(host->mmc), "setting clk to %d, rounded %ld\n",
		clock, rate);

	/* setting clock rate */
	ret = clk_set_rate(host->clk_mmc, rate);
	if (ret) {
		dev_err(mmc_dev(host->mmc), "error setting clk to %d: %d\n",
		dev_err(mmc_dev(host->mmc), "error setting clk to %ld: %d\n",
			rate, ret);
		return ret;
	}