| From 4e7d30dba493b60a80e9b590add1b4402265cc83 Mon Sep 17 00:00:00 2001 |
| From: Hauke Mehrtens <hauke@hauke-m.de> |
| Date: Sun, 25 Oct 2015 23:21:42 +0100 |
| Subject: MIPS: lantiq: add clk_round_rate() |
| |
| From: Hauke Mehrtens <hauke@hauke-m.de> |
| |
| commit 4e7d30dba493b60a80e9b590add1b4402265cc83 upstream. |
| |
| This adds a basic implementation of clk_round_rate() |
| The clk_round_rate() function is called by multiple drivers and |
| subsystems now and the lantiq clk driver is supposed to export this, |
| but doesn't do so, this causes linking problems like this one: |
| ERROR: "clk_round_rate" [drivers/media/v4l2-core/videodev.ko] undefined! |
| |
| Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> |
| Acked-by: John Crispin <blogic@openwrt.org> |
| Cc: linux-mips@linux-mips.org |
| Patchwork: https://patchwork.linux-mips.org/patch/11358/ |
| Signed-off-by: Ralf Baechle <ralf@linux-mips.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/mips/lantiq/clk.c | 17 +++++++++++++++++ |
| 1 file changed, 17 insertions(+) |
| |
| --- a/arch/mips/lantiq/clk.c |
| +++ b/arch/mips/lantiq/clk.c |
| @@ -99,6 +99,23 @@ int clk_set_rate(struct clk *clk, unsign |
| } |
| EXPORT_SYMBOL(clk_set_rate); |
| |
| +long clk_round_rate(struct clk *clk, unsigned long rate) |
| +{ |
| + if (unlikely(!clk_good(clk))) |
| + return 0; |
| + if (clk->rates && *clk->rates) { |
| + unsigned long *r = clk->rates; |
| + |
| + while (*r && (*r != rate)) |
| + r++; |
| + if (!*r) { |
| + return clk->rate; |
| + } |
| + } |
| + return rate; |
| +} |
| +EXPORT_SYMBOL(clk_round_rate); |
| + |
| int clk_enable(struct clk *clk) |
| { |
| if (unlikely(!clk_good(clk))) |