|
@@ -17,6 +17,7 @@ enum pci_epc_irq_type {
|
|
|
PCI_EPC_IRQ_UNKNOWN,
|
|
|
PCI_EPC_IRQ_LEGACY,
|
|
|
PCI_EPC_IRQ_MSI,
|
|
|
+ PCI_EPC_IRQ_MSIX,
|
|
|
};
|
|
|
|
|
|
/**
|
|
@@ -30,6 +31,10 @@ enum pci_epc_irq_type {
|
|
|
* capability register
|
|
|
* @get_msi: ops to get the number of MSI interrupts allocated by the RC from
|
|
|
* the MSI capability register
|
|
|
+ * @set_msix: ops to set the requested number of MSI-X interrupts in the
|
|
|
+ * MSI-X capability register
|
|
|
+ * @get_msix: ops to get the number of MSI-X interrupts allocated by the RC
|
|
|
+ * from the MSI-X capability register
|
|
|
* @raise_irq: ops to raise a legacy or MSI interrupt
|
|
|
* @start: ops to start the PCI link
|
|
|
* @stop: ops to stop the PCI link
|
|
@@ -48,6 +53,8 @@ struct pci_epc_ops {
|
|
|
phys_addr_t addr);
|
|
|
int (*set_msi)(struct pci_epc *epc, u8 func_no, u8 interrupts);
|
|
|
int (*get_msi)(struct pci_epc *epc, u8 func_no);
|
|
|
+ int (*set_msix)(struct pci_epc *epc, u8 func_no, u16 interrupts);
|
|
|
+ int (*get_msix)(struct pci_epc *epc, u8 func_no);
|
|
|
int (*raise_irq)(struct pci_epc *epc, u8 func_no,
|
|
|
enum pci_epc_irq_type type, u8 interrupt_num);
|
|
|
int (*start)(struct pci_epc *epc);
|
|
@@ -144,6 +151,8 @@ void pci_epc_unmap_addr(struct pci_epc *epc, u8 func_no,
|
|
|
phys_addr_t phys_addr);
|
|
|
int pci_epc_set_msi(struct pci_epc *epc, u8 func_no, u8 interrupts);
|
|
|
int pci_epc_get_msi(struct pci_epc *epc, u8 func_no);
|
|
|
+int pci_epc_set_msix(struct pci_epc *epc, u8 func_no, u16 interrupts);
|
|
|
+int pci_epc_get_msix(struct pci_epc *epc, u8 func_no);
|
|
|
int pci_epc_raise_irq(struct pci_epc *epc, u8 func_no,
|
|
|
enum pci_epc_irq_type type, u8 interrupt_num);
|
|
|
int pci_epc_start(struct pci_epc *epc);
|