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()
224 struct pdc_intc_priv *priv; in pdc_intc_perip_isr() local
227 priv = (struct pdc_intc_priv *)irq_desc_get_handler_data(desc); in pdc_intc_perip_isr()
230 for (i = 0; i < priv->nr_perips; ++i) in pdc_intc_perip_isr()
231 if (irq == priv->perip_irqs[i]) in pdc_intc_perip_isr()
239 irq_no = irq_linear_revmap(priv->domain, i); in pdc_intc_perip_isr()
245 struct pdc_intc_priv *priv; in pdc_intc_syswake_isr() local
249 priv = (struct pdc_intc_priv *)irq_desc_get_handler_data(desc); in pdc_intc_syswake_isr()
251 status = pdc_read(priv, PDC_IRQ_STATUS) & in pdc_intc_syswake_isr()
252 pdc_read(priv, PDC_IRQ_ENABLE); in pdc_intc_syswake_isr()
253 status &= (1 << priv->nr_syswakes) - 1; in pdc_intc_syswake_isr()
260 irq_no = irq_linear_revmap(priv->domain, in pdc_intc_syswake_isr()
266 static void pdc_intc_setup(struct pdc_intc_priv *priv) in pdc_intc_setup() argument
276 pdc_write(priv, PDC_IRQ_ENABLE, 0); in pdc_intc_setup()
282 priv->irq_route = ((PDC_IRQ_ROUTE_EXT_EN_SYS0 << priv->nr_syswakes) - in pdc_intc_setup()
284 pdc_write(priv, PDC_IRQ_ROUTE, priv->irq_route); in pdc_intc_setup()
287 for (i = 0; i < priv->nr_syswakes; ++i) { in pdc_intc_setup()
292 pdc_write(priv, soc_sys_wake_regoff, soc_sys_wake); in pdc_intc_setup()
298 struct pdc_intc_priv *priv; in pdc_intc_probe() local
317 priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); in pdc_intc_probe()
318 if (!priv) { in pdc_intc_probe()
322 raw_spin_lock_init(&priv->lock); in pdc_intc_probe()
323 platform_set_drvdata(pdev, priv); in pdc_intc_probe()
326 priv->pdc_base = devm_ioremap(&pdev->dev, res_regs->start, in pdc_intc_probe()
328 if (!priv->pdc_base) in pdc_intc_probe()
341 priv->nr_perips = val; in pdc_intc_probe()
353 priv->nr_syswakes = val; in pdc_intc_probe()
356 priv->perip_irqs = devm_kzalloc(&pdev->dev, 4 * priv->nr_perips, in pdc_intc_probe()
358 if (!priv->perip_irqs) { in pdc_intc_probe()
362 for (i = 0; i < priv->nr_perips; ++i) { in pdc_intc_probe()
368 priv->perip_irqs[i] = irq; in pdc_intc_probe()
382 priv->syswake_irq = irq; in pdc_intc_probe()
385 priv->domain = irq_domain_add_linear(node, 16, &irq_generic_chip_ops, in pdc_intc_probe()
386 priv); in pdc_intc_probe()
387 if (unlikely(!priv->domain)) { in pdc_intc_probe()
397 ret = irq_alloc_domain_generic_chips(priv->domain, 8, 2, "pdc", in pdc_intc_probe()
405 gc = irq_get_domain_generic_chip(priv->domain, 0); in pdc_intc_probe()
406 gc->unused = ~(BIT(priv->nr_perips) - 1); in pdc_intc_probe()
407 gc->reg_base = priv->pdc_base; in pdc_intc_probe()
419 gc = irq_get_domain_generic_chip(priv->domain, 8); in pdc_intc_probe()
420 gc->unused = ~(BIT(priv->nr_syswakes) - 1); in pdc_intc_probe()
421 gc->reg_base = priv->pdc_base; in pdc_intc_probe()
450 pdc_intc_setup(priv); in pdc_intc_probe()
453 for (i = 0; i < priv->nr_perips; ++i) { in pdc_intc_probe()
454 irq = priv->perip_irqs[i]; in pdc_intc_probe()
456 priv); in pdc_intc_probe()
460 irq_set_chained_handler_and_data(priv->syswake_irq, in pdc_intc_probe()
461 pdc_intc_syswake_isr, priv); in pdc_intc_probe()
465 priv->nr_perips, in pdc_intc_probe()
466 priv->nr_syswakes); in pdc_intc_probe()
470 irq_domain_remove(priv->domain); in pdc_intc_probe()
476 struct pdc_intc_priv *priv = platform_get_drvdata(pdev); in pdc_intc_remove() local
478 irq_domain_remove(priv->domain); in pdc_intc_remove()