Lines Matching refs:ppc4xx_hsta_msi
20 struct ppc4xx_hsta_msi { struct
36 static struct ppc4xx_hsta_msi ppc4xx_hsta_msi; argument
52 irq = msi_bitmap_alloc_hwirqs(&ppc4xx_hsta_msi.bmp, 1); in hsta_setup_msi_irqs()
59 hwirq = ppc4xx_hsta_msi.irq_map[irq]; in hsta_setup_msi_irqs()
69 addr = ppc4xx_hsta_msi.address + irq*0x10; in hsta_setup_msi_irqs()
83 msi_bitmap_free_hwirqs(&ppc4xx_hsta_msi.bmp, irq, 1); in hsta_setup_msi_irqs()
97 for (irq = 0; irq < ppc4xx_hsta_msi.irq_count; irq++) in hsta_find_hwirq_offset()
98 if (ppc4xx_hsta_msi.irq_map[irq] == hwirq) in hsta_find_hwirq_offset()
115 msi_bitmap_free_hwirqs(&ppc4xx_hsta_msi.bmp, irq, 1); in hsta_teardown_msi_irqs()
141 ppc4xx_hsta_msi.dev = dev; in hsta_msi_probe()
142 ppc4xx_hsta_msi.address = mem->start; in hsta_msi_probe()
143 ppc4xx_hsta_msi.data = ioremap(mem->start, resource_size(mem)); in hsta_msi_probe()
144 ppc4xx_hsta_msi.irq_count = irq_count; in hsta_msi_probe()
145 if (!ppc4xx_hsta_msi.data) { in hsta_msi_probe()
150 ret = msi_bitmap_alloc(&ppc4xx_hsta_msi.bmp, irq_count, dev->of_node); in hsta_msi_probe()
154 ppc4xx_hsta_msi.irq_map = kmalloc_array(irq_count, sizeof(int), in hsta_msi_probe()
156 if (!ppc4xx_hsta_msi.irq_map) { in hsta_msi_probe()
163 ppc4xx_hsta_msi.irq_map[irq] = in hsta_msi_probe()
165 if (!ppc4xx_hsta_msi.irq_map[irq]) { in hsta_msi_probe()
179 kfree(ppc4xx_hsta_msi.irq_map); in hsta_msi_probe()
182 msi_bitmap_free(&ppc4xx_hsta_msi.bmp); in hsta_msi_probe()
185 iounmap(ppc4xx_hsta_msi.data); in hsta_msi_probe()