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

Commit c2590f4a authored by Kuninori Morimoto's avatar Kuninori Morimoto Committed by Paul Mundt
Browse files

sh: clkfwk: modify for_each_frequency end condition



The end condition of for_each_frequency should care about
both clk_rate_table_round and clk_rate_div_range_round,
and using "correct max size" is a natural idea in later function.
To avoid data over flow, this patch didn't modify
clk_rate_div_range_round side as .max = div_max + 1.

Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 56ea5109
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -82,7 +82,7 @@ struct clk_rate_round_data {

#define for_each_frequency(pos, r, freq)			\
	for (pos = r->min, freq = r->func(pos, r);		\
	     pos < r->max; pos++, freq = r->func(pos, r))	\
	     pos <= r->max; pos++, freq = r->func(pos, r))	\
		if (unlikely(freq == 0))			\
			;					\
		else
@@ -139,12 +139,15 @@ long clk_rate_table_round(struct clk *clk,
{
	struct clk_rate_round_data table_round = {
		.min	= 0,
		.max	= clk->nr_freqs,
		.max	= clk->nr_freqs - 1,
		.func	= clk_rate_table_iter,
		.arg	= freq_table,
		.rate	= rate,
	};

	if (clk->nr_freqs < 1)
		return 0;

	return clk_rate_round_helper(&table_round);
}