Lines Matching full:sclk
197 static int scmi_clk_ops_init(struct device *dev, struct scmi_clk *sclk, in scmi_clk_ops_init() argument
205 .num_parents = sclk->info->num_parents, in scmi_clk_ops_init()
207 .name = sclk->info->name, in scmi_clk_ops_init()
208 .parent_data = sclk->parent_data, in scmi_clk_ops_init()
211 sclk->hw.init = &init; in scmi_clk_ops_init()
212 ret = devm_clk_hw_register(dev, &sclk->hw); in scmi_clk_ops_init()
216 if (sclk->info->rate_discrete) { in scmi_clk_ops_init()
217 int num_rates = sclk->info->list.num_rates; in scmi_clk_ops_init()
222 min_rate = sclk->info->list.rates[0]; in scmi_clk_ops_init()
223 max_rate = sclk->info->list.rates[num_rates - 1]; in scmi_clk_ops_init()
225 min_rate = sclk->info->range.min_rate; in scmi_clk_ops_init()
226 max_rate = sclk->info->range.max_rate; in scmi_clk_ops_init()
229 clk_hw_set_rate_range(&sclk->hw, min_rate, max_rate); in scmi_clk_ops_init()
270 struct scmi_clk *sclk; in scmi_clocks_probe() local
273 sclk = devm_kzalloc(dev, sizeof(*sclk), GFP_KERNEL); in scmi_clocks_probe()
274 if (!sclk) in scmi_clocks_probe()
277 sclk->info = scmi_proto_clk_ops->info_get(ph, idx); in scmi_clocks_probe()
278 if (!sclk->info) { in scmi_clocks_probe()
280 devm_kfree(dev, sclk); in scmi_clocks_probe()
284 sclk->id = idx; in scmi_clocks_probe()
285 sclk->ph = ph; in scmi_clocks_probe()
286 sclk->dev = dev; in scmi_clocks_probe()
294 sclk->info->enable_latency <= atomic_threshold) in scmi_clocks_probe()
300 if (sclk->info->num_parents > 0) { in scmi_clocks_probe()
301 sclk->parent_data = devm_kcalloc(dev, sclk->info->num_parents, in scmi_clocks_probe()
302 sizeof(*sclk->parent_data), GFP_KERNEL); in scmi_clocks_probe()
303 if (!sclk->parent_data) in scmi_clocks_probe()
306 for (int i = 0; i < sclk->info->num_parents; i++) { in scmi_clocks_probe()
307 sclk->parent_data[i].index = sclk->info->parents[i]; in scmi_clocks_probe()
308 sclk->parent_data[i].hw = hws[sclk->info->parents[i]]; in scmi_clocks_probe()
312 err = scmi_clk_ops_init(dev, sclk, scmi_ops); in scmi_clocks_probe()
315 devm_kfree(dev, sclk->parent_data); in scmi_clocks_probe()
316 devm_kfree(dev, sclk); in scmi_clocks_probe()
320 sclk->info->name, in scmi_clocks_probe()
323 hws[idx] = &sclk->hw; in scmi_clocks_probe()