Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

clk: hisi: add hisi_clk_register_gate

Add hisi_clk_register_gate register clk gate table

Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Signed-off-by: Haojian Zhuang <haojian.zhuang@linaro.org>

authored by

Zhangfei Gao and committed by
Haojian Zhuang
8b9dcb6c 156342a1

+30
+28
drivers/clk/hisilicon/clk.c
··· 177 177 } 178 178 } 179 179 180 + void __init hisi_clk_register_gate(struct hisi_gate_clock *clks, 181 + int nums, struct hisi_clock_data *data) 182 + { 183 + struct clk *clk; 184 + void __iomem *base = data->base; 185 + int i; 186 + 187 + for (i = 0; i < nums; i++) { 188 + clk = clk_register_gate(NULL, clks[i].name, 189 + clks[i].parent_name, 190 + clks[i].flags, 191 + base + clks[i].offset, 192 + clks[i].bit_idx, 193 + clks[i].gate_flags, 194 + &hisi_clk_lock); 195 + if (IS_ERR(clk)) { 196 + pr_err("%s: failed to register clock %s\n", 197 + __func__, clks[i].name); 198 + continue; 199 + } 200 + 201 + if (clks[i].alias) 202 + clk_register_clkdev(clk, clks[i].alias, NULL); 203 + 204 + data->clk_data.clks[clks[i].id] = clk; 205 + } 206 + } 207 + 180 208 void __init hisi_clk_register_gate_sep(struct hisi_gate_clock *clks, 181 209 int nums, struct hisi_clock_data *data) 182 210 {
+2
drivers/clk/hisilicon/clk.h
··· 104 104 struct hisi_clock_data *); 105 105 void __init hisi_clk_register_divider(struct hisi_divider_clock *, 106 106 int, struct hisi_clock_data *); 107 + void __init hisi_clk_register_gate(struct hisi_gate_clock *, 108 + int, struct hisi_clock_data *); 107 109 void __init hisi_clk_register_gate_sep(struct hisi_gate_clock *, 108 110 int, struct hisi_clock_data *); 109 111 #endif /* __HISI_CLK_H */