Lines Matching refs:stub_clk

71 static unsigned int hi6220_acpu_get_freq(struct hi6220_stub_clk *stub_clk)  in hi6220_acpu_get_freq()  argument
75 regmap_read(stub_clk->dfs_map, ACPU_DFS_CUR_FREQ, &freq); in hi6220_acpu_get_freq()
79 static int hi6220_acpu_set_freq(struct hi6220_stub_clk *stub_clk, in hi6220_acpu_set_freq() argument
85 regmap_write(stub_clk->dfs_map, ACPU_DFS_FREQ_REQ, freq); in hi6220_acpu_set_freq()
93 mbox_send_message(stub_clk->mbox, &data); in hi6220_acpu_set_freq()
97 static int hi6220_acpu_round_freq(struct hi6220_stub_clk *stub_clk, in hi6220_acpu_round_freq() argument
104 regmap_read(stub_clk->dfs_map, ACPU_DFS_FLAG, &limit_flag); in hi6220_acpu_round_freq()
106 regmap_read(stub_clk->dfs_map, ACPU_DFS_FREQ_LMT, &limit_freq); in hi6220_acpu_round_freq()
109 regmap_read(stub_clk->dfs_map, ACPU_DFS_FREQ_MAX, &max_freq); in hi6220_acpu_round_freq()
124 struct hi6220_stub_clk *stub_clk = to_stub_clk(hw); in hi6220_stub_clk_recalc_rate() local
126 switch (stub_clk->id) { in hi6220_stub_clk_recalc_rate()
128 rate = hi6220_acpu_get_freq(stub_clk); in hi6220_stub_clk_recalc_rate()
135 dev_err(stub_clk->dev, "%s: un-supported clock id %d\n", in hi6220_stub_clk_recalc_rate()
136 __func__, stub_clk->id); in hi6220_stub_clk_recalc_rate()
146 struct hi6220_stub_clk *stub_clk = to_stub_clk(hw); in hi6220_stub_clk_set_rate() local
150 switch (stub_clk->id) { in hi6220_stub_clk_set_rate()
152 ret = hi6220_acpu_set_freq(stub_clk, new_rate); in hi6220_stub_clk_set_rate()
159 dev_err(stub_clk->dev, "%s: un-supported clock id %d\n", in hi6220_stub_clk_set_rate()
160 __func__, stub_clk->id); in hi6220_stub_clk_set_rate()
171 struct hi6220_stub_clk *stub_clk = to_stub_clk(hw); in hi6220_stub_clk_round_rate() local
174 switch (stub_clk->id) { in hi6220_stub_clk_round_rate()
176 new_rate = hi6220_acpu_round_freq(stub_clk, new_rate); in hi6220_stub_clk_round_rate()
183 dev_err(stub_clk->dev, "%s: un-supported clock id %d\n", in hi6220_stub_clk_round_rate()
184 __func__, stub_clk->id); in hi6220_stub_clk_round_rate()
201 struct hi6220_stub_clk *stub_clk; in hi6220_stub_clk_probe() local
206 stub_clk = devm_kzalloc(dev, sizeof(*stub_clk), GFP_KERNEL); in hi6220_stub_clk_probe()
207 if (!stub_clk) in hi6220_stub_clk_probe()
210 stub_clk->dfs_map = syscon_regmap_lookup_by_phandle(np, in hi6220_stub_clk_probe()
212 if (IS_ERR(stub_clk->dfs_map)) { in hi6220_stub_clk_probe()
214 return PTR_ERR(stub_clk->dfs_map); in hi6220_stub_clk_probe()
217 stub_clk->hw.init = &init; in hi6220_stub_clk_probe()
218 stub_clk->dev = dev; in hi6220_stub_clk_probe()
219 stub_clk->id = HI6220_STUB_ACPU0; in hi6220_stub_clk_probe()
222 stub_clk->cl.dev = dev; in hi6220_stub_clk_probe()
223 stub_clk->cl.tx_done = NULL; in hi6220_stub_clk_probe()
224 stub_clk->cl.tx_block = true; in hi6220_stub_clk_probe()
225 stub_clk->cl.tx_tout = 500; in hi6220_stub_clk_probe()
226 stub_clk->cl.knows_txdone = false; in hi6220_stub_clk_probe()
229 stub_clk->mbox = mbox_request_channel(&stub_clk->cl, 0); in hi6220_stub_clk_probe()
230 if (IS_ERR(stub_clk->mbox)) { in hi6220_stub_clk_probe()
232 return PTR_ERR(stub_clk->mbox); in hi6220_stub_clk_probe()
240 clk = devm_clk_register(dev, &stub_clk->hw); in hi6220_stub_clk_probe()
251 regmap_write(stub_clk->dfs_map, ACPU_DFS_FLAG, 0x0); in hi6220_stub_clk_probe()
252 regmap_write(stub_clk->dfs_map, ACPU_DFS_FREQ_REQ, 0x0); in hi6220_stub_clk_probe()
253 regmap_write(stub_clk->dfs_map, ACPU_DFS_FREQ_LMT, 0x0); in hi6220_stub_clk_probe()