clk: add a fixed factor clock
Having fixed factors/dividers in hardware is a common pattern, so add a basic clock type doing this. It basically describes a fixed factor clock using a nominator and a denominator. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Reviewed-by: Viresh Kumar <viresh.kumar@st.com> Tested-by: Shawn Guo <shawn.guo@linaro.org> [mturquette@linaro.org: constify parent_names in static init macro] [mturquette@linaro.org: copy/paste bug from mux in static init macro] [mturquette@linaro.org: fix error handling in clk_register_fixed_factor] [mturquette@linaro.org: improve division accuracy; thanks to Saravana] Signed-off-by: Mike Turquette <mturquette@linaro.org>
This commit is contained in:

committed by
Mike Turquette

parent
31df9db995
commit
f0948f59db
@@ -143,6 +143,26 @@ struct clk {
|
||||
DEFINE_CLK(_name, clk_mux_ops, _flags, _parent_names, \
|
||||
_parents);
|
||||
|
||||
#define DEFINE_CLK_FIXED_FACTOR(_name, _parent_name, \
|
||||
_parent_ptr, _flags, \
|
||||
_mult, _div) \
|
||||
static struct clk _name; \
|
||||
static const char *_name##_parent_names[] = { \
|
||||
_parent_name, \
|
||||
}; \
|
||||
static struct clk *_name##_parents[] = { \
|
||||
_parent_ptr, \
|
||||
}; \
|
||||
static struct clk_fixed_factor _name##_hw = { \
|
||||
.hw = { \
|
||||
.clk = &_name, \
|
||||
}, \
|
||||
.mult = _mult, \
|
||||
.div = _div, \
|
||||
}; \
|
||||
DEFINE_CLK(_name, clk_fixed_factor_ops, _flags, \
|
||||
_name##_parent_names, _name##_parents);
|
||||
|
||||
/**
|
||||
* __clk_init - initialize the data structures in a struct clk
|
||||
* @dev: device initializing this clk, placeholder for now
|
||||
|
Reference in New Issue
Block a user