On 17 April 2014 15:23, Geert Uytterhoeven <geert+rene...@glider.be> wrote: > If the clock doesn't exist, clk_get_rate() returns -EINVAL
You clk_get_rate() isn't written well then, it should return zero. @Mike: I didn't see this clearly mentioned in clk.h, should we fix that? >, which becomes > a large number (freq is u32), failing the "freq < min_cpufreq" test. > Explicitly test for "(u32)-EINVAL" to fix this. That's a bad check. We should have done this instead: (s32)freq < 0; but that would be true for high values of clock. And that's why clk_get_rate() must return zero for errors. > Update the comment, and fix a grammer issue while we're at it. > > Signed-off-by: Geert Uytterhoeven <geert+rene...@glider.be> > --- > drivers/cpufreq/ppc-corenet-cpufreq.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/drivers/cpufreq/ppc-corenet-cpufreq.c > b/drivers/cpufreq/ppc-corenet-cpufreq.c > index 53881d78a931..7027eab814ce 100644 > --- a/drivers/cpufreq/ppc-corenet-cpufreq.c > +++ b/drivers/cpufreq/ppc-corenet-cpufreq.c > @@ -179,10 +179,11 @@ static int corenet_cpufreq_cpu_init(struct > cpufreq_policy *policy) > clk = of_clk_get(data->parent, i); > freq = clk_get_rate(clk); > /* > - * the clock is valid if its frequency is not masked > - * and large than minimum allowed frequency. > + * the clock is valid if it exists, its frequency is not > + * masked, and larger than minimum allowed frequency. > */ > - if (freq < min_cpufreq || (mask & (1 << i))) > + if (freq == (u32)-EINVAL || freq < min_cpufreq || > + (mask & (1 << i))) > table[i].frequency = CPUFREQ_ENTRY_INVALID; > else > table[i].frequency = freq / 1000; > -- > 1.7.9.5 > _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev