diff options
author | Zhangfei Gao <zhangfei.gao@linaro.org> | 2014-04-22 03:42:47 -0400 |
---|---|---|
committer | Haojian Zhuang <haojian.zhuang@linaro.org> | 2014-05-11 23:30:18 -0400 |
commit | 8b9dcb6cb7b69e6990bc4134546be5059342916c (patch) | |
tree | 4b258acd730824b6a19d90edd77ea75c007f7ca0 | |
parent | 156342a1e5719e50e001dec0ee8dfefefebb7606 (diff) |
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>
-rw-r--r-- | drivers/clk/hisilicon/clk.c | 28 | ||||
-rw-r--r-- | drivers/clk/hisilicon/clk.h | 2 |
2 files changed, 30 insertions, 0 deletions
diff --git a/drivers/clk/hisilicon/clk.c b/drivers/clk/hisilicon/clk.c index 269938852f4f..a078e84f7b05 100644 --- a/drivers/clk/hisilicon/clk.c +++ b/drivers/clk/hisilicon/clk.c | |||
@@ -177,6 +177,34 @@ void __init hisi_clk_register_divider(struct hisi_divider_clock *clks, | |||
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 | void __init hisi_clk_register_gate_sep(struct hisi_gate_clock *clks, | 208 | void __init hisi_clk_register_gate_sep(struct hisi_gate_clock *clks, |
181 | int nums, struct hisi_clock_data *data) | 209 | int nums, struct hisi_clock_data *data) |
182 | { | 210 | { |
diff --git a/drivers/clk/hisilicon/clk.h b/drivers/clk/hisilicon/clk.h index bc39a6aa475e..31083ffc0650 100644 --- a/drivers/clk/hisilicon/clk.h +++ b/drivers/clk/hisilicon/clk.h | |||
@@ -104,6 +104,8 @@ void __init hisi_clk_register_mux(struct hisi_mux_clock *, int, | |||
104 | struct hisi_clock_data *); | 104 | struct hisi_clock_data *); |
105 | void __init hisi_clk_register_divider(struct hisi_divider_clock *, | 105 | void __init hisi_clk_register_divider(struct hisi_divider_clock *, |
106 | int, struct hisi_clock_data *); | 106 | int, struct hisi_clock_data *); |
107 | void __init hisi_clk_register_gate(struct hisi_gate_clock *, | ||
108 | int, struct hisi_clock_data *); | ||
107 | void __init hisi_clk_register_gate_sep(struct hisi_gate_clock *, | 109 | void __init hisi_clk_register_gate_sep(struct hisi_gate_clock *, |
108 | int, struct hisi_clock_data *); | 110 | int, struct hisi_clock_data *); |
109 | #endif /* __HISI_CLK_H */ | 111 | #endif /* __HISI_CLK_H */ |