Lines Matching refs:prmd
71 struct omap_prm_domain *prmd; member
507 static void omap_prm_domain_show_state(struct omap_prm_domain *prmd, in omap_prm_domain_show_state() argument
510 dev_dbg(prmd->dev, "%s %s: %08x/%08x\n", in omap_prm_domain_show_state()
511 prmd->pd.name, desc, in omap_prm_domain_show_state()
512 readl_relaxed(prmd->prm->base + prmd->pwrstctrl), in omap_prm_domain_show_state()
513 readl_relaxed(prmd->prm->base + prmd->pwrstst)); in omap_prm_domain_show_state()
516 static inline void omap_prm_domain_show_state(struct omap_prm_domain *prmd, in omap_prm_domain_show_state() argument
524 struct omap_prm_domain *prmd; in omap_prm_domain_power_on() local
528 prmd = genpd_to_prm_domain(domain); in omap_prm_domain_power_on()
529 if (!prmd->cap) in omap_prm_domain_power_on()
532 omap_prm_domain_show_state(prmd, "on: previous state"); in omap_prm_domain_power_on()
534 if (prmd->pwrstctrl_saved) in omap_prm_domain_power_on()
535 v = prmd->pwrstctrl_saved; in omap_prm_domain_power_on()
537 v = readl_relaxed(prmd->prm->base + prmd->pwrstctrl); in omap_prm_domain_power_on()
539 if (prmd->prm->data->flags & OMAP_PRM_RET_WHEN_IDLE) in omap_prm_domain_power_on()
545 prmd->prm->base + prmd->pwrstctrl); in omap_prm_domain_power_on()
548 ret = readl_relaxed_poll_timeout(prmd->prm->base + prmd->pwrstst, in omap_prm_domain_power_on()
552 dev_err(prmd->dev, "%s: %s timed out\n", in omap_prm_domain_power_on()
553 prmd->pd.name, __func__); in omap_prm_domain_power_on()
555 omap_prm_domain_show_state(prmd, "on: new state"); in omap_prm_domain_power_on()
561 static int omap_prm_domain_find_lowest(struct omap_prm_domain *prmd) in omap_prm_domain_find_lowest() argument
563 return __ffs(prmd->cap->usable_modes); in omap_prm_domain_find_lowest()
568 struct omap_prm_domain *prmd; in omap_prm_domain_power_off() local
572 prmd = genpd_to_prm_domain(domain); in omap_prm_domain_power_off()
573 if (!prmd->cap) in omap_prm_domain_power_off()
576 omap_prm_domain_show_state(prmd, "off: previous state"); in omap_prm_domain_power_off()
578 v = readl_relaxed(prmd->prm->base + prmd->pwrstctrl); in omap_prm_domain_power_off()
579 prmd->pwrstctrl_saved = v; in omap_prm_domain_power_off()
582 v |= omap_prm_domain_find_lowest(prmd); in omap_prm_domain_power_off()
584 if (prmd->cap->statechange) in omap_prm_domain_power_off()
586 if (prmd->cap->logicretstate) in omap_prm_domain_power_off()
591 writel_relaxed(v, prmd->prm->base + prmd->pwrstctrl); in omap_prm_domain_power_off()
594 ret = readl_relaxed_poll_timeout(prmd->prm->base + prmd->pwrstst, in omap_prm_domain_power_off()
598 dev_warn(prmd->dev, "%s: %s timed out\n", in omap_prm_domain_power_off()
599 __func__, prmd->pd.name); in omap_prm_domain_power_off()
601 omap_prm_domain_show_state(prmd, "off: new state"); in omap_prm_domain_power_off()
612 struct omap_prm_domain *prmd) in omap_prm_domain_attach_clock() argument
633 prmd->uses_pm_clk = 1; in omap_prm_domain_attach_clock()
643 struct omap_prm_domain *prmd; in omap_prm_domain_attach_dev() local
647 prmd = genpd_to_prm_domain(domain); in omap_prm_domain_attach_dev()
657 prmd->pd.name, pd_args.args_count); in omap_prm_domain_attach_dev()
662 ret = omap_prm_domain_attach_clock(dev, prmd); in omap_prm_domain_attach_dev()
673 struct omap_prm_domain *prmd; in omap_prm_domain_detach_dev() local
675 prmd = genpd_to_prm_domain(domain); in omap_prm_domain_detach_dev()
676 if (prmd->uses_pm_clk) in omap_prm_domain_detach_dev()
684 struct omap_prm_domain *prmd; in omap_prm_domain_init() local
695 prmd = devm_kzalloc(dev, sizeof(*prmd), GFP_KERNEL); in omap_prm_domain_init()
696 if (!prmd) in omap_prm_domain_init()
705 prmd->dev = dev; in omap_prm_domain_init()
706 prmd->prm = prm; in omap_prm_domain_init()
707 prmd->cap = prmd->prm->data->dmap; in omap_prm_domain_init()
708 prmd->pwrstctrl = prmd->prm->data->pwrstctrl; in omap_prm_domain_init()
709 prmd->pwrstst = prmd->prm->data->pwrstst; in omap_prm_domain_init()
711 prmd->pd.name = name; in omap_prm_domain_init()
712 prmd->pd.power_on = omap_prm_domain_power_on; in omap_prm_domain_init()
713 prmd->pd.power_off = omap_prm_domain_power_off; in omap_prm_domain_init()
714 prmd->pd.attach_dev = omap_prm_domain_attach_dev; in omap_prm_domain_init()
715 prmd->pd.detach_dev = omap_prm_domain_detach_dev; in omap_prm_domain_init()
716 prmd->pd.flags = GENPD_FLAG_PM_CLK; in omap_prm_domain_init()
718 pm_genpd_init(&prmd->pd, NULL, true); in omap_prm_domain_init()
719 error = of_genpd_add_provider_simple(np, &prmd->pd); in omap_prm_domain_init()
721 pm_genpd_remove(&prmd->pd); in omap_prm_domain_init()
723 prm->prmd = prmd; in omap_prm_domain_init()
983 pm_genpd_remove(&prm->prmd->pd); in omap_prm_probe()