Lines Matching full:domain

34 	void (*power_off) (struct imx8mp_blk_ctrl *bc, struct imx8mp_blk_ctrl_domain *domain);
35 void (*power_on) (struct imx8mp_blk_ctrl *bc, struct imx8mp_blk_ctrl_domain *domain);
64 void (*power_off) (struct imx8mp_blk_ctrl *bc, struct imx8mp_blk_ctrl_domain *domain);
65 void (*power_on) (struct imx8mp_blk_ctrl *bc, struct imx8mp_blk_ctrl_domain *domain);
77 struct imx8mp_blk_ctrl_domain *domain) in imx8mp_hsio_blk_ctrl_power_on() argument
79 switch (domain->id) { in imx8mp_hsio_blk_ctrl_power_on()
96 struct imx8mp_blk_ctrl_domain *domain) in imx8mp_hsio_blk_ctrl_power_off() argument
98 switch (domain->id) { in imx8mp_hsio_blk_ctrl_power_off()
206 struct imx8mp_blk_ctrl_domain *domain) in imx8mp_hdmi_blk_ctrl_power_on() argument
208 switch (domain->id) { in imx8mp_hdmi_blk_ctrl_power_on()
261 struct imx8mp_blk_ctrl_domain *domain) in imx8mp_hdmi_blk_ctrl_power_off() argument
263 switch (domain->id) { in imx8mp_hdmi_blk_ctrl_power_off()
326 * power domain is powered down. To ensure the proper reset pulsing, in imx8mp_hdmi_power_notifier()
421 struct imx8mp_blk_ctrl_domain *domain = to_imx8mp_blk_ctrl_domain(genpd); in imx8mp_blk_ctrl_power_on() local
422 const struct imx8mp_blk_ctrl_domain_data *data = domain->data; in imx8mp_blk_ctrl_power_on()
423 struct imx8mp_blk_ctrl *bc = domain->bc; in imx8mp_blk_ctrl_power_on()
426 /* make sure bus domain is awake */ in imx8mp_blk_ctrl_power_on()
429 dev_err(bc->dev, "failed to power up bus domain\n"); in imx8mp_blk_ctrl_power_on()
434 ret = clk_bulk_prepare_enable(data->num_clks, domain->clks); in imx8mp_blk_ctrl_power_on()
440 /* domain specific blk-ctrl manipulation */ in imx8mp_blk_ctrl_power_on()
441 bc->power_on(bc, domain); in imx8mp_blk_ctrl_power_on()
443 /* power up upstream GPC domain */ in imx8mp_blk_ctrl_power_on()
444 ret = pm_runtime_resume_and_get(domain->power_dev); in imx8mp_blk_ctrl_power_on()
446 dev_err(bc->dev, "failed to power up peripheral domain\n"); in imx8mp_blk_ctrl_power_on()
450 ret = icc_bulk_set_bw(domain->num_paths, domain->paths); in imx8mp_blk_ctrl_power_on()
454 clk_bulk_disable_unprepare(data->num_clks, domain->clks); in imx8mp_blk_ctrl_power_on()
459 clk_bulk_disable_unprepare(data->num_clks, domain->clks); in imx8mp_blk_ctrl_power_on()
468 struct imx8mp_blk_ctrl_domain *domain = to_imx8mp_blk_ctrl_domain(genpd); in imx8mp_blk_ctrl_power_off() local
469 const struct imx8mp_blk_ctrl_domain_data *data = domain->data; in imx8mp_blk_ctrl_power_off()
470 struct imx8mp_blk_ctrl *bc = domain->bc; in imx8mp_blk_ctrl_power_off()
473 ret = clk_bulk_prepare_enable(data->num_clks, domain->clks); in imx8mp_blk_ctrl_power_off()
479 /* domain specific blk-ctrl manipulation */ in imx8mp_blk_ctrl_power_off()
480 bc->power_off(bc, domain); in imx8mp_blk_ctrl_power_off()
482 clk_bulk_disable_unprepare(data->num_clks, domain->clks); in imx8mp_blk_ctrl_power_off()
484 /* power down upstream GPC domain */ in imx8mp_blk_ctrl_power_off()
485 pm_runtime_put(domain->power_dev); in imx8mp_blk_ctrl_power_off()
487 /* allow bus domain to suspend */ in imx8mp_blk_ctrl_power_off()
544 "failed to attach bus power domain\n"); in imx8mp_blk_ctrl_probe()
551 struct imx8mp_blk_ctrl_domain *domain = &bc->domains[i]; in imx8mp_blk_ctrl_probe() local
554 domain->data = data; in imx8mp_blk_ctrl_probe()
555 domain->num_paths = data->num_paths; in imx8mp_blk_ctrl_probe()
558 domain->clks[j].id = data->clk_names[j]; in imx8mp_blk_ctrl_probe()
561 domain->paths[j].name = data->path_names[j]; in imx8mp_blk_ctrl_probe()
563 domain->paths[j].avg_bw = 1; in imx8mp_blk_ctrl_probe()
564 domain->paths[j].peak_bw = 1; in imx8mp_blk_ctrl_probe()
567 ret = devm_of_icc_bulk_get(dev, data->num_paths, domain->paths); in imx8mp_blk_ctrl_probe()
571 domain->num_paths = 0; in imx8mp_blk_ctrl_probe()
578 ret = devm_clk_bulk_get(dev, data->num_clks, domain->clks); in imx8mp_blk_ctrl_probe()
584 domain->power_dev = in imx8mp_blk_ctrl_probe()
586 if (IS_ERR(domain->power_dev)) { in imx8mp_blk_ctrl_probe()
587 dev_err_probe(dev, PTR_ERR(domain->power_dev), in imx8mp_blk_ctrl_probe()
588 "failed to attach power domain %s\n", in imx8mp_blk_ctrl_probe()
590 ret = PTR_ERR(domain->power_dev); in imx8mp_blk_ctrl_probe()
593 dev_set_name(domain->power_dev, "%s", data->name); in imx8mp_blk_ctrl_probe()
595 domain->genpd.name = data->name; in imx8mp_blk_ctrl_probe()
596 domain->genpd.power_on = imx8mp_blk_ctrl_power_on; in imx8mp_blk_ctrl_probe()
597 domain->genpd.power_off = imx8mp_blk_ctrl_power_off; in imx8mp_blk_ctrl_probe()
598 domain->bc = bc; in imx8mp_blk_ctrl_probe()
599 domain->id = i; in imx8mp_blk_ctrl_probe()
601 ret = pm_genpd_init(&domain->genpd, NULL, true); in imx8mp_blk_ctrl_probe()
603 dev_err_probe(dev, ret, "failed to init power domain\n"); in imx8mp_blk_ctrl_probe()
604 dev_pm_domain_detach(domain->power_dev, true); in imx8mp_blk_ctrl_probe()
610 * domain, as a strict hierarchical parent/child power domain in imx8mp_blk_ctrl_probe()
615 * this are separate domain locks that can be nested without a in imx8mp_blk_ctrl_probe()
618 lockdep_set_class(&domain->genpd.mlock, in imx8mp_blk_ctrl_probe()
621 bc->onecell_data.domains[i] = &domain->genpd; in imx8mp_blk_ctrl_probe()
626 dev_err_probe(dev, ret, "failed to add power domain provider\n"); in imx8mp_blk_ctrl_probe()
662 struct imx8mp_blk_ctrl_domain *domain = &bc->domains[i]; in imx8mp_blk_ctrl_remove() local
664 pm_genpd_remove(&domain->genpd); in imx8mp_blk_ctrl_remove()
665 dev_pm_domain_detach(domain->power_dev, true); in imx8mp_blk_ctrl_remove()
696 struct imx8mp_blk_ctrl_domain *domain = &bc->domains[i]; in imx8mp_blk_ctrl_suspend() local
698 ret = pm_runtime_get_sync(domain->power_dev); in imx8mp_blk_ctrl_suspend()
700 pm_runtime_put_noidle(domain->power_dev); in imx8mp_blk_ctrl_suspend()