Lines Matching refs:priv

88 static void pdc_write(struct pdc_intc_priv *priv, unsigned int reg_offs,  in pdc_write()  argument
91 iowrite32(data, priv->pdc_base + reg_offs); in pdc_write()
94 static unsigned int pdc_read(struct pdc_intc_priv *priv, in pdc_read() argument
97 return ioread32(priv->pdc_base + reg_offs); in pdc_read()
132 struct pdc_intc_priv *priv = irqd_to_priv(data); in perip_irq_mask() local
134 raw_spin_lock(&priv->lock); in perip_irq_mask()
135 priv->irq_route &= ~data->mask; in perip_irq_mask()
136 pdc_write(priv, PDC_IRQ_ROUTE, priv->irq_route); in perip_irq_mask()
137 raw_spin_unlock(&priv->lock); in perip_irq_mask()
142 struct pdc_intc_priv *priv = irqd_to_priv(data); in perip_irq_unmask() local
144 raw_spin_lock(&priv->lock); in perip_irq_unmask()
145 priv->irq_route |= data->mask; in perip_irq_unmask()
146 pdc_write(priv, PDC_IRQ_ROUTE, priv->irq_route); in perip_irq_unmask()
147 raw_spin_unlock(&priv->lock); in perip_irq_unmask()
152 struct pdc_intc_priv *priv = irqd_to_priv(data); in syswake_irq_set_type() local
178 raw_spin_lock(&priv->lock); in syswake_irq_set_type()
182 soc_sys_wake = pdc_read(priv, soc_sys_wake_regoff); in syswake_irq_set_type()
185 pdc_write(priv, soc_sys_wake_regoff, soc_sys_wake); in syswake_irq_set_type()
190 raw_spin_unlock(&priv->lock); in syswake_irq_set_type()
198 struct pdc_intc_priv *priv = irqd_to_priv(data); in pdc_irq_set_wake() local
203 raw_spin_lock(&priv->lock); in pdc_irq_set_wake()
205 priv->irq_route |= mask; in pdc_irq_set_wake()
207 priv->irq_route &= ~mask; in pdc_irq_set_wake()
208 pdc_write(priv, PDC_IRQ_ROUTE, priv->irq_route); in pdc_irq_set_wake()
209 raw_spin_unlock(&priv->lock); in pdc_irq_set_wake()
213 dst_irq = priv->syswake_irq; in pdc_irq_set_wake()
215 dst_irq = priv->perip_irqs[hw]; in pdc_irq_set_wake()
223 struct pdc_intc_priv *priv; in pdc_intc_perip_isr() local
226 priv = (struct pdc_intc_priv *)irq_desc_get_handler_data(desc); in pdc_intc_perip_isr()
229 for (i = 0; i < priv->nr_perips; ++i) in pdc_intc_perip_isr()
230 if (irq == priv->perip_irqs[i]) in pdc_intc_perip_isr()
238 irq_no = irq_linear_revmap(priv->domain, i); in pdc_intc_perip_isr()
244 struct pdc_intc_priv *priv; in pdc_intc_syswake_isr() local
248 priv = (struct pdc_intc_priv *)irq_desc_get_handler_data(desc); in pdc_intc_syswake_isr()
250 status = pdc_read(priv, PDC_IRQ_STATUS) & in pdc_intc_syswake_isr()
251 pdc_read(priv, PDC_IRQ_ENABLE); in pdc_intc_syswake_isr()
252 status &= (1 << priv->nr_syswakes) - 1; in pdc_intc_syswake_isr()
259 irq_no = irq_linear_revmap(priv->domain, in pdc_intc_syswake_isr()
265 static void pdc_intc_setup(struct pdc_intc_priv *priv) in pdc_intc_setup() argument
275 pdc_write(priv, PDC_IRQ_ENABLE, 0); in pdc_intc_setup()
281 priv->irq_route = ((PDC_IRQ_ROUTE_EXT_EN_SYS0 << priv->nr_syswakes) - in pdc_intc_setup()
283 pdc_write(priv, PDC_IRQ_ROUTE, priv->irq_route); in pdc_intc_setup()
286 for (i = 0; i < priv->nr_syswakes; ++i) { in pdc_intc_setup()
291 pdc_write(priv, soc_sys_wake_regoff, soc_sys_wake); in pdc_intc_setup()
297 struct pdc_intc_priv *priv; in pdc_intc_probe() local
316 priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); in pdc_intc_probe()
317 if (!priv) { in pdc_intc_probe()
321 raw_spin_lock_init(&priv->lock); in pdc_intc_probe()
322 platform_set_drvdata(pdev, priv); in pdc_intc_probe()
325 priv->pdc_base = devm_ioremap(&pdev->dev, res_regs->start, in pdc_intc_probe()
327 if (!priv->pdc_base) in pdc_intc_probe()
340 priv->nr_perips = val; in pdc_intc_probe()
352 priv->nr_syswakes = val; in pdc_intc_probe()
355 priv->perip_irqs = devm_kzalloc(&pdev->dev, 4 * priv->nr_perips, in pdc_intc_probe()
357 if (!priv->perip_irqs) { in pdc_intc_probe()
361 for (i = 0; i < priv->nr_perips; ++i) { in pdc_intc_probe()
367 priv->perip_irqs[i] = irq; in pdc_intc_probe()
381 priv->syswake_irq = irq; in pdc_intc_probe()
384 priv->domain = irq_domain_add_linear(node, 16, &irq_generic_chip_ops, in pdc_intc_probe()
385 priv); in pdc_intc_probe()
386 if (unlikely(!priv->domain)) { in pdc_intc_probe()
396 ret = irq_alloc_domain_generic_chips(priv->domain, 8, 2, "pdc", in pdc_intc_probe()
404 gc = irq_get_domain_generic_chip(priv->domain, 0); in pdc_intc_probe()
405 gc->unused = ~(BIT(priv->nr_perips) - 1); in pdc_intc_probe()
406 gc->reg_base = priv->pdc_base; in pdc_intc_probe()
418 gc = irq_get_domain_generic_chip(priv->domain, 8); in pdc_intc_probe()
419 gc->unused = ~(BIT(priv->nr_syswakes) - 1); in pdc_intc_probe()
420 gc->reg_base = priv->pdc_base; in pdc_intc_probe()
449 pdc_intc_setup(priv); in pdc_intc_probe()
452 for (i = 0; i < priv->nr_perips; ++i) { in pdc_intc_probe()
453 irq = priv->perip_irqs[i]; in pdc_intc_probe()
454 irq_set_handler_data(irq, priv); in pdc_intc_probe()
459 irq_set_handler_data(priv->syswake_irq, priv); in pdc_intc_probe()
460 irq_set_chained_handler(priv->syswake_irq, pdc_intc_syswake_isr); in pdc_intc_probe()
464 priv->nr_perips, in pdc_intc_probe()
465 priv->nr_syswakes); in pdc_intc_probe()
469 irq_domain_remove(priv->domain); in pdc_intc_probe()
475 struct pdc_intc_priv *priv = platform_get_drvdata(pdev); in pdc_intc_remove() local
477 irq_domain_remove(priv->domain); in pdc_intc_remove()