1*7e302869SMichael Ellerman #ifndef _POWERPC_SYSDEV_MSI_BITMAP_H 2*7e302869SMichael Ellerman #define _POWERPC_SYSDEV_MSI_BITMAP_H 3*7e302869SMichael Ellerman 4*7e302869SMichael Ellerman /* 5*7e302869SMichael Ellerman * Copyright 2008, Michael Ellerman, IBM Corporation. 6*7e302869SMichael Ellerman * 7*7e302869SMichael Ellerman * This program is free software; you can redistribute it and/or 8*7e302869SMichael Ellerman * modify it under the terms of the GNU General Public License 9*7e302869SMichael Ellerman * as published by the Free Software Foundation; version 2 of the 10*7e302869SMichael Ellerman * License. 11*7e302869SMichael Ellerman * 12*7e302869SMichael Ellerman */ 13*7e302869SMichael Ellerman 14*7e302869SMichael Ellerman #include <linux/of.h> 15*7e302869SMichael Ellerman #include <asm/irq.h> 16*7e302869SMichael Ellerman 17*7e302869SMichael Ellerman struct msi_bitmap { 18*7e302869SMichael Ellerman struct device_node *of_node; 19*7e302869SMichael Ellerman unsigned long *bitmap; 20*7e302869SMichael Ellerman spinlock_t lock; 21*7e302869SMichael Ellerman unsigned int irq_count; 22*7e302869SMichael Ellerman }; 23*7e302869SMichael Ellerman 24*7e302869SMichael Ellerman int msi_bitmap_alloc_hwirqs(struct msi_bitmap *bmp, int num); 25*7e302869SMichael Ellerman void msi_bitmap_free_hwirqs(struct msi_bitmap *bmp, unsigned int offset, 26*7e302869SMichael Ellerman unsigned int num); 27*7e302869SMichael Ellerman void msi_bitmap_reserve_hwirq(struct msi_bitmap *bmp, unsigned int hwirq); 28*7e302869SMichael Ellerman 29*7e302869SMichael Ellerman int msi_bitmap_reserve_dt_hwirqs(struct msi_bitmap *bmp); 30*7e302869SMichael Ellerman 31*7e302869SMichael Ellerman int msi_bitmap_alloc(struct msi_bitmap *bmp, unsigned int irq_count, 32*7e302869SMichael Ellerman struct device_node *of_node); 33*7e302869SMichael Ellerman void msi_bitmap_free(struct msi_bitmap *bmp); 34*7e302869SMichael Ellerman 35*7e302869SMichael Ellerman #endif /* _POWERPC_SYSDEV_MSI_BITMAP_H */ 36