clk: rockchip: add a factor clock type
Add a clock type for fixed factor clocks. This allows us to define fixed factor clocks where they appear in the clock hierarchy instead of in the init function. The additional factor_gate type, finally allows us to model some last parts of the clock tree correctly. Signed-off-by: Heiko Stuebner <heiko@sntech.de>
This commit is contained in:
@@ -254,6 +254,7 @@ enum rockchip_clk_branch_type {
|
||||
branch_gate,
|
||||
branch_mmc,
|
||||
branch_inverter,
|
||||
branch_factor,
|
||||
};
|
||||
|
||||
struct rockchip_clk_branch {
|
||||
@@ -508,6 +509,33 @@ struct rockchip_clk_branch {
|
||||
.div_flags = if, \
|
||||
}
|
||||
|
||||
#define FACTOR(_id, cname, pname, f, fm, fd) \
|
||||
{ \
|
||||
.id = _id, \
|
||||
.branch_type = branch_factor, \
|
||||
.name = cname, \
|
||||
.parent_names = (const char *[]){ pname }, \
|
||||
.num_parents = 1, \
|
||||
.flags = f, \
|
||||
.div_shift = fm, \
|
||||
.div_width = fd, \
|
||||
}
|
||||
|
||||
#define FACTOR_GATE(_id, cname, pname, f, fm, fd, go, gb, gf) \
|
||||
{ \
|
||||
.id = _id, \
|
||||
.branch_type = branch_factor, \
|
||||
.name = cname, \
|
||||
.parent_names = (const char *[]){ pname }, \
|
||||
.num_parents = 1, \
|
||||
.flags = f, \
|
||||
.div_shift = fm, \
|
||||
.div_width = fd, \
|
||||
.gate_offset = go, \
|
||||
.gate_shift = gb, \
|
||||
.gate_flags = gf, \
|
||||
}
|
||||
|
||||
void rockchip_clk_init(struct device_node *np, void __iomem *base,
|
||||
unsigned long nr_clks);
|
||||
struct regmap *rockchip_clk_get_grf(void);
|
||||
|
Reference in New Issue
Block a user