Lines Matching refs:pmu

71 	struct jh71xx_pmu *pmu;  member
77 struct jh71xx_pmu *pmu = pmd->pmu; in jh71xx_pmu_get_state() local
82 *is_on = readl(pmu->base + JH71XX_PMU_CURR_POWER_MODE) & mask; in jh71xx_pmu_get_state()
89 struct jh71xx_pmu *pmu = pmd->pmu; in jh71xx_pmu_set_state() local
100 dev_dbg(pmu->dev, "unable to get current state for %s\n", in jh71xx_pmu_set_state()
106 dev_dbg(pmu->dev, "pm domain [%s] is already %sable status.\n", in jh71xx_pmu_set_state()
111 spin_lock_irqsave(&pmu->lock, flags); in jh71xx_pmu_set_state()
133 writel(mask, pmu->base + mode); in jh71xx_pmu_set_state()
143 writel(JH71XX_PMU_SW_ENCOURAGE_ON, pmu->base + JH71XX_PMU_SW_ENCOURAGE); in jh71xx_pmu_set_state()
144 writel(encourage_lo, pmu->base + JH71XX_PMU_SW_ENCOURAGE); in jh71xx_pmu_set_state()
145 writel(encourage_hi, pmu->base + JH71XX_PMU_SW_ENCOURAGE); in jh71xx_pmu_set_state()
147 spin_unlock_irqrestore(&pmu->lock, flags); in jh71xx_pmu_set_state()
151 ret = readl_poll_timeout_atomic(pmu->base + JH71XX_PMU_CURR_POWER_MODE, in jh71xx_pmu_set_state()
155 ret = readl_poll_timeout_atomic(pmu->base + JH71XX_PMU_CURR_POWER_MODE, in jh71xx_pmu_set_state()
161 dev_err(pmu->dev, "%s: failed to power %s\n", in jh71xx_pmu_set_state()
187 static void jh71xx_pmu_int_enable(struct jh71xx_pmu *pmu, u32 mask, bool enable) in jh71xx_pmu_int_enable() argument
192 spin_lock_irqsave(&pmu->lock, flags); in jh71xx_pmu_int_enable()
193 val = readl(pmu->base + JH71XX_PMU_TIMER_INT_MASK); in jh71xx_pmu_int_enable()
200 writel(val, pmu->base + JH71XX_PMU_TIMER_INT_MASK); in jh71xx_pmu_int_enable()
201 spin_unlock_irqrestore(&pmu->lock, flags); in jh71xx_pmu_int_enable()
206 struct jh71xx_pmu *pmu = data; in jh71xx_pmu_interrupt() local
209 val = readl(pmu->base + JH71XX_PMU_INT_STATUS); in jh71xx_pmu_interrupt()
212 dev_dbg(pmu->dev, "sequence done.\n"); in jh71xx_pmu_interrupt()
214 dev_dbg(pmu->dev, "hardware encourage requestion.\n"); in jh71xx_pmu_interrupt()
216 dev_err(pmu->dev, "software encourage fail.\n"); in jh71xx_pmu_interrupt()
218 dev_err(pmu->dev, "hardware encourage fail.\n"); in jh71xx_pmu_interrupt()
220 dev_err(pmu->dev, "p-channel fail event.\n"); in jh71xx_pmu_interrupt()
223 writel(val, pmu->base + JH71XX_PMU_INT_STATUS); in jh71xx_pmu_interrupt()
224 writel(val, pmu->base + JH71XX_PMU_EVENT_STATUS); in jh71xx_pmu_interrupt()
229 static int jh71xx_pmu_init_domain(struct jh71xx_pmu *pmu, int index) in jh71xx_pmu_init_domain() argument
236 pmd = devm_kzalloc(pmu->dev, sizeof(*pmd), GFP_KERNEL); in jh71xx_pmu_init_domain()
240 pmd->domain_info = &pmu->match_data->domain_info[index]; in jh71xx_pmu_init_domain()
241 pmd->pmu = pmu; in jh71xx_pmu_init_domain()
249 dev_warn(pmu->dev, "unable to get current state for %s\n", in jh71xx_pmu_init_domain()
256 pmu->genpd_data.domains[index] = &pmd->genpd; in jh71xx_pmu_init_domain()
266 struct jh71xx_pmu *pmu; in jh71xx_pmu_probe() local
270 pmu = devm_kzalloc(dev, sizeof(*pmu), GFP_KERNEL); in jh71xx_pmu_probe()
271 if (!pmu) in jh71xx_pmu_probe()
274 pmu->base = devm_platform_ioremap_resource(pdev, 0); in jh71xx_pmu_probe()
275 if (IS_ERR(pmu->base)) in jh71xx_pmu_probe()
276 return PTR_ERR(pmu->base); in jh71xx_pmu_probe()
278 pmu->irq = platform_get_irq(pdev, 0); in jh71xx_pmu_probe()
279 if (pmu->irq < 0) in jh71xx_pmu_probe()
280 return pmu->irq; in jh71xx_pmu_probe()
282 ret = devm_request_irq(dev, pmu->irq, jh71xx_pmu_interrupt, in jh71xx_pmu_probe()
283 0, pdev->name, pmu); in jh71xx_pmu_probe()
291 pmu->genpd = devm_kcalloc(dev, match_data->num_domains, in jh71xx_pmu_probe()
294 if (!pmu->genpd) in jh71xx_pmu_probe()
297 pmu->dev = dev; in jh71xx_pmu_probe()
298 pmu->match_data = match_data; in jh71xx_pmu_probe()
299 pmu->genpd_data.domains = pmu->genpd; in jh71xx_pmu_probe()
300 pmu->genpd_data.num_domains = match_data->num_domains; in jh71xx_pmu_probe()
303 ret = jh71xx_pmu_init_domain(pmu, i); in jh71xx_pmu_probe()
310 spin_lock_init(&pmu->lock); in jh71xx_pmu_probe()
311 jh71xx_pmu_int_enable(pmu, JH71XX_PMU_INT_ALL_MASK & ~JH71XX_PMU_INT_PCH_FAIL, true); in jh71xx_pmu_probe()
313 ret = of_genpd_add_provider_onecell(np, &pmu->genpd_data); in jh71xx_pmu_probe()