summaryrefslogtreecommitdiffstats
path: root/drivers/clk/sunxi/clk-factors.h
diff options
context:
space:
mode:
authorChen-Yu Tsai <wens@csie.org>2016-01-25 21:15:43 +0800
committerMaxime Ripard <maxime.ripard@free-electrons.com>2016-01-29 11:30:27 +0100
commit435b7be1d812cdbbad997f5279293770dff21abb (patch)
treefd85027fb06fb90df14872f7fdb54c10d1d60563 /drivers/clk/sunxi/clk-factors.h
parentcfa63688603398e8de4315cd626f81516c88a4c4 (diff)
downloadlinux-435b7be1d812cdbbad997f5279293770dff21abb.tar.bz2
clk: sunxi: factors: Support custom formulas
Some clocks cannot be modelled using the standard factors clk formula, such as clocks with special pre-dividers on one parent, or clocks with all power-of-two dividers. Add support for a custom .recalc callback for factors clk. Also pass the current parent index to the .get_factor and .recalc callbacks. Signed-off-by: Chen-Yu Tsai <wens@csie.org> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Diffstat (limited to 'drivers/clk/sunxi/clk-factors.h')
-rw-r--r--drivers/clk/sunxi/clk-factors.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/clk/sunxi/clk-factors.h b/drivers/clk/sunxi/clk-factors.h
index f09d7c214533..a44a865a6b9e 100644
--- a/drivers/clk/sunxi/clk-factors.h
+++ b/drivers/clk/sunxi/clk-factors.h
@@ -22,6 +22,7 @@ struct clk_factors_config {
struct factors_request {
unsigned long rate;
unsigned long parent_rate;
+ u8 parent_index;
u8 n;
u8 k;
u8 m;
@@ -34,6 +35,7 @@ struct factors_data {
int muxmask;
const struct clk_factors_config *table;
void (*getter)(struct factors_request *req);
+ void (*recalc)(struct factors_request *req);
const char *name;
};
@@ -42,6 +44,7 @@ struct clk_factors {
void __iomem *reg;
const struct clk_factors_config *config;
void (*get_factors)(struct factors_request *req);
+ void (*recalc)(struct factors_request *req);
spinlock_t *lock;
/* for cleanup */
struct clk_mux *mux;