Lines Matching refs:pmu

50 	struct pmu_data *pmu = rcdev_to_pmu(rc);  in pmu_reset_reset()  local
54 spin_lock_irqsave(&pmu->lock, flags); in pmu_reset_reset()
55 val = readl_relaxed(pmu->pmc_base + PMC_SW_RST); in pmu_reset_reset()
56 writel_relaxed(val & ~BIT(id), pmu->pmc_base + PMC_SW_RST); in pmu_reset_reset()
57 writel_relaxed(val | BIT(id), pmu->pmc_base + PMC_SW_RST); in pmu_reset_reset()
58 spin_unlock_irqrestore(&pmu->lock, flags); in pmu_reset_reset()
65 struct pmu_data *pmu = rcdev_to_pmu(rc); in pmu_reset_assert() local
69 spin_lock_irqsave(&pmu->lock, flags); in pmu_reset_assert()
70 val &= readl_relaxed(pmu->pmc_base + PMC_SW_RST); in pmu_reset_assert()
71 writel_relaxed(val, pmu->pmc_base + PMC_SW_RST); in pmu_reset_assert()
72 spin_unlock_irqrestore(&pmu->lock, flags); in pmu_reset_assert()
79 struct pmu_data *pmu = rcdev_to_pmu(rc); in pmu_reset_deassert() local
83 spin_lock_irqsave(&pmu->lock, flags); in pmu_reset_deassert()
84 val |= readl_relaxed(pmu->pmc_base + PMC_SW_RST); in pmu_reset_deassert()
85 writel_relaxed(val, pmu->pmc_base + PMC_SW_RST); in pmu_reset_deassert()
86 spin_unlock_irqrestore(&pmu->lock, flags); in pmu_reset_deassert()
103 static void __init pmu_reset_init(struct pmu_data *pmu) in pmu_reset_init() argument
107 pmu->reset = pmu_reset; in pmu_reset_init()
108 pmu->reset.of_node = pmu->of_node; in pmu_reset_init()
110 ret = reset_controller_register(&pmu->reset); in pmu_reset_init()
115 static void __init pmu_reset_init(struct pmu_data *pmu) in pmu_reset_init() argument
121 struct pmu_data *pmu; member
146 struct pmu_data *pmu = pmu_dom->pmu; in pmu_domain_power_off() local
149 void __iomem *pmu_base = pmu->pmu_base; in pmu_domain_power_off()
150 void __iomem *pmc_base = pmu->pmc_base; in pmu_domain_power_off()
152 spin_lock_irqsave(&pmu->lock, flags); in pmu_domain_power_off()
172 spin_unlock_irqrestore(&pmu->lock, flags); in pmu_domain_power_off()
180 struct pmu_data *pmu = pmu_dom->pmu; in pmu_domain_power_on() local
183 void __iomem *pmu_base = pmu->pmu_base; in pmu_domain_power_on()
184 void __iomem *pmc_base = pmu->pmc_base; in pmu_domain_power_on()
186 spin_lock_irqsave(&pmu->lock, flags); in pmu_domain_power_on()
206 spin_unlock_irqrestore(&pmu->lock, flags); in pmu_domain_power_on()
214 unsigned int val = readl_relaxed(domain->pmu->pmu_base + PMU_PWR); in __pmu_domain_register()
228 struct pmu_data *pmu = irq_desc_get_handler_data(desc); in pmu_irq_handler() local
229 struct irq_chip_generic *gc = pmu->irq_gc; in pmu_irq_handler()
230 struct irq_domain *domain = pmu->irq_domain; in pmu_irq_handler()
266 static int __init dove_init_pmu_irq(struct pmu_data *pmu, int irq) in dove_init_pmu_irq() argument
274 writel(0, pmu->pmc_base + PMC_IRQ_MASK); in dove_init_pmu_irq()
275 writel(0, pmu->pmc_base + PMC_IRQ_CAUSE); in dove_init_pmu_irq()
277 domain = irq_domain_add_linear(pmu->of_node, NR_PMU_IRQS, in dove_init_pmu_irq()
295 gc->reg_base = pmu->pmc_base; in dove_init_pmu_irq()
300 pmu->irq_domain = domain; in dove_init_pmu_irq()
301 pmu->irq_gc = gc; in dove_init_pmu_irq()
303 irq_set_handler_data(irq, pmu); in dove_init_pmu_irq()
312 struct pmu_data *pmu; in dove_init_pmu_legacy() local
315 pmu = kzalloc(sizeof(*pmu), GFP_KERNEL); in dove_init_pmu_legacy()
316 if (!pmu) in dove_init_pmu_legacy()
319 spin_lock_init(&pmu->lock); in dove_init_pmu_legacy()
320 pmu->pmc_base = initdata->pmc_base; in dove_init_pmu_legacy()
321 pmu->pmu_base = initdata->pmu_base; in dove_init_pmu_legacy()
323 pmu_reset_init(pmu); in dove_init_pmu_legacy()
330 domain->pmu = pmu; in dove_init_pmu_legacy()
340 ret = dove_init_pmu_irq(pmu, initdata->irq); in dove_init_pmu_legacy()
344 if (pmu->irq_domain) in dove_init_pmu_legacy()
345 irq_domain_associate_many(pmu->irq_domain, in dove_init_pmu_legacy()
376 struct pmu_data *pmu; in dove_init_pmu() local
390 pmu = kzalloc(sizeof(*pmu), GFP_KERNEL); in dove_init_pmu()
391 if (!pmu) in dove_init_pmu()
394 spin_lock_init(&pmu->lock); in dove_init_pmu()
395 pmu->of_node = np_pmu; in dove_init_pmu()
396 pmu->pmc_base = of_iomap(pmu->of_node, 0); in dove_init_pmu()
397 pmu->pmu_base = of_iomap(pmu->of_node, 1); in dove_init_pmu()
398 if (!pmu->pmc_base || !pmu->pmu_base) { in dove_init_pmu()
400 iounmap(pmu->pmu_base); in dove_init_pmu()
401 iounmap(pmu->pmc_base); in dove_init_pmu()
402 kfree(pmu); in dove_init_pmu()
406 pmu_reset_init(pmu); in dove_init_pmu()
416 domain->pmu = pmu; in dove_init_pmu()
436 if (args.np == pmu->of_node) in dove_init_pmu()
445 parent_irq = irq_of_parse_and_map(pmu->of_node, 0); in dove_init_pmu()
449 ret = dove_init_pmu_irq(pmu, parent_irq); in dove_init_pmu()