From: Paul Mundt Date: Mon, 1 Nov 2010 19:30:31 +0000 (-0400) Subject: sh: clkfwk: Fix up rate rounding error handling. X-Git-Tag: v2.6.37-rc2~79^2^4~3 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=5aefa34fada9d17a00635516688de34702451708;p=~shefty%2Frdma-dev.git sh: clkfwk: Fix up rate rounding error handling. 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 Signed-off-by: Paul Mundt --- diff --git a/drivers/sh/clk/core.c b/drivers/sh/clk/core.c index fd0d1b98901..861144360d8 100644 --- a/drivers/sh/clk/core.c +++ b/drivers/sh/clk/core.c @@ -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); }