Lines Matching refs:bpmp

11 #include <soc/tegra/bpmp.h>
12 #include <soc/tegra/bpmp-abi.h>
31 struct tegra_bpmp *bpmp;
59 static int tegra_bpmp_clk_transfer(struct tegra_bpmp *bpmp,
86 err = tegra_bpmp_transfer(bpmp, &msg);
104 return tegra_bpmp_clk_transfer(clk->bpmp, &msg);
117 err = tegra_bpmp_clk_transfer(clk->bpmp, &msg);
119 dev_err(clk->bpmp->dev, "failed to disable clock %s: %d\n",
136 err = tegra_bpmp_clk_transfer(clk->bpmp, &msg);
160 err = tegra_bpmp_clk_transfer(clk->bpmp, &msg);
190 err = tegra_bpmp_clk_transfer(clk->bpmp, &msg);
218 err = tegra_bpmp_clk_transfer(clk->bpmp, &msg);
241 err = tegra_bpmp_clk_transfer(clk->bpmp, &msg);
243 dev_err(clk->bpmp->dev, "failed to get parent for %s: %d\n",
274 return tegra_bpmp_clk_transfer(clk->bpmp, &msg);
331 static int tegra_bpmp_clk_get_max_id(struct tegra_bpmp *bpmp)
342 err = tegra_bpmp_clk_transfer(bpmp, &msg);
352 static int tegra_bpmp_clk_get_info(struct tegra_bpmp *bpmp, unsigned int id,
366 err = tegra_bpmp_clk_transfer(bpmp, &msg);
381 static void tegra_bpmp_clk_info_dump(struct tegra_bpmp *bpmp,
413 dev_printk(level, bpmp->dev, "%03u: %s\n", info->id, info->name);
414 dev_printk(level, bpmp->dev, " flags: %lx %s\n", info->flags, flags);
415 dev_printk(level, bpmp->dev, " parents: %u\n", info->num_parents);
418 dev_printk(level, bpmp->dev, " %03u\n", info->parents[i]);
421 static int tegra_bpmp_probe_clocks(struct tegra_bpmp *bpmp,
429 err = tegra_bpmp_clk_get_max_id(bpmp);
435 dev_dbg(bpmp->dev, "maximum clock ID: %u\n", max_id);
444 err = tegra_bpmp_clk_get_info(bpmp, id, info);
449 dev_err(bpmp->dev,
465 tegra_bpmp_clk_info_dump(bpmp, KERN_DEBUG, info);
468 dev_dbg(bpmp->dev, "holes: %u\n", holes);
502 tegra_bpmp_clk_register(struct tegra_bpmp *bpmp,
513 clk = devm_kzalloc(bpmp->dev, sizeof(*clk), GFP_KERNEL);
518 clk->bpmp = bpmp;
520 clk->parents = devm_kcalloc(bpmp->dev, info->num_parents,
533 dev_WARN(bpmp->dev,
573 dev_err(bpmp->dev, "no parent %u found for %u\n",
583 err = devm_clk_hw_register(bpmp->dev, &clk->hw);
593 static void tegra_bpmp_register_clocks_one(struct tegra_bpmp *bpmp,
602 if (bpmp->clocks[i]) {
613 tegra_bpmp_register_clocks_one(bpmp, infos, p_i, count);
616 clk = tegra_bpmp_clk_register(bpmp, info, infos, count);
618 dev_err(bpmp->dev,
622 * bpmp->clocks[i] to avoid re-attempting the
627 bpmp->clocks[i] = clk;
630 static int tegra_bpmp_register_clocks(struct tegra_bpmp *bpmp,
636 bpmp->num_clocks = count;
638 bpmp->clocks = devm_kcalloc(bpmp->dev, count, sizeof(struct tegra_bpmp_clk), GFP_KERNEL);
639 if (!bpmp->clocks)
643 tegra_bpmp_register_clocks_one(bpmp, infos, i, count);
649 static void tegra_bpmp_unregister_clocks(struct tegra_bpmp *bpmp)
653 for (i = 0; i < bpmp->num_clocks; i++)
654 clk_hw_unregister(&bpmp->clocks[i]->hw);
661 struct tegra_bpmp *bpmp = data;
663 for (i = 0; i < bpmp->num_clocks; i++) {
664 struct tegra_bpmp_clk *clk = bpmp->clocks[i];
676 int tegra_bpmp_init_clocks(struct tegra_bpmp *bpmp)
682 err = tegra_bpmp_probe_clocks(bpmp, &clocks);
688 dev_dbg(bpmp->dev, "%u clocks probed\n", count);
690 err = tegra_bpmp_register_clocks(bpmp, clocks, count);
694 err = of_clk_add_hw_provider(bpmp->dev->of_node,
696 bpmp);
698 tegra_bpmp_unregister_clocks(bpmp);