Lines Matching refs:bc

67 	struct imx8m_blk_ctrl *bc;  member
88 struct imx8m_blk_ctrl *bc = domain->bc; in imx8m_blk_ctrl_power_on() local
92 ret = pm_runtime_get_sync(bc->bus_power_dev); in imx8m_blk_ctrl_power_on()
94 pm_runtime_put_noidle(bc->bus_power_dev); in imx8m_blk_ctrl_power_on()
95 dev_err(bc->dev, "failed to power up bus domain\n"); in imx8m_blk_ctrl_power_on()
100 regmap_clear_bits(bc->regmap, BLK_SFT_RSTN, data->rst_mask); in imx8m_blk_ctrl_power_on()
102 regmap_clear_bits(bc->regmap, BLK_MIPI_RESET_DIV, data->mipi_phy_rst_mask); in imx8m_blk_ctrl_power_on()
107 dev_err(bc->dev, "failed to enable clocks\n"); in imx8m_blk_ctrl_power_on()
110 regmap_set_bits(bc->regmap, BLK_CLK_EN, data->clk_mask); in imx8m_blk_ctrl_power_on()
115 dev_err(bc->dev, "failed to power up peripheral domain\n"); in imx8m_blk_ctrl_power_on()
123 regmap_set_bits(bc->regmap, BLK_SFT_RSTN, data->rst_mask); in imx8m_blk_ctrl_power_on()
125 regmap_set_bits(bc->regmap, BLK_MIPI_RESET_DIV, data->mipi_phy_rst_mask); in imx8m_blk_ctrl_power_on()
129 dev_err(bc->dev, "failed to set icc bw\n"); in imx8m_blk_ctrl_power_on()
139 pm_runtime_put(bc->bus_power_dev); in imx8m_blk_ctrl_power_on()
148 struct imx8m_blk_ctrl *bc = domain->bc; in imx8m_blk_ctrl_power_off() local
152 regmap_clear_bits(bc->regmap, BLK_MIPI_RESET_DIV, data->mipi_phy_rst_mask); in imx8m_blk_ctrl_power_off()
154 regmap_clear_bits(bc->regmap, BLK_SFT_RSTN, data->rst_mask); in imx8m_blk_ctrl_power_off()
155 regmap_clear_bits(bc->regmap, BLK_CLK_EN, data->clk_mask); in imx8m_blk_ctrl_power_off()
161 pm_runtime_put(bc->bus_power_dev); in imx8m_blk_ctrl_power_off()
172 struct imx8m_blk_ctrl *bc; in imx8m_blk_ctrl_probe() local
182 bc = devm_kzalloc(dev, sizeof(*bc), GFP_KERNEL); in imx8m_blk_ctrl_probe()
183 if (!bc) in imx8m_blk_ctrl_probe()
186 bc->dev = dev; in imx8m_blk_ctrl_probe()
195 bc->regmap = devm_regmap_init_mmio(dev, base, &regmap_config); in imx8m_blk_ctrl_probe()
196 if (IS_ERR(bc->regmap)) in imx8m_blk_ctrl_probe()
197 return dev_err_probe(dev, PTR_ERR(bc->regmap), in imx8m_blk_ctrl_probe()
200 bc->domains = devm_kcalloc(dev, bc_data->num_domains, in imx8m_blk_ctrl_probe()
203 if (!bc->domains) in imx8m_blk_ctrl_probe()
206 bc->onecell_data.num_domains = bc_data->num_domains; in imx8m_blk_ctrl_probe()
207 bc->onecell_data.domains = in imx8m_blk_ctrl_probe()
210 if (!bc->onecell_data.domains) in imx8m_blk_ctrl_probe()
213 bc->bus_power_dev = genpd_dev_pm_attach_by_name(dev, "bus"); in imx8m_blk_ctrl_probe()
214 if (IS_ERR(bc->bus_power_dev)) { in imx8m_blk_ctrl_probe()
215 if (PTR_ERR(bc->bus_power_dev) == -ENODEV) in imx8m_blk_ctrl_probe()
219 return dev_err_probe(dev, PTR_ERR(bc->bus_power_dev), in imx8m_blk_ctrl_probe()
225 struct imx8m_blk_ctrl_domain *domain = &bc->domains[i]; in imx8m_blk_ctrl_probe()
271 domain->bc = bc; in imx8m_blk_ctrl_probe()
295 bc->onecell_data.domains[i] = &domain->genpd; in imx8m_blk_ctrl_probe()
298 ret = of_genpd_add_provider_onecell(dev->of_node, &bc->onecell_data); in imx8m_blk_ctrl_probe()
304 bc->power_nb.notifier_call = bc_data->power_notifier_fn; in imx8m_blk_ctrl_probe()
305 ret = dev_pm_genpd_add_notifier(bc->bus_power_dev, &bc->power_nb); in imx8m_blk_ctrl_probe()
311 dev_set_drvdata(dev, bc); in imx8m_blk_ctrl_probe()
319 pm_genpd_remove(&bc->domains[i].genpd); in imx8m_blk_ctrl_probe()
320 dev_pm_domain_detach(bc->domains[i].power_dev, true); in imx8m_blk_ctrl_probe()
323 dev_pm_domain_detach(bc->bus_power_dev, true); in imx8m_blk_ctrl_probe()
330 struct imx8m_blk_ctrl *bc = dev_get_drvdata(&pdev->dev); in imx8m_blk_ctrl_remove() local
335 for (i = 0; bc->onecell_data.num_domains; i++) { in imx8m_blk_ctrl_remove()
336 struct imx8m_blk_ctrl_domain *domain = &bc->domains[i]; in imx8m_blk_ctrl_remove()
342 dev_pm_genpd_remove_notifier(bc->bus_power_dev); in imx8m_blk_ctrl_remove()
344 dev_pm_domain_detach(bc->bus_power_dev, true); in imx8m_blk_ctrl_remove()
352 struct imx8m_blk_ctrl *bc = dev_get_drvdata(dev); in imx8m_blk_ctrl_suspend() local
363 ret = pm_runtime_get_sync(bc->bus_power_dev); in imx8m_blk_ctrl_suspend()
365 pm_runtime_put_noidle(bc->bus_power_dev); in imx8m_blk_ctrl_suspend()
369 for (i = 0; i < bc->onecell_data.num_domains; i++) { in imx8m_blk_ctrl_suspend()
370 struct imx8m_blk_ctrl_domain *domain = &bc->domains[i]; in imx8m_blk_ctrl_suspend()
383 pm_runtime_put(bc->domains[i].power_dev); in imx8m_blk_ctrl_suspend()
385 pm_runtime_put(bc->bus_power_dev); in imx8m_blk_ctrl_suspend()
392 struct imx8m_blk_ctrl *bc = dev_get_drvdata(dev); in imx8m_blk_ctrl_resume() local
395 for (i = 0; i < bc->onecell_data.num_domains; i++) in imx8m_blk_ctrl_resume()
396 pm_runtime_put(bc->domains[i].power_dev); in imx8m_blk_ctrl_resume()
398 pm_runtime_put(bc->bus_power_dev); in imx8m_blk_ctrl_resume()
411 struct imx8m_blk_ctrl *bc = container_of(nb, struct imx8m_blk_ctrl, in imx8mm_vpu_power_notifier() local
423 regmap_clear_bits(bc->regmap, BLK_SFT_RSTN, BIT(0) | BIT(1) | BIT(2)); in imx8mm_vpu_power_notifier()
424 regmap_set_bits(bc->regmap, BLK_CLK_EN, BIT(0) | BIT(1) | BIT(2)); in imx8mm_vpu_power_notifier()
435 regmap_set_bits(bc->regmap, 0x8, 0xffffffff); in imx8mm_vpu_power_notifier()
436 regmap_set_bits(bc->regmap, 0xc, 0xffffffff); in imx8mm_vpu_power_notifier()
437 regmap_set_bits(bc->regmap, 0x10, 0xffffffff); in imx8mm_vpu_power_notifier()
438 regmap_set_bits(bc->regmap, 0x14, 0xffffffff); in imx8mm_vpu_power_notifier()
521 struct imx8m_blk_ctrl *bc = container_of(nb, struct imx8m_blk_ctrl, in imx8mm_disp_power_notifier() local
528 regmap_set_bits(bc->regmap, BLK_CLK_EN, BIT(12)); in imx8mm_disp_power_notifier()
529 regmap_set_bits(bc->regmap, BLK_SFT_RSTN, BIT(6)); in imx8mm_disp_power_notifier()
591 struct imx8m_blk_ctrl *bc = container_of(nb, struct imx8m_blk_ctrl, in imx8mn_disp_power_notifier() local
598 regmap_set_bits(bc->regmap, BLK_CLK_EN, BIT(8)); in imx8mn_disp_power_notifier()
599 regmap_set_bits(bc->regmap, BLK_SFT_RSTN, BIT(8)); in imx8mn_disp_power_notifier()
665 struct imx8m_blk_ctrl *bc = container_of(nb, struct imx8m_blk_ctrl, in imx8mp_media_power_notifier() local
672 regmap_set_bits(bc->regmap, BLK_CLK_EN, BIT(8)); in imx8mp_media_power_notifier()
673 regmap_set_bits(bc->regmap, BLK_SFT_RSTN, BIT(8)); in imx8mp_media_power_notifier()
688 regmap_set_bits(bc->regmap, LCDIF_ARCACHE_CTRL, in imx8mp_media_power_notifier()
800 struct imx8m_blk_ctrl *bc = container_of(nb, struct imx8m_blk_ctrl, in imx8mq_vpu_power_notifier() local
813 regmap_set_bits(bc->regmap, BLK_SFT_RSTN, BIT(0) | BIT(1)); in imx8mq_vpu_power_notifier()
814 regmap_set_bits(bc->regmap, BLK_CLK_EN, BIT(0) | BIT(1)); in imx8mq_vpu_power_notifier()
825 regmap_set_bits(bc->regmap, 0x8, 0xffffffff); in imx8mq_vpu_power_notifier()
826 regmap_set_bits(bc->regmap, 0xc, 0xffffffff); in imx8mq_vpu_power_notifier()
827 regmap_set_bits(bc->regmap, 0x10, 0xffffffff); in imx8mq_vpu_power_notifier()