Lines Matching full:sclk

220 static int scmi_clk_ops_init(struct device *dev, struct scmi_clk *sclk,  in scmi_clk_ops_init()  argument
228 .num_parents = sclk->info->num_parents, in scmi_clk_ops_init()
230 .name = sclk->info->name, in scmi_clk_ops_init()
231 .parent_data = sclk->parent_data, in scmi_clk_ops_init()
234 sclk->hw.init = &init; in scmi_clk_ops_init()
235 ret = devm_clk_hw_register(dev, &sclk->hw); in scmi_clk_ops_init()
239 if (sclk->info->rate_discrete) { in scmi_clk_ops_init()
240 int num_rates = sclk->info->list.num_rates; in scmi_clk_ops_init()
245 min_rate = sclk->info->list.rates[0]; in scmi_clk_ops_init()
246 max_rate = sclk->info->list.rates[num_rates - 1]; in scmi_clk_ops_init()
248 min_rate = sclk->info->range.min_rate; in scmi_clk_ops_init()
249 max_rate = sclk->info->range.max_rate; in scmi_clk_ops_init()
252 clk_hw_set_rate_range(&sclk->hw, min_rate, max_rate); in scmi_clk_ops_init()
321 * @sclk: A reference to an SCMI clock descriptor
345 scmi_clk_ops_select(struct scmi_clk *sclk, bool atomic_capable, in scmi_clk_ops_select() argument
351 const struct scmi_clock_info *ci = sclk->info; in scmi_clk_ops_select()
373 ret = scmi_proto_clk_ops->config_oem_get(sclk->ph, sclk->id, in scmi_clk_ops_select()
389 ops = scmi_clk_ops_alloc(sclk->dev, feats_key); in scmi_clk_ops_select()
446 struct scmi_clk *sclk = &sclks[idx]; in scmi_clocks_probe() local
449 sclk->info = scmi_proto_clk_ops->info_get(ph, idx); in scmi_clocks_probe()
450 if (!sclk->info) { in scmi_clocks_probe()
456 sclk->id = idx; in scmi_clocks_probe()
457 sclk->ph = ph; in scmi_clocks_probe()
458 sclk->dev = dev; in scmi_clocks_probe()
466 scmi_ops = scmi_clk_ops_select(sclk, transport_is_atomic, in scmi_clocks_probe()
474 if (sclk->info->num_parents > 0) { in scmi_clocks_probe()
475 sclk->parent_data = devm_kcalloc(dev, sclk->info->num_parents, in scmi_clocks_probe()
476 sizeof(*sclk->parent_data), GFP_KERNEL); in scmi_clocks_probe()
477 if (!sclk->parent_data) in scmi_clocks_probe()
480 for (int i = 0; i < sclk->info->num_parents; i++) { in scmi_clocks_probe()
481 sclk->parent_data[i].index = sclk->info->parents[i]; in scmi_clocks_probe()
482 sclk->parent_data[i].hw = hws[sclk->info->parents[i]]; in scmi_clocks_probe()
486 err = scmi_clk_ops_init(dev, sclk, scmi_ops); in scmi_clocks_probe()
489 devm_kfree(dev, sclk->parent_data); in scmi_clocks_probe()
493 sclk->info->name, in scmi_clocks_probe()