sh: clkfwk: Fix up rate rounding error handling.
authorPaul Mundt <lethal@linux-sh.org>
Mon, 1 Nov 2010 19:30:31 +0000 (15:30 -0400)
committerPaul Mundt <lethal@linux-sh.org>
Mon, 1 Nov 2010 19:30:31 +0000 (15:30 -0400)
According to the linux/clk.h definition we should be handing back an
errno value or a valid rate. This fixes up the case where 0 can be
returned for invalid frequencies or cases where rounding has no
selectable candidate.

Reported-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
drivers/sh/clk/core.c

index fd0d1b98901c2a0c13cc925e078139be079d1f43..861144360d8930587baa27d2303d21523e2581de 100644 (file)
@@ -90,8 +90,8 @@ struct clk_rate_round_data {
 static long clk_rate_round_helper(struct clk_rate_round_data *rounder)
 {
        unsigned long rate_error, rate_error_prev = ~0UL;
-       unsigned long rate_best_fit = rounder->rate;
        unsigned long highest, lowest, freq;
+       long rate_best_fit = -ENOENT;
        int i;
 
        highest = 0;
@@ -146,7 +146,7 @@ long clk_rate_table_round(struct clk *clk,
        };
 
        if (clk->nr_freqs < 1)
-               return 0;
+               return -ENOSYS;
 
        return clk_rate_round_helper(&table_round);
 }