]>
Commit | Line | Data |
---|---|---|
736baef4 JR |
1 | /* |
2 | * Copyright (C) 2012 Advanced Micro Devices, Inc. | |
63ce3ae8 | 3 | * Author: Joerg Roedel <[email protected]> |
736baef4 JR |
4 | * |
5 | * This program is free software; you can redistribute it and/or modify it | |
6 | * under the terms of the GNU General Public License version 2 as published | |
7 | * by the Free Software Foundation. | |
8 | * | |
9 | * This program is distributed in the hope that it will be useful, | |
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | * GNU General Public License for more details. | |
13 | * | |
14 | * You should have received a copy of the GNU General Public License | |
15 | * along with this program; if not, write to the Free Software | |
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
17 | * | |
18 | * This header file contains stuff that is shared between different interrupt | |
19 | * remapping drivers but with no need to be visible outside of the IOMMU layer. | |
20 | */ | |
21 | ||
8a8f422d SS |
22 | #ifndef __IRQ_REMAPPING_H |
23 | #define __IRQ_REMAPPING_H | |
736baef4 JR |
24 | |
25 | #ifdef CONFIG_IRQ_REMAP | |
26 | ||
4c1bad6a | 27 | struct irq_data; |
5e2b930b | 28 | struct msi_msg; |
947045a2 JL |
29 | struct irq_domain; |
30 | struct irq_alloc_info; | |
0c3f173a | 31 | |
03bbcb2e | 32 | extern int irq_remap_broken; |
736baef4 JR |
33 | extern int disable_sourceid_checking; |
34 | extern int no_x2apic_optout; | |
078e1ee2 | 35 | extern int irq_remapping_enabled; |
736baef4 | 36 | |
3d9b98f4 FW |
37 | extern int disable_irq_post; |
38 | ||
736baef4 | 39 | struct irq_remap_ops { |
6f281923 FW |
40 | /* The supported capabilities */ |
41 | int capability; | |
42 | ||
736baef4 | 43 | /* Initializes hardware and makes it ready for remapping interrupts */ |
95a02e97 | 44 | int (*prepare)(void); |
736baef4 JR |
45 | |
46 | /* Enables the remapping hardware */ | |
95a02e97 | 47 | int (*enable)(void); |
4f3d8b67 JR |
48 | |
49 | /* Disables the remapping hardware */ | |
95a02e97 | 50 | void (*disable)(void); |
4f3d8b67 JR |
51 | |
52 | /* Reenables the remapping hardware */ | |
95a02e97 | 53 | int (*reenable)(int); |
4f3d8b67 JR |
54 | |
55 | /* Enable fault handling */ | |
56 | int (*enable_faulting)(void); | |
0c3f173a | 57 | |
947045a2 JL |
58 | /* Get the irqdomain associated the IOMMU device */ |
59 | struct irq_domain *(*get_ir_irq_domain)(struct irq_alloc_info *); | |
60 | ||
61 | /* Get the MSI irqdomain associated with the IOMMU device */ | |
62 | struct irq_domain *(*get_irq_domain)(struct irq_alloc_info *); | |
736baef4 JR |
63 | }; |
64 | ||
65 | extern struct irq_remap_ops intel_irq_remap_ops; | |
6b474b82 | 66 | extern struct irq_remap_ops amd_iommu_irq_ops; |
736baef4 | 67 | |
05152a04 JR |
68 | #else /* CONFIG_IRQ_REMAP */ |
69 | ||
70 | #define irq_remapping_enabled 0 | |
03bbcb2e | 71 | #define irq_remap_broken 0 |
3d9b98f4 | 72 | #define disable_irq_post 1 |
05152a04 | 73 | |
736baef4 JR |
74 | #endif /* CONFIG_IRQ_REMAP */ |
75 | ||
8a8f422d | 76 | #endif /* __IRQ_REMAPPING_H */ |