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

Commit 57d866e6 authored by Boris Brezillon's avatar Boris Brezillon Committed by Stephen Boyd
Browse files

clk: fix some determine_rate implementations



Some determine_rate implementations are not returning an error
when they failed to adapt the rate according to the rate request.
Fix them so that they return an error instead of silently
returning 0.

Signed-off-by: default avatarBoris Brezillon <boris.brezillon@free-electrons.com>
CC: Jonathan Corbet <corbet@lwn.net>
CC: Tony Lindgren <tony@atomide.com>
CC: Ralf Baechle <ralf@linux-mips.org>
CC: "Emilio López" <emilio@elopez.com.ar>
CC: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: Tero Kristo <t-kristo@ti.com>
CC: Peter De Schrijver <pdeschrijver@nvidia.com>
CC: Prashant Gaikwad <pgaikwad@nvidia.com>
CC: Stephen Warren <swarren@wwwdotorg.org>
CC: Thierry Reding <thierry.reding@gmail.com>
CC: Alexandre Courbot <gnurou@gmail.com>
CC: linux-doc@vger.kernel.org
CC: linux-kernel@vger.kernel.org
CC: linux-arm-kernel@lists.infradead.org
CC: linux-omap@vger.kernel.org
CC: linux-mips@linux-mips.org
CC: linux-tegra@vger.kernel.org
Signed-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
parent 0817b62c
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -469,9 +469,13 @@ static int alchemy_clk_fgcs_detr(struct clk_hw *hw,
		}
	}

	if (br < 0)
		return br;

	req->best_parent_rate = bpr;
	req->best_parent_hw = __clk_get_hw(bpc);
	req->rate = br;

	return 0;
}

+1 −2
Original line number Diff line number Diff line
@@ -125,8 +125,7 @@ static int clk_composite_determine_rate(struct clk_hw *hw,
		return mux_ops->determine_rate(mux_hw, req);
	} else {
		pr_err("clk: clk_composite_determine_rate function called, but no mux or rate callback set!\n");
		req->rate = 0;
		return 0;
		return -EINVAL;
	}
}

+3 −0
Original line number Diff line number Diff line
@@ -487,6 +487,9 @@ clk_mux_determine_rate_flags(struct clk_hw *hw, struct clk_rate_request *req,
		}
	}

	if (!best_parent)
		return -EINVAL;

out:
	if (best_parent)
		req->best_parent_hw = best_parent->hw;
+1 −1
Original line number Diff line number Diff line
@@ -316,7 +316,7 @@ static int mmc_clk_determine_rate(struct clk_hw *hw,
		req->rate = 180000000;
		req->best_parent_rate = 1440000000;
	}
	return 0;
	return -EINVAL;
}

static u32 mmc_clk_delay(u32 val, u32 para, u32 off, u32 len)
+4 −1
Original line number Diff line number Diff line
@@ -218,7 +218,7 @@ static int mmp_clk_mix_determine_rate(struct clk_hw *hw,
	parent = NULL;
	mix_rate_best = 0;
	parent_rate_best = 0;
	gap_best = req->rate;
	gap_best = ULONG_MAX;
	parent_best = NULL;

	if (mix->table) {
@@ -262,6 +262,9 @@ static int mmp_clk_mix_determine_rate(struct clk_hw *hw,
	}

found:
	if (!parent_best)
		return -EINVAL;

	req->best_parent_rate = parent_rate_best;
	req->best_parent_hw = __clk_get_hw(parent_best);
	req->rate = mix_rate_best;
Loading