clk: rockchip: add a clock-type for muxes based in the pmugrf

Rockchip socs often have some tiny number of muxes not controlled from
the core clock controller but through bits set in the pmugrf.
Use MUXPMUGRF() to cover this special clock-type.

Change-Id: Iac962a27a3c88ce188d03c416cb4b3b45a462c0a
Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
This commit is contained in:
Elaine Zhang
2019-03-07 14:46:17 +08:00
committed by Tao Huang
parent d433943b34
commit 6cbf201cec
2 changed files with 26 additions and 0 deletions

View File

@@ -466,6 +466,8 @@ struct rockchip_clk_provider *rockchip_clk_init(struct device_node *np,
ctx->grf = syscon_regmap_lookup_by_phandle(ctx->cru_node,
"rockchip,grf");
ctx->pmugrf = syscon_regmap_lookup_by_phandle(ctx->cru_node,
"rockchip,pmugrf");
return ctx;
@@ -555,6 +557,13 @@ void rockchip_clk_register_branches(struct rockchip_clk_provider *ctx,
list->mux_shift, list->mux_width,
list->mux_flags);
break;
case branch_muxpmugrf:
clk = rockchip_clk_register_muxgrf(list->name,
list->parent_names, list->num_parents,
flags, ctx->pmugrf, list->muxdiv_offset,
list->mux_shift, list->mux_width,
list->mux_flags);
break;
case branch_divider:
if (list->div_table)
clk = clk_register_divider_table(NULL,

View File

@@ -238,6 +238,7 @@ struct rockchip_clk_provider {
struct clk_onecell_data clk_data;
struct device_node *cru_node;
struct regmap *grf;
struct regmap *pmugrf;
spinlock_t lock;
};
@@ -391,6 +392,7 @@ enum rockchip_clk_branch_type {
branch_composite_brother,
branch_mux,
branch_muxgrf,
branch_muxpmugrf,
branch_divider,
branch_fraction_divider,
branch_gate,
@@ -745,6 +747,21 @@ struct rockchip_clk_branch {
.gate_offset = -1, \
}
#define MUXPMUGRF(_id, cname, pnames, f, o, s, w, mf) \
{ \
.id = _id, \
.branch_type = branch_muxpmugrf, \
.name = cname, \
.parent_names = pnames, \
.num_parents = ARRAY_SIZE(pnames), \
.flags = f, \
.muxdiv_offset = o, \
.mux_shift = s, \
.mux_width = w, \
.mux_flags = mf, \
.gate_offset = -1, \
}
#define DIV(_id, cname, pname, f, o, s, w, df) \
{ \
.id = _id, \