Lines Matching full:rp1
50 static void msix_cfg_set(struct rp1_dev *rp1, unsigned int hwirq, u32 value) in msix_cfg_set() argument
52 iowrite32(value, rp1->bar1 + RP1_PCIE_APBS_BASE + REG_SET + MSIX_CFG(hwirq)); in msix_cfg_set()
55 static void msix_cfg_clr(struct rp1_dev *rp1, unsigned int hwirq, u32 value) in msix_cfg_clr() argument
57 iowrite32(value, rp1->bar1 + RP1_PCIE_APBS_BASE + REG_CLR + MSIX_CFG(hwirq)); in msix_cfg_clr()
62 struct rp1_dev *rp1 = irqd->domain->host_data; in rp1_mask_irq() local
63 struct irq_data *pcie_irqd = rp1->pcie_irqds[irqd->hwirq]; in rp1_mask_irq()
70 struct rp1_dev *rp1 = irqd->domain->host_data; in rp1_unmask_irq() local
71 struct irq_data *pcie_irqd = rp1->pcie_irqds[irqd->hwirq]; in rp1_unmask_irq()
78 struct rp1_dev *rp1 = irqd->domain->host_data; in rp1_irq_set_type() local
83 dev_dbg(&rp1->pdev->dev, "MSIX IACK EN for IRQ %u\n", hwirq); in rp1_irq_set_type()
84 msix_cfg_set(rp1, hwirq, MSIX_CFG_IACK_EN); in rp1_irq_set_type()
85 rp1->level_triggered_irq[hwirq] = true; in rp1_irq_set_type()
88 msix_cfg_clr(rp1, hwirq, MSIX_CFG_IACK_EN); in rp1_irq_set_type()
89 rp1->level_triggered_irq[hwirq] = false; in rp1_irq_set_type()
108 struct rp1_dev *rp1 = irq_desc_get_handler_data(desc); in rp1_chained_handle_irq() local
114 virq = irq_find_mapping(rp1->domain, hwirq); in rp1_chained_handle_irq()
116 if (rp1->level_triggered_irq[hwirq]) in rp1_chained_handle_irq()
117 msix_cfg_set(rp1, hwirq, MSIX_CFG_IACK); in rp1_chained_handle_irq()
126 struct rp1_dev *rp1 = d->host_data; in rp1_irq_xlate() local
137 pcie_irq = pci_irq_vector(rp1->pdev, hwirq); in rp1_irq_xlate()
139 rp1->pcie_irqds[hwirq] = pcie_irqd; in rp1_irq_xlate()
148 struct rp1_dev *rp1 = d->host_data; in rp1_irq_activate() local
150 msix_cfg_set(rp1, (unsigned int)irqd->hwirq, MSIX_CFG_ENABLE); in rp1_irq_activate()
157 struct rp1_dev *rp1 = d->host_data; in rp1_irq_deactivate() local
159 msix_cfg_clr(rp1, (unsigned int)irqd->hwirq, MSIX_CFG_ENABLE); in rp1_irq_deactivate()
170 struct rp1_dev *rp1 = pci_get_drvdata(pdev); in rp1_unregister_interrupts() local
173 if (rp1->domain) { in rp1_unregister_interrupts()
175 irq = irq_find_mapping(rp1->domain, i); in rp1_unregister_interrupts()
179 irq_domain_remove(rp1->domain); in rp1_unregister_interrupts()
192 struct rp1_dev *rp1; in rp1_probe() local
212 rp1 = devm_kzalloc(&pdev->dev, sizeof(*rp1), GFP_KERNEL); in rp1_probe()
213 if (!rp1) { in rp1_probe()
218 rp1->pdev = pdev; in rp1_probe()
234 rp1->bar1 = pcim_iomap(pdev, 1, 0); in rp1_probe()
235 if (!rp1->bar1) { in rp1_probe()
255 pci_set_drvdata(pdev, rp1); in rp1_probe()
256 rp1->domain = irq_domain_add_linear(rp1_node, RP1_INT_END, in rp1_probe()
257 &rp1_domain_ops, rp1); in rp1_probe()
258 if (!rp1->domain) { in rp1_probe()
265 unsigned int irq = irq_create_mapping(rp1->domain, i); in rp1_probe()
276 rp1_chained_handle_irq, rp1); in rp1_probe()
280 err = of_overlay_fdt_apply(dtbo_start, dtbo_size, &rp1->ovcs_id, in rp1_probe()
295 of_overlay_remove(&rp1->ovcs_id); in rp1_probe()
307 struct rp1_dev *rp1 = pci_get_drvdata(pdev); in rp1_remove() local
311 of_overlay_remove(&rp1->ovcs_id); in rp1_remove()
332 MODULE_DESCRIPTION("RaspberryPi RP1 misc device");