xref: /openbmc/linux/arch/powerpc/include/asm/msi_bitmap.h (revision 7e302869e0c5261aba779e059cddcd2fbf7aedbe)
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