Lines Matching refs:bpmp

31 	struct tegra_bpmp *bpmp;  member
59 static int tegra_bpmp_clk_transfer(struct tegra_bpmp *bpmp, in tegra_bpmp_clk_transfer() argument
86 err = tegra_bpmp_transfer(bpmp, &msg); in tegra_bpmp_clk_transfer()
104 return tegra_bpmp_clk_transfer(clk->bpmp, &msg); in tegra_bpmp_clk_prepare()
117 err = tegra_bpmp_clk_transfer(clk->bpmp, &msg); in tegra_bpmp_clk_unprepare()
119 dev_err(clk->bpmp->dev, "failed to disable clock %s: %d\n", in tegra_bpmp_clk_unprepare()
136 err = tegra_bpmp_clk_transfer(clk->bpmp, &msg); in tegra_bpmp_clk_is_prepared()
160 err = tegra_bpmp_clk_transfer(clk->bpmp, &msg); in tegra_bpmp_clk_recalc_rate()
190 err = tegra_bpmp_clk_transfer(clk->bpmp, &msg); in tegra_bpmp_clk_determine_rate()
218 err = tegra_bpmp_clk_transfer(clk->bpmp, &msg); in tegra_bpmp_clk_set_parent()
241 err = tegra_bpmp_clk_transfer(clk->bpmp, &msg); in tegra_bpmp_clk_get_parent()
243 dev_err(clk->bpmp->dev, "failed to get parent for %s: %d\n", in tegra_bpmp_clk_get_parent()
274 return tegra_bpmp_clk_transfer(clk->bpmp, &msg); in tegra_bpmp_clk_set_rate()
313 static int tegra_bpmp_clk_get_max_id(struct tegra_bpmp *bpmp) in tegra_bpmp_clk_get_max_id() argument
324 err = tegra_bpmp_clk_transfer(bpmp, &msg); in tegra_bpmp_clk_get_max_id()
334 static int tegra_bpmp_clk_get_info(struct tegra_bpmp *bpmp, unsigned int id, in tegra_bpmp_clk_get_info() argument
348 err = tegra_bpmp_clk_transfer(bpmp, &msg); in tegra_bpmp_clk_get_info()
363 static void tegra_bpmp_clk_info_dump(struct tegra_bpmp *bpmp, in tegra_bpmp_clk_info_dump() argument
395 dev_printk(level, bpmp->dev, "%03u: %s\n", info->id, info->name); in tegra_bpmp_clk_info_dump()
396 dev_printk(level, bpmp->dev, " flags: %lx %s\n", info->flags, flags); in tegra_bpmp_clk_info_dump()
397 dev_printk(level, bpmp->dev, " parents: %u\n", info->num_parents); in tegra_bpmp_clk_info_dump()
400 dev_printk(level, bpmp->dev, " %03u\n", info->parents[i]); in tegra_bpmp_clk_info_dump()
403 static int tegra_bpmp_probe_clocks(struct tegra_bpmp *bpmp, in tegra_bpmp_probe_clocks() argument
411 err = tegra_bpmp_clk_get_max_id(bpmp); in tegra_bpmp_probe_clocks()
417 dev_dbg(bpmp->dev, "maximum clock ID: %u\n", max_id); in tegra_bpmp_probe_clocks()
426 err = tegra_bpmp_clk_get_info(bpmp, id, info); in tegra_bpmp_probe_clocks()
431 dev_err(bpmp->dev, in tegra_bpmp_probe_clocks()
447 tegra_bpmp_clk_info_dump(bpmp, KERN_DEBUG, info); in tegra_bpmp_probe_clocks()
450 dev_dbg(bpmp->dev, "holes: %u\n", holes); in tegra_bpmp_probe_clocks()
484 tegra_bpmp_clk_register(struct tegra_bpmp *bpmp, in tegra_bpmp_clk_register() argument
495 clk = devm_kzalloc(bpmp->dev, sizeof(*clk), GFP_KERNEL); in tegra_bpmp_clk_register()
500 clk->bpmp = bpmp; in tegra_bpmp_clk_register()
502 clk->parents = devm_kcalloc(bpmp->dev, info->num_parents, in tegra_bpmp_clk_register()
541 dev_err(bpmp->dev, "no parent %u found for %u\n", in tegra_bpmp_clk_register()
551 err = devm_clk_hw_register(bpmp->dev, &clk->hw); in tegra_bpmp_clk_register()
561 static void tegra_bpmp_register_clocks_one(struct tegra_bpmp *bpmp, in tegra_bpmp_register_clocks_one() argument
570 if (bpmp->clocks[i]) { in tegra_bpmp_register_clocks_one()
581 tegra_bpmp_register_clocks_one(bpmp, infos, p_i, count); in tegra_bpmp_register_clocks_one()
584 clk = tegra_bpmp_clk_register(bpmp, info, infos, count); in tegra_bpmp_register_clocks_one()
586 dev_err(bpmp->dev, in tegra_bpmp_register_clocks_one()
595 bpmp->clocks[i] = clk; in tegra_bpmp_register_clocks_one()
598 static int tegra_bpmp_register_clocks(struct tegra_bpmp *bpmp, in tegra_bpmp_register_clocks() argument
604 bpmp->num_clocks = count; in tegra_bpmp_register_clocks()
606 bpmp->clocks = devm_kcalloc(bpmp->dev, count, sizeof(struct tegra_bpmp_clk), GFP_KERNEL); in tegra_bpmp_register_clocks()
607 if (!bpmp->clocks) in tegra_bpmp_register_clocks()
611 tegra_bpmp_register_clocks_one(bpmp, infos, i, count); in tegra_bpmp_register_clocks()
617 static void tegra_bpmp_unregister_clocks(struct tegra_bpmp *bpmp) in tegra_bpmp_unregister_clocks() argument
621 for (i = 0; i < bpmp->num_clocks; i++) in tegra_bpmp_unregister_clocks()
622 clk_hw_unregister(&bpmp->clocks[i]->hw); in tegra_bpmp_unregister_clocks()
629 struct tegra_bpmp *bpmp = data; in tegra_bpmp_clk_of_xlate() local
631 for (i = 0; i < bpmp->num_clocks; i++) { in tegra_bpmp_clk_of_xlate()
632 struct tegra_bpmp_clk *clk = bpmp->clocks[i]; in tegra_bpmp_clk_of_xlate()
644 int tegra_bpmp_init_clocks(struct tegra_bpmp *bpmp) in tegra_bpmp_init_clocks() argument
650 err = tegra_bpmp_probe_clocks(bpmp, &clocks); in tegra_bpmp_init_clocks()
656 dev_dbg(bpmp->dev, "%u clocks probed\n", count); in tegra_bpmp_init_clocks()
658 err = tegra_bpmp_register_clocks(bpmp, clocks, count); in tegra_bpmp_init_clocks()
662 err = of_clk_add_hw_provider(bpmp->dev->of_node, in tegra_bpmp_init_clocks()
664 bpmp); in tegra_bpmp_init_clocks()
666 tegra_bpmp_unregister_clocks(bpmp); in tegra_bpmp_init_clocks()