Lines Matching refs:domain

318 	struct imx_pgc_domain *domain = to_imx_pgc_domain(genpd);  in imx_pgc_power_up()  local
322 ret = pm_runtime_get_sync(domain->dev); in imx_pgc_power_up()
324 pm_runtime_put_noidle(domain->dev); in imx_pgc_power_up()
328 if (!IS_ERR(domain->regulator)) { in imx_pgc_power_up()
329 ret = regulator_enable(domain->regulator); in imx_pgc_power_up()
331 dev_err(domain->dev, in imx_pgc_power_up()
338 reset_control_assert(domain->reset); in imx_pgc_power_up()
341 ret = clk_bulk_prepare_enable(domain->num_clks, domain->clks); in imx_pgc_power_up()
343 dev_err(domain->dev, "failed to enable reset clocks\n"); in imx_pgc_power_up()
350 if (domain->bits.pxx) { in imx_pgc_power_up()
352 regmap_update_bits(domain->regmap, domain->regs->pup, in imx_pgc_power_up()
353 domain->bits.pxx, domain->bits.pxx); in imx_pgc_power_up()
358 ret = regmap_read_poll_timeout(domain->regmap, in imx_pgc_power_up()
359 domain->regs->pup, reg_val, in imx_pgc_power_up()
360 !(reg_val & domain->bits.pxx), in imx_pgc_power_up()
363 dev_err(domain->dev, "failed to command PGC\n"); in imx_pgc_power_up()
368 for_each_set_bit(pgc, &domain->pgc, 32) { in imx_pgc_power_up()
369 regmap_clear_bits(domain->regmap, GPC_PGC_CTRL(pgc), in imx_pgc_power_up()
377 reset_control_deassert(domain->reset); in imx_pgc_power_up()
380 if (domain->bits.hskreq) { in imx_pgc_power_up()
381 regmap_update_bits(domain->regmap, domain->regs->hsk, in imx_pgc_power_up()
382 domain->bits.hskreq, domain->bits.hskreq); in imx_pgc_power_up()
405 regmap_read_bypassed(domain->regmap, domain->regs->hsk, &reg_val); in imx_pgc_power_up()
410 if (!domain->keep_clocks) in imx_pgc_power_up()
411 clk_bulk_disable_unprepare(domain->num_clks, domain->clks); in imx_pgc_power_up()
416 clk_bulk_disable_unprepare(domain->num_clks, domain->clks); in imx_pgc_power_up()
418 if (!IS_ERR(domain->regulator)) in imx_pgc_power_up()
419 regulator_disable(domain->regulator); in imx_pgc_power_up()
421 pm_runtime_put(domain->dev); in imx_pgc_power_up()
428 struct imx_pgc_domain *domain = to_imx_pgc_domain(genpd); in imx_pgc_power_down() local
433 if (!domain->keep_clocks) { in imx_pgc_power_down()
434 ret = clk_bulk_prepare_enable(domain->num_clks, domain->clks); in imx_pgc_power_down()
436 dev_err(domain->dev, "failed to enable reset clocks\n"); in imx_pgc_power_down()
442 if (domain->bits.hskreq) { in imx_pgc_power_down()
443 regmap_clear_bits(domain->regmap, domain->regs->hsk, in imx_pgc_power_down()
444 domain->bits.hskreq); in imx_pgc_power_down()
446 ret = regmap_read_poll_timeout(domain->regmap, domain->regs->hsk, in imx_pgc_power_down()
448 !(reg_val & domain->bits.hskack), in imx_pgc_power_down()
451 dev_err(domain->dev, "failed to power down ADB400\n"); in imx_pgc_power_down()
456 if (domain->bits.pxx) { in imx_pgc_power_down()
458 for_each_set_bit(pgc, &domain->pgc, 32) { in imx_pgc_power_down()
459 regmap_update_bits(domain->regmap, GPC_PGC_CTRL(pgc), in imx_pgc_power_down()
464 regmap_update_bits(domain->regmap, domain->regs->pdn, in imx_pgc_power_down()
465 domain->bits.pxx, domain->bits.pxx); in imx_pgc_power_down()
470 ret = regmap_read_poll_timeout(domain->regmap, in imx_pgc_power_down()
471 domain->regs->pdn, reg_val, in imx_pgc_power_down()
472 !(reg_val & domain->bits.pxx), in imx_pgc_power_down()
475 dev_err(domain->dev, "failed to command PGC\n"); in imx_pgc_power_down()
481 clk_bulk_disable_unprepare(domain->num_clks, domain->clks); in imx_pgc_power_down()
483 if (!IS_ERR(domain->regulator)) { in imx_pgc_power_down()
484 ret = regulator_disable(domain->regulator); in imx_pgc_power_down()
486 dev_err(domain->dev, in imx_pgc_power_down()
493 pm_runtime_put_sync_suspend(domain->dev); in imx_pgc_power_down()
498 if (!domain->keep_clocks) in imx_pgc_power_down()
499 clk_bulk_disable_unprepare(domain->num_clks, domain->clks); in imx_pgc_power_down()
1326 struct imx_pgc_domain *domain = pdev->dev.platform_data; in imx_pgc_domain_probe() local
1329 domain->dev = &pdev->dev; in imx_pgc_domain_probe()
1331 domain->regulator = devm_regulator_get_optional(domain->dev, "power"); in imx_pgc_domain_probe()
1332 if (IS_ERR(domain->regulator)) { in imx_pgc_domain_probe()
1333 if (PTR_ERR(domain->regulator) != -ENODEV) in imx_pgc_domain_probe()
1334 return dev_err_probe(domain->dev, PTR_ERR(domain->regulator), in imx_pgc_domain_probe()
1336 } else if (domain->voltage) { in imx_pgc_domain_probe()
1337 regulator_set_voltage(domain->regulator, in imx_pgc_domain_probe()
1338 domain->voltage, domain->voltage); in imx_pgc_domain_probe()
1341 domain->num_clks = devm_clk_bulk_get_all(domain->dev, &domain->clks); in imx_pgc_domain_probe()
1342 if (domain->num_clks < 0) in imx_pgc_domain_probe()
1343 return dev_err_probe(domain->dev, domain->num_clks, in imx_pgc_domain_probe()
1346 domain->reset = devm_reset_control_array_get_optional_exclusive(domain->dev); in imx_pgc_domain_probe()
1347 if (IS_ERR(domain->reset)) in imx_pgc_domain_probe()
1348 return dev_err_probe(domain->dev, PTR_ERR(domain->reset), in imx_pgc_domain_probe()
1351 pm_runtime_enable(domain->dev); in imx_pgc_domain_probe()
1353 if (domain->bits.map) in imx_pgc_domain_probe()
1354 regmap_update_bits(domain->regmap, domain->regs->map, in imx_pgc_domain_probe()
1355 domain->bits.map, domain->bits.map); in imx_pgc_domain_probe()
1357 ret = pm_genpd_init(&domain->genpd, NULL, true); in imx_pgc_domain_probe()
1359 dev_err_probe(domain->dev, ret, "Failed to init power domain\n"); in imx_pgc_domain_probe()
1364 of_property_read_bool(domain->dev->of_node, "power-domains")) in imx_pgc_domain_probe()
1365 lockdep_set_subclass(&domain->genpd.mlock, 1); in imx_pgc_domain_probe()
1367 ret = of_genpd_add_provider_simple(domain->dev->of_node, in imx_pgc_domain_probe()
1368 &domain->genpd); in imx_pgc_domain_probe()
1370 dev_err_probe(domain->dev, ret, "Failed to add genpd provider\n"); in imx_pgc_domain_probe()
1377 pm_genpd_remove(&domain->genpd); in imx_pgc_domain_probe()
1379 if (domain->bits.map) in imx_pgc_domain_probe()
1380 regmap_update_bits(domain->regmap, domain->regs->map, in imx_pgc_domain_probe()
1381 domain->bits.map, 0); in imx_pgc_domain_probe()
1382 pm_runtime_disable(domain->dev); in imx_pgc_domain_probe()
1389 struct imx_pgc_domain *domain = pdev->dev.platform_data; in imx_pgc_domain_remove() local
1391 of_genpd_del_provider(domain->dev->of_node); in imx_pgc_domain_remove()
1392 pm_genpd_remove(&domain->genpd); in imx_pgc_domain_remove()
1394 if (domain->bits.map) in imx_pgc_domain_remove()
1395 regmap_update_bits(domain->regmap, domain->regs->map, in imx_pgc_domain_remove()
1396 domain->bits.map, 0); in imx_pgc_domain_remove()
1398 pm_runtime_disable(domain->dev); in imx_pgc_domain_remove()
1486 struct imx_pgc_domain *domain; in builtin_platform_driver() local
1520 domain = pd_pdev->dev.platform_data; in builtin_platform_driver()
1521 domain->regmap = regmap; in builtin_platform_driver()
1522 domain->regs = domain_data->pgc_regs; in builtin_platform_driver()
1524 domain->genpd.power_on = imx_pgc_power_up; in builtin_platform_driver()
1525 domain->genpd.power_off = imx_pgc_power_down; in builtin_platform_driver()