clk: pxa: fix pxa2xx_determine_rate return
The new pxa2xx_determine_rate() function seems lacking in a few
regards:
- For an exact match or no match at all, the rate is uninitialized
as reported by gcc -Wmaybe-unintialized:
drivers/clk/pxa/clk-pxa.c: In function 'pxa2xx_determine_rate':
drivers/clk/pxa/clk-pxa.c:243:5: error: 'rate' may be used uninitialized in this function
- If we get a non-exact match, the req->rate output is never set
to the actual rate but remains at the requested rate.
- We should not attempt to print a rate if none could be found
This rewrites the logic accordingly.
Fixes: 9fe6942950
("clk: pxa: transfer CPU clock setting from pxa2xx-cpufreq")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Robert Jarzmik <robert.jarzmik@free.fr>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
This commit is contained in:
parent
8c1ee96a2f
commit
2517b32bd9
|
@ -211,7 +211,7 @@ void pxa2xx_cpll_change(struct pxa2xx_freq *freq,
|
|||
int pxa2xx_determine_rate(struct clk_rate_request *req,
|
||||
struct pxa2xx_freq *freqs, int nb_freqs)
|
||||
{
|
||||
int i, closest_below = -1, closest_above = -1, ret = 0;
|
||||
int i, closest_below = -1, closest_above = -1;
|
||||
unsigned long rate;
|
||||
|
||||
for (i = 0; i < nb_freqs; i++) {
|
||||
|
@ -230,18 +230,19 @@ int pxa2xx_determine_rate(struct clk_rate_request *req,
|
|||
|
||||
req->best_parent_hw = NULL;
|
||||
|
||||
if (i < nb_freqs)
|
||||
ret = 0;
|
||||
else if (closest_below >= 0)
|
||||
if (i < nb_freqs) {
|
||||
rate = req->rate;
|
||||
} else if (closest_below >= 0) {
|
||||
rate = freqs[closest_below].cpll;
|
||||
else if (closest_above >= 0)
|
||||
} else if (closest_above >= 0) {
|
||||
rate = freqs[closest_above].cpll;
|
||||
else
|
||||
ret = -EINVAL;
|
||||
} else {
|
||||
pr_debug("%s(rate=%lu) no match\n", __func__, req->rate);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
pr_debug("%s(rate=%lu) rate=%lu: %d\n", __func__, req->rate, rate, ret);
|
||||
if (!rate)
|
||||
pr_debug("%s(rate=%lu) rate=%lu\n", __func__, req->rate, rate);
|
||||
req->rate = rate;
|
||||
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue