123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- #pragma once
- #include <common/glib.h>
- struct msi_msg_t
- {
- uint32_t address_lo;
- uint32_t address_hi;
- uint32_t data;
- uint32_t vector_control;
- };
- struct pci_msi_desc_t
- {
- union
- {
- uint32_t msi_mask;
- uint32_t msix_ctrl;
- };
- struct
- {
- uint8_t is_msix : 1;
- uint8_t can_mask : 1;
- uint8_t is_64 : 1;
- } msi_attribute;
- };
- struct pci_msi_cap_t
- {
- uint8_t cap_id;
- uint8_t next_off;
- uint16_t msg_ctrl;
- uint32_t msg_addr_lo;
- uint32_t msg_addr_hi;
- uint16_t msg_data;
- uint16_t Rsvd;
- uint32_t mask;
- uint32_t pending;
- };
- struct pci_msix_cap_t
- {
- uint8_t cap_id;
- uint8_t next_off;
- uint16_t msg_ctrl;
- uint32_t dword1;
-
- uint32_t dword2;
-
- };
- struct msi_desc_t
- {
- uint16_t irq_num;
- uint16_t processor;
- uint16_t edge_trigger;
- uint16_t assert;
- struct pci_device_structure_header_t *pci_dev;
- struct msi_msg_t msg;
- uint16_t msi_index;
- struct pci_msi_desc_t pci;
- };
- int pci_enable_msi(struct msi_desc_t *msi_desc);
- int pci_disable_msi(void *header);
- int pci_start_msi(void *header);
|