Lines Matching defs:provider
8 #include <linux/clk-provider.h>
24 * struct sci_clk_provider - TI SCI clock provider representation
27 * @dev: Device pointer for the clock provider
29 * @num_clocks: Total number of clocks for this provider
45 * @provider: Master clock provider
56 struct sci_clk_provider *provider;
78 return clk->provider->ops->get_clock(clk->provider->sci, clk->dev_id,
95 ret = clk->provider->ops->put_clock(clk->provider->sci, clk->dev_id,
98 dev_err(clk->provider->dev,
116 ret = clk->provider->ops->is_on(clk->provider->sci, clk->dev_id,
120 dev_err(clk->provider->dev,
144 ret = clk->provider->ops->get_freq(clk->provider->sci, clk->dev_id,
147 dev_err(clk->provider->dev,
178 ret = clk->provider->ops->get_best_match_freq(clk->provider->sci,
186 dev_err(clk->provider->dev,
214 return clk->provider->ops->set_freq(clk->provider->sci, clk->dev_id,
231 ret = clk->provider->ops->get_parent(clk->provider->sci, clk->dev_id,
234 dev_err(clk->provider->dev,
258 return clk->provider->ops->set_parent(clk->provider->sci, clk->dev_id,
276 * @provider: Handle to SCI clock provider
285 static int _sci_clk_build(struct sci_clk_provider *provider,
338 ret = devm_clk_hw_register(provider->dev, &sci_clk->hw);
340 dev_err(provider->dev, "failed clk register with %d\n", ret);
371 * @data: pointer to the clock provider
380 struct sci_clk_provider *provider = data;
390 clk = bsearch(&key, provider->clocks, provider->num_clocks,
420 static int ti_sci_scan_clocks_from_fw(struct sci_clk_provider *provider)
432 struct device *dev = provider->dev;
435 ret = provider->ops->get_num_parents(provider->sci, dev_id,
474 sci_clk->provider = provider;
483 provider->clocks = devm_kmalloc_array(dev, num_clks, sizeof(sci_clk),
485 if (!provider->clocks)
488 memcpy(provider->clocks, clks, num_clks * sizeof(sci_clk));
490 provider->num_clocks = num_clks;
508 static int ti_sci_scan_clocks_from_dt(struct sci_clk_provider *provider)
510 struct device *dev = provider->dev;
556 sci_clk->provider = provider;
557 provider->ops->get_num_parents(provider->sci,
596 sci_clk->provider = provider;
609 provider->clocks = devm_kmalloc_array(dev, num_clks, sizeof(sci_clk),
611 if (!provider->clocks)
622 provider->clocks[num_clks++] = sci_clk;
626 provider->num_clocks = num_clks;
636 * Probes the TI SCI clock device. Allocates a new clock provider
646 struct sci_clk_provider *provider;
654 provider = devm_kzalloc(dev, sizeof(*provider), GFP_KERNEL);
655 if (!provider)
658 provider->sci = handle;
659 provider->ops = &handle->ops.clk_ops;
660 provider->dev = dev;
663 ret = ti_sci_scan_clocks_from_fw(provider);
669 ret = ti_sci_scan_clocks_from_dt(provider);
676 ret = ti_sci_init_clocks(provider);
682 return of_clk_add_hw_provider(np, sci_clk_get, provider);
689 * Removes the TI SCI device. Unregisters the clock provider registered