]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commitdiff
clk: qcom: Consolidate frequency finding logic
authorStephen Boyd <sboyd@codeaurora.org>
Thu, 4 Sep 2014 20:21:50 +0000 (13:21 -0700)
committerStephen Boyd <sboyd@codeaurora.org>
Mon, 22 Sep 2014 22:16:52 +0000 (15:16 -0700)
There are two find_freq() functions in clk-rcg.c and clk-rcg2.c
that are almost exactly the same. Consolidate them into one
function to save on some code space.

Cc: Mike Turquette <mturquette@linaro.org>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
drivers/clk/qcom/clk-rcg.c
drivers/clk/qcom/clk-rcg2.c
drivers/clk/qcom/common.c
drivers/clk/qcom/common.h

index b638c5846dbfb20e2cc20046afe9823927713921..3db106b7493402875af4ef95d6d0d839dfe0c19c 100644 (file)
@@ -21,6 +21,7 @@
 #include <asm/div64.h>
 
 #include "clk-rcg.h"
+#include "common.h"
 
 static u32 ns_to_src(struct src_sel *s, u32 ns)
 {
@@ -360,26 +361,13 @@ clk_dyn_rcg_recalc_rate(struct clk_hw *hw, unsigned long parent_rate)
        }
 }
 
-static const
-struct freq_tbl *find_freq(const struct freq_tbl *f, unsigned long rate)
-{
-       if (!f)
-               return NULL;
-
-       for (; f->freq; f++)
-               if (rate <= f->freq)
-                       return f;
-
-       return NULL;
-}
-
 static long _freq_tbl_determine_rate(struct clk_hw *hw,
                const struct freq_tbl *f, unsigned long rate,
                unsigned long *p_rate, struct clk **p)
 {
        unsigned long clk_flags;
 
-       f = find_freq(f, rate);
+       f = qcom_find_freq(f, rate);
        if (!f)
                return -EINVAL;
 
@@ -477,7 +465,7 @@ static int clk_rcg_set_rate(struct clk_hw *hw, unsigned long rate,
        struct clk_rcg *rcg = to_clk_rcg(hw);
        const struct freq_tbl *f;
 
-       f = find_freq(rcg->freq_tbl, rate);
+       f = qcom_find_freq(rcg->freq_tbl, rate);
        if (!f)
                return -EINVAL;
 
@@ -497,7 +485,7 @@ static int __clk_dyn_rcg_set_rate(struct clk_hw *hw, unsigned long rate)
        struct clk_dyn_rcg *rcg = to_clk_dyn_rcg(hw);
        const struct freq_tbl *f;
 
-       f = find_freq(rcg->freq_tbl, rate);
+       f = qcom_find_freq(rcg->freq_tbl, rate);
        if (!f)
                return -EINVAL;
 
index cd185d5cc67a3710f4a825c7ffd8bf4f66ae7f45..cfa9eb4fe9ca60c1420e7821f7d927e1fc82fb10 100644 (file)
@@ -24,6 +24,7 @@
 #include <asm/div64.h>
 
 #include "clk-rcg.h"
+#include "common.h"
 
 #define CMD_REG                        0x0
 #define CMD_UPDATE             BIT(0)
@@ -172,27 +173,13 @@ clk_rcg2_recalc_rate(struct clk_hw *hw, unsigned long parent_rate)
        return calc_rate(parent_rate, m, n, mode, hid_div);
 }
 
-static const
-struct freq_tbl *find_freq(const struct freq_tbl *f, unsigned long rate)
-{
-       if (!f)
-               return NULL;
-
-       for (; f->freq; f++)
-               if (rate <= f->freq)
-                       return f;
-
-       /* Default to our fastest rate */
-       return f - 1;
-}
-
 static long _freq_tbl_determine_rate(struct clk_hw *hw,
                const struct freq_tbl *f, unsigned long rate,
                unsigned long *p_rate, struct clk **p)
 {
        unsigned long clk_flags;
 
-       f = find_freq(f, rate);
+       f = qcom_find_freq(f, rate);
        if (!f)
                return -EINVAL;
 
@@ -268,7 +255,7 @@ static int __clk_rcg2_set_rate(struct clk_hw *hw, unsigned long rate)
        struct clk_rcg2 *rcg = to_clk_rcg2(hw);
        const struct freq_tbl *f;
 
-       f = find_freq(rcg->freq_tbl, rate);
+       f = qcom_find_freq(rcg->freq_tbl, rate);
        if (!f)
                return -EINVAL;
 
index eeb3eea01f4ca751944df67da5d4df65cabbb048..e20d947db3e50516a132f9e6cc17717da0abd23f 100644 (file)
@@ -18,6 +18,7 @@
 #include <linux/reset-controller.h>
 
 #include "common.h"
+#include "clk-rcg.h"
 #include "clk-regmap.h"
 #include "reset.h"
 
@@ -27,6 +28,21 @@ struct qcom_cc {
        struct clk *clks[];
 };
 
+const
+struct freq_tbl *qcom_find_freq(const struct freq_tbl *f, unsigned long rate)
+{
+       if (!f)
+               return NULL;
+
+       for (; f->freq; f++)
+               if (rate <= f->freq)
+                       return f;
+
+       /* Default to our fastest rate */
+       return f - 1;
+}
+EXPORT_SYMBOL_GPL(qcom_find_freq);
+
 struct regmap *
 qcom_cc_map(struct platform_device *pdev, const struct qcom_cc_desc *desc)
 {
index 2765e9d3da97ef5c23f976dd0e62fa4c34edf1d5..f519322acdf3be21d4ada6d014a517b459f956a6 100644 (file)
@@ -18,6 +18,7 @@ struct regmap_config;
 struct clk_regmap;
 struct qcom_reset_map;
 struct regmap;
+struct freq_tbl;
 
 struct qcom_cc_desc {
        const struct regmap_config *config;
@@ -27,6 +28,9 @@ struct qcom_cc_desc {
        size_t num_resets;
 };
 
+extern const struct freq_tbl *qcom_find_freq(const struct freq_tbl *f,
+                                            unsigned long rate);
+
 extern struct regmap *qcom_cc_map(struct platform_device *pdev,
                                  const struct qcom_cc_desc *desc);
 extern int qcom_cc_really_probe(struct platform_device *pdev,