1 /* SPDX-License-Identifier: GPL-2.0 */
4 #include <asm/hw_irq.h>
5 #include <asm/irqdomain.h>
7 typedef struct irq_alloc_info msi_alloc_info_t;
9 int pci_msi_prepare(struct irq_domain *domain, struct device *dev, int nvec,
10 msi_alloc_info_t *arg);
12 /* Structs and defines for the X86 specific MSI message format */
14 typedef struct x86_msi_data {
17 dest_mode_logical : 1,
23 } __attribute__ ((packed)) arch_msi_msg_data_t;
24 #define arch_msi_msg_data x86_msi_data
26 typedef struct x86_msi_addr_lo {
30 dest_mode_logical : 1,
38 u32 dmar_reserved_0 : 2,
40 dmar_subhandle_valid : 1,
43 dmar_base_address : 12;
46 } __attribute__ ((packed)) arch_msi_msg_addr_lo_t;
47 #define arch_msi_msg_addr_lo x86_msi_addr_lo
49 #define X86_MSI_BASE_ADDRESS_LOW (0xfee00000 >> 20)
51 typedef struct x86_msi_addr_hi {
54 } __attribute__ ((packed)) arch_msi_msg_addr_hi_t;
55 #define arch_msi_msg_addr_hi x86_msi_addr_hi
57 #define X86_MSI_BASE_ADDRESS_HIGH (0)
60 u32 x86_msi_msg_get_destid(struct msi_msg *msg, bool extid);
62 #endif /* _ASM_X86_MSI_H */