Lines Matching refs:domain

223 	struct imx_pgc_domain *domain = to_imx_pgc_domain(genpd);  in imx_pgc_power_up()  local
227 ret = pm_runtime_get_sync(domain->dev); in imx_pgc_power_up()
229 pm_runtime_put_noidle(domain->dev); in imx_pgc_power_up()
233 if (!IS_ERR(domain->regulator)) { in imx_pgc_power_up()
234 ret = regulator_enable(domain->regulator); in imx_pgc_power_up()
236 dev_err(domain->dev, "failed to enable regulator\n"); in imx_pgc_power_up()
242 ret = clk_bulk_prepare_enable(domain->num_clks, domain->clks); in imx_pgc_power_up()
244 dev_err(domain->dev, "failed to enable reset clocks\n"); in imx_pgc_power_up()
248 reset_control_assert(domain->reset); in imx_pgc_power_up()
250 if (domain->bits.pxx) { in imx_pgc_power_up()
252 regmap_update_bits(domain->regmap, GPC_PU_PGC_SW_PUP_REQ, in imx_pgc_power_up()
253 domain->bits.pxx, domain->bits.pxx); in imx_pgc_power_up()
258 ret = regmap_read_poll_timeout(domain->regmap, in imx_pgc_power_up()
260 !(reg_val & domain->bits.pxx), in imx_pgc_power_up()
263 dev_err(domain->dev, "failed to command PGC\n"); in imx_pgc_power_up()
268 for_each_set_bit(pgc, &domain->pgc, 32) { in imx_pgc_power_up()
269 regmap_clear_bits(domain->regmap, GPC_PGC_CTRL(pgc), in imx_pgc_power_up()
277 reset_control_deassert(domain->reset); in imx_pgc_power_up()
280 if (domain->bits.hskreq) { in imx_pgc_power_up()
281 regmap_update_bits(domain->regmap, GPC_PU_PWRHSK, in imx_pgc_power_up()
282 domain->bits.hskreq, domain->bits.hskreq); in imx_pgc_power_up()
299 if (!domain->keep_clocks) in imx_pgc_power_up()
300 clk_bulk_disable_unprepare(domain->num_clks, domain->clks); in imx_pgc_power_up()
305 clk_bulk_disable_unprepare(domain->num_clks, domain->clks); in imx_pgc_power_up()
307 if (!IS_ERR(domain->regulator)) in imx_pgc_power_up()
308 regulator_disable(domain->regulator); in imx_pgc_power_up()
310 pm_runtime_put(domain->dev); in imx_pgc_power_up()
317 struct imx_pgc_domain *domain = to_imx_pgc_domain(genpd); in imx_pgc_power_down() local
322 if (!domain->keep_clocks) { in imx_pgc_power_down()
323 ret = clk_bulk_prepare_enable(domain->num_clks, domain->clks); in imx_pgc_power_down()
325 dev_err(domain->dev, "failed to enable reset clocks\n"); in imx_pgc_power_down()
331 if (domain->bits.hskreq) { in imx_pgc_power_down()
332 regmap_clear_bits(domain->regmap, GPC_PU_PWRHSK, in imx_pgc_power_down()
333 domain->bits.hskreq); in imx_pgc_power_down()
335 ret = regmap_read_poll_timeout(domain->regmap, GPC_PU_PWRHSK, in imx_pgc_power_down()
337 !(reg_val & domain->bits.hskack), in imx_pgc_power_down()
340 dev_err(domain->dev, "failed to power down ADB400\n"); in imx_pgc_power_down()
345 if (domain->bits.pxx) { in imx_pgc_power_down()
347 for_each_set_bit(pgc, &domain->pgc, 32) { in imx_pgc_power_down()
348 regmap_update_bits(domain->regmap, GPC_PGC_CTRL(pgc), in imx_pgc_power_down()
353 regmap_update_bits(domain->regmap, GPC_PU_PGC_SW_PDN_REQ, in imx_pgc_power_down()
354 domain->bits.pxx, domain->bits.pxx); in imx_pgc_power_down()
359 ret = regmap_read_poll_timeout(domain->regmap, in imx_pgc_power_down()
361 !(reg_val & domain->bits.pxx), in imx_pgc_power_down()
364 dev_err(domain->dev, "failed to command PGC\n"); in imx_pgc_power_down()
370 clk_bulk_disable_unprepare(domain->num_clks, domain->clks); in imx_pgc_power_down()
372 if (!IS_ERR(domain->regulator)) { in imx_pgc_power_down()
373 ret = regulator_disable(domain->regulator); in imx_pgc_power_down()
375 dev_err(domain->dev, "failed to disable regulator\n"); in imx_pgc_power_down()
380 pm_runtime_put(domain->dev); in imx_pgc_power_down()
385 clk_bulk_disable_unprepare(domain->num_clks, domain->clks); in imx_pgc_power_down()
874 struct imx_pgc_domain *domain = pdev->dev.platform_data; in imx_pgc_domain_probe() local
877 domain->dev = &pdev->dev; in imx_pgc_domain_probe()
879 domain->regulator = devm_regulator_get_optional(domain->dev, "power"); in imx_pgc_domain_probe()
880 if (IS_ERR(domain->regulator)) { in imx_pgc_domain_probe()
881 if (PTR_ERR(domain->regulator) != -ENODEV) in imx_pgc_domain_probe()
882 return dev_err_probe(domain->dev, PTR_ERR(domain->regulator), in imx_pgc_domain_probe()
884 } else if (domain->voltage) { in imx_pgc_domain_probe()
885 regulator_set_voltage(domain->regulator, in imx_pgc_domain_probe()
886 domain->voltage, domain->voltage); in imx_pgc_domain_probe()
889 domain->num_clks = devm_clk_bulk_get_all(domain->dev, &domain->clks); in imx_pgc_domain_probe()
890 if (domain->num_clks < 0) in imx_pgc_domain_probe()
891 return dev_err_probe(domain->dev, domain->num_clks, in imx_pgc_domain_probe()
894 domain->reset = devm_reset_control_array_get_optional_exclusive(domain->dev); in imx_pgc_domain_probe()
895 if (IS_ERR(domain->reset)) in imx_pgc_domain_probe()
896 return dev_err_probe(domain->dev, PTR_ERR(domain->reset), in imx_pgc_domain_probe()
899 pm_runtime_enable(domain->dev); in imx_pgc_domain_probe()
901 if (domain->bits.map) in imx_pgc_domain_probe()
902 regmap_update_bits(domain->regmap, GPC_PGC_CPU_MAPPING, in imx_pgc_domain_probe()
903 domain->bits.map, domain->bits.map); in imx_pgc_domain_probe()
905 ret = pm_genpd_init(&domain->genpd, NULL, true); in imx_pgc_domain_probe()
907 dev_err(domain->dev, "Failed to init power domain\n"); in imx_pgc_domain_probe()
912 of_property_read_bool(domain->dev->of_node, "power-domains")) in imx_pgc_domain_probe()
913 lockdep_set_subclass(&domain->genpd.mlock, 1); in imx_pgc_domain_probe()
915 ret = of_genpd_add_provider_simple(domain->dev->of_node, in imx_pgc_domain_probe()
916 &domain->genpd); in imx_pgc_domain_probe()
918 dev_err(domain->dev, "Failed to add genpd provider\n"); in imx_pgc_domain_probe()
925 pm_genpd_remove(&domain->genpd); in imx_pgc_domain_probe()
927 if (domain->bits.map) in imx_pgc_domain_probe()
928 regmap_update_bits(domain->regmap, GPC_PGC_CPU_MAPPING, in imx_pgc_domain_probe()
929 domain->bits.map, 0); in imx_pgc_domain_probe()
930 pm_runtime_disable(domain->dev); in imx_pgc_domain_probe()
937 struct imx_pgc_domain *domain = pdev->dev.platform_data; in imx_pgc_domain_remove() local
939 of_genpd_del_provider(domain->dev->of_node); in imx_pgc_domain_remove()
940 pm_genpd_remove(&domain->genpd); in imx_pgc_domain_remove()
942 if (domain->bits.map) in imx_pgc_domain_remove()
943 regmap_update_bits(domain->regmap, GPC_PGC_CPU_MAPPING, in imx_pgc_domain_remove()
944 domain->bits.map, 0); in imx_pgc_domain_remove()
946 pm_runtime_disable(domain->dev); in imx_pgc_domain_remove()
1035 struct imx_pgc_domain *domain; in builtin_platform_driver() local
1072 domain = pd_pdev->dev.platform_data; in builtin_platform_driver()
1073 domain->regmap = regmap; in builtin_platform_driver()
1074 domain->genpd.power_on = imx_pgc_power_up; in builtin_platform_driver()
1075 domain->genpd.power_off = imx_pgc_power_down; in builtin_platform_driver()