ppc4xx_hsta_msi
msi_bitmap_free_hwirqs(&ppc4xx_hsta_msi.bmp, irq, 1);
ppc4xx_hsta_msi.dev = dev;
ppc4xx_hsta_msi.address = mem->start;
ppc4xx_hsta_msi.data = ioremap(mem->start, resource_size(mem));
ppc4xx_hsta_msi.irq_count = irq_count;
if (!ppc4xx_hsta_msi.data) {
ret = msi_bitmap_alloc(&ppc4xx_hsta_msi.bmp, irq_count, dev->of_node);
ppc4xx_hsta_msi.irq_map = kmalloc_objs(int, irq_count);
if (!ppc4xx_hsta_msi.irq_map) {
ppc4xx_hsta_msi.irq_map[irq] =
if (!ppc4xx_hsta_msi.irq_map[irq]) {
kfree(ppc4xx_hsta_msi.irq_map);
msi_bitmap_free(&ppc4xx_hsta_msi.bmp);
iounmap(ppc4xx_hsta_msi.data);
static struct ppc4xx_hsta_msi ppc4xx_hsta_msi;
irq = msi_bitmap_alloc_hwirqs(&ppc4xx_hsta_msi.bmp, 1);
hwirq = ppc4xx_hsta_msi.irq_map[irq];
addr = ppc4xx_hsta_msi.address + irq*0x10;
msi_bitmap_free_hwirqs(&ppc4xx_hsta_msi.bmp, irq, 1);
for (irq = 0; irq < ppc4xx_hsta_msi.irq_count; irq++)
if (ppc4xx_hsta_msi.irq_map[irq] == hwirq)