Commit e94f8cb3 authored by Chen-Yu Tsai's avatar Chen-Yu Tsai Committed by Maxime Ripard

clk: sunxi: make factors clock mux mask configurable

Some of the factors-style clocks on the A80 have different widths
for the mux values in the registers.

Add a .muxmask field to clk_factors_config to make it configurable.
Passing a bitmask instead of a width parameter will allow reuse
in case we support table-based muxes in the future.
Signed-off-by: default avatarChen-Yu Tsai <wens@csie.org>
Signed-off-by: default avatarMaxime Ripard <maxime.ripard@free-electrons.com>
parent f114040e
...@@ -224,7 +224,7 @@ struct clk * __init sunxi_factors_register(struct device_node *node, ...@@ -224,7 +224,7 @@ struct clk * __init sunxi_factors_register(struct device_node *node,
/* set up gate properties */ /* set up gate properties */
mux->reg = reg; mux->reg = reg;
mux->shift = data->mux; mux->shift = data->mux;
mux->mask = SUNXI_FACTORS_MUX_MASK; mux->mask = data->muxmask;
mux->lock = factors->lock; mux->lock = factors->lock;
mux_hw = &mux->hw; mux_hw = &mux->hw;
} }
......
...@@ -7,8 +7,6 @@ ...@@ -7,8 +7,6 @@
#define SUNXI_FACTORS_NOT_APPLICABLE (0) #define SUNXI_FACTORS_NOT_APPLICABLE (0)
#define SUNXI_FACTORS_MUX_MASK 0x3
struct clk_factors_config { struct clk_factors_config {
u8 nshift; u8 nshift;
u8 nwidth; u8 nwidth;
...@@ -24,6 +22,7 @@ struct clk_factors_config { ...@@ -24,6 +22,7 @@ struct clk_factors_config {
struct factors_data { struct factors_data {
int enable; int enable;
int mux; int mux;
int muxmask;
struct clk_factors_config *table; struct clk_factors_config *table;
void (*getter) (u32 *rate, u32 parent_rate, u8 *n, u8 *k, u8 *m, u8 *p); void (*getter) (u32 *rate, u32 parent_rate, u8 *n, u8 *k, u8 *m, u8 *p);
const char *name; const char *name;
......
...@@ -70,6 +70,7 @@ static struct clk_factors_config sun4i_a10_mod0_config = { ...@@ -70,6 +70,7 @@ static struct clk_factors_config sun4i_a10_mod0_config = {
static const struct factors_data sun4i_a10_mod0_data __initconst = { static const struct factors_data sun4i_a10_mod0_data __initconst = {
.enable = 31, .enable = 31,
.mux = 24, .mux = 24,
.muxmask = BIT(1) | BIT(0),
.table = &sun4i_a10_mod0_config, .table = &sun4i_a10_mod0_config,
.getter = sun4i_a10_get_mod0_factors, .getter = sun4i_a10_get_mod0_factors,
}; };
......
...@@ -60,6 +60,7 @@ static struct clk_factors_config sun8i_a23_mbus_config = { ...@@ -60,6 +60,7 @@ static struct clk_factors_config sun8i_a23_mbus_config = {
static const struct factors_data sun8i_a23_mbus_data __initconst = { static const struct factors_data sun8i_a23_mbus_data __initconst = {
.enable = 31, .enable = 31,
.mux = 24, .mux = 24,
.muxmask = BIT(1) | BIT(0),
.table = &sun8i_a23_mbus_config, .table = &sun8i_a23_mbus_config,
.getter = sun8i_a23_get_mbus_factors, .getter = sun8i_a23_get_mbus_factors,
}; };
......
...@@ -514,6 +514,7 @@ static const struct factors_data sun4i_apb1_data __initconst = { ...@@ -514,6 +514,7 @@ static const struct factors_data sun4i_apb1_data __initconst = {
static const struct factors_data sun7i_a20_out_data __initconst = { static const struct factors_data sun7i_a20_out_data __initconst = {
.enable = 31, .enable = 31,
.mux = 24, .mux = 24,
.muxmask = BIT(1) | BIT(0),
.table = &sun7i_a20_out_config, .table = &sun7i_a20_out_config,
.getter = sun7i_a20_get_out_factors, .getter = sun7i_a20_get_out_factors,
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment