Lines Matching refs:pcie
28 struct tango_pcie *pcie = irq_desc_get_handler_data(desc); in tango_msi_isr() local
32 spin_lock(&pcie->used_msi_lock); in tango_msi_isr()
34 while ((pos = find_next_bit(pcie->used_msi, MSI_MAX, pos)) < MSI_MAX) { in tango_msi_isr()
36 status = readl_relaxed(pcie->base + SMP8759_STATUS + base / 8); in tango_msi_isr()
38 virq = irq_find_mapping(pcie->dom, base + idx); in tango_msi_isr()
44 spin_unlock(&pcie->used_msi_lock); in tango_msi_isr()
50 struct tango_pcie *pcie = d->chip_data; in tango_ack() local
54 writel_relaxed(bit, pcie->base + SMP8759_STATUS + offset); in tango_ack()
60 struct tango_pcie *pcie = d->chip_data; in update_msi_enable() local
65 spin_lock_irqsave(&pcie->used_msi_lock, flags); in update_msi_enable()
66 val = readl_relaxed(pcie->base + SMP8759_ENABLE + offset); in update_msi_enable()
68 writel_relaxed(val, pcie->base + SMP8759_ENABLE + offset); in update_msi_enable()
69 spin_unlock_irqrestore(&pcie->used_msi_lock, flags); in update_msi_enable()
90 struct tango_pcie *pcie = d->chip_data; in tango_compose_msi_msg() local
91 msg->address_lo = lower_32_bits(pcie->msi_doorbell); in tango_compose_msi_msg()
92 msg->address_hi = upper_32_bits(pcie->msi_doorbell); in tango_compose_msi_msg()
138 struct tango_pcie *pcie = dom->host_data; in tango_irq_domain_alloc() local
142 spin_lock_irqsave(&pcie->used_msi_lock, flags); in tango_irq_domain_alloc()
143 pos = find_first_zero_bit(pcie->used_msi, MSI_MAX); in tango_irq_domain_alloc()
145 spin_unlock_irqrestore(&pcie->used_msi_lock, flags); in tango_irq_domain_alloc()
148 __set_bit(pos, pcie->used_msi); in tango_irq_domain_alloc()
149 spin_unlock_irqrestore(&pcie->used_msi_lock, flags); in tango_irq_domain_alloc()
151 pcie, handle_edge_irq, NULL, NULL); in tango_irq_domain_alloc()
161 struct tango_pcie *pcie = d->chip_data; in tango_irq_domain_free() local
163 spin_lock_irqsave(&pcie->used_msi_lock, flags); in tango_irq_domain_free()
164 __clear_bit(d->hwirq, pcie->used_msi); in tango_irq_domain_free()
165 spin_unlock_irqrestore(&pcie->used_msi_lock, flags); in tango_irq_domain_free()
177 struct tango_pcie *pcie = dev_get_drvdata(cfg->parent); in smp8759_config_read() local
189 writel_relaxed(1, pcie->base + SMP8759_MUX); in smp8759_config_read()
191 writel_relaxed(0, pcie->base + SMP8759_MUX); in smp8759_config_read()
200 struct tango_pcie *pcie = dev_get_drvdata(cfg->parent); in smp8759_config_write() local
203 writel_relaxed(1, pcie->base + SMP8759_MUX); in smp8759_config_write()
205 writel_relaxed(0, pcie->base + SMP8759_MUX); in smp8759_config_write()
219 static int tango_pcie_link_up(struct tango_pcie *pcie) in tango_pcie_link_up() argument
221 void __iomem *test_out = pcie->base + SMP8759_TEST_OUT; in tango_pcie_link_up()
238 struct tango_pcie *pcie; in tango_pcie_probe() local
249 pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL); in tango_pcie_probe()
250 if (!pcie) in tango_pcie_probe()
254 pcie->base = devm_ioremap_resource(dev, res); in tango_pcie_probe()
255 if (IS_ERR(pcie->base)) in tango_pcie_probe()
256 return PTR_ERR(pcie->base); in tango_pcie_probe()
258 platform_set_drvdata(pdev, pcie); in tango_pcie_probe()
260 if (!tango_pcie_link_up(pcie)) in tango_pcie_probe()
270 pcie->msi_doorbell = range.pci_addr + res->start + SMP8759_DOORBELL; in tango_pcie_probe()
273 writel_relaxed(0, pcie->base + SMP8759_ENABLE + offset); in tango_pcie_probe()
281 irq_dom = irq_domain_create_linear(fwnode, MSI_MAX, &dom_ops, pcie); in tango_pcie_probe()
294 pcie->dom = irq_dom; in tango_pcie_probe()
295 spin_lock_init(&pcie->used_msi_lock); in tango_pcie_probe()
296 irq_set_chained_handler_and_data(virq, tango_msi_isr, pcie); in tango_pcie_probe()