 926ff9ad76
			
		
	
	
	926ff9ad76
	
	
	
		
			
			To support MSI irq domains we want a generic data structure for allocation, but we need the option to provide an architecture specific version of it. So instead of playing #ifdef games in linux/msi.h we add a generic header file and let architectures decide whether to include it or to provide their own implementation and provide the required typedef. I know that typedefs are not really nice, but in this case there are no forward declarations required and it's the simplest solution. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Arnd Bergmann <arnd@arndb.de> Cc: Jiang Liu <jiang.liu@linux.intel.com> Cc: Tony Luck <tony.luck@intel.com> Cc: linux-arm-kernel@lists.infradead.org Cc: Bjorn Helgaas <bhelgaas@google.com> Cc: Grant Likely <grant.likely@linaro.org> Cc: Marc Zyngier <marc.zyngier@arm.com> Cc: Yijing Wang <wangyijing@huawei.com> Cc: Yingjoe Chen <yingjoe.chen@mediatek.com> Cc: Borislav Petkov <bp@alien8.de> Cc: Matthias Brugger <matthias.bgg@gmail.com> Cc: Alexander Gordeev <agordeev@redhat.com>
		
			
				
	
	
		
			32 lines
		
	
	
	
		
			799 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
	
		
			799 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef __ASM_GENERIC_MSI_H
 | |
| #define __ASM_GENERIC_MSI_H
 | |
| 
 | |
| #include <linux/types.h>
 | |
| 
 | |
| #ifndef NUM_MSI_ALLOC_SCRATCHPAD_REGS
 | |
| # define NUM_MSI_ALLOC_SCRATCHPAD_REGS	2
 | |
| #endif
 | |
| 
 | |
| struct msi_desc;
 | |
| 
 | |
| /**
 | |
|  * struct msi_alloc_info - Default structure for MSI interrupt allocation.
 | |
|  * @desc:	Pointer to msi descriptor
 | |
|  * @hwirq:	Associated hw interrupt number in the domain
 | |
|  * @scratchpad:	Storage for implementation specific scratch data
 | |
|  *
 | |
|  * Architectures can provide their own implementation by not including
 | |
|  * asm-generic/msi.h into their arch specific header file.
 | |
|  */
 | |
| typedef struct msi_alloc_info {
 | |
| 	struct msi_desc			*desc;
 | |
| 	irq_hw_number_t			hwirq;
 | |
| 	union {
 | |
| 		unsigned long		ul;
 | |
| 		void			*ptr;
 | |
| 	} scratchpad[NUM_MSI_ALLOC_SCRATCHPAD_REGS];
 | |
| } msi_alloc_info_t;
 | |
| 
 | |
| #define GENERIC_MSI_DOMAIN_OPS		1
 | |
| 
 | |
| #endif
 |