7#ifndef ZEPHYR_INCLUDE_DRIVERS_PCIE_MSI_H_ 
    8#define ZEPHYR_INCLUDE_DRIVERS_PCIE_MSI_H_ 
   27#ifdef CONFIG_PCIE_CONTROLLER 
   28struct msi_vector_generic {
 
   32        unsigned int priority;
 
   35typedef struct msi_vector_generic arch_msi_vector_t;
 
   37#define PCI_DEVID(bus, dev, fn) ((((bus) & 0xff) << 8) | (((dev) & 0x1f) << 3) | ((fn) & 0x07)) 
   38#define PCI_BDF_TO_DEVID(bdf)   PCI_DEVID(PCIE_BDF_TO_BUS(bdf), \ 
   39                                          PCIE_BDF_TO_DEV(bdf), \ 
   40                                          PCIE_BDF_TO_FUNC(bdf)) 
   54#ifdef CONFIG_PCIE_MSI_X 
 
   62#ifdef CONFIG_PCIE_MSI_MULTI_VECTOR 
   75                                         unsigned int priority,
 
   92                                    void (*routine)(
const void *parameter),
 
   93                                    const void *parameter,
 
  151#define PCIE_MSI_MCR            0U 
  153#define PCIE_MSI_MCR_EN         0x00010000U   
  154#define PCIE_MSI_MCR_MMC        0x000E0000U   
  155#define PCIE_MSI_MCR_MMC_SHIFT  17 
  156#define PCIE_MSI_MCR_MME        0x00700000U   
  157#define PCIE_MSI_MCR_MME_SHIFT  20 
  158#define PCIE_MSI_MCR_64         0x00800000U   
  165#define PCIE_MSI_MAP0           1U 
  166#define PCIE_MSI_MAP1_64        2U 
  167#define PCIE_MSI_MDR_32         2U 
  168#define PCIE_MSI_MDR_64         3U 
  175#define PCIE_MSIX_MCR                   0U 
  177#define PCIE_MSIX_MCR_EN                0x80000000U  
  178#define PCIE_MSIX_MCR_FMASK             0x40000000U  
  179#define PCIE_MSIX_MCR_TSIZE             0x07FF0000U  
  180#define PCIE_MSIX_MCR_TSIZE_SHIFT       16 
  181#define PCIE_MSIR_TABLE_ENTRY_SIZE      16 
  183#define PCIE_MSIX_TR                    1U 
  184#define PCIE_MSIX_TR_BIR                0x00000007U  
  185#define PCIE_MSIX_TR_OFFSET             0xFFFFFFF8U  
  187#define PCIE_MSIX_PBA                   2U 
  188#define PCIE_MSIX_PBA_BIR               0x00000007U  
  189#define PCIE_MSIX_PBA_OFFSET            0xFFFFFFF8U  
  191#define PCIE_VTBL_MA                    0U  
  192#define PCIE_VTBL_MUA                   4U  
  193#define PCIE_VTBL_MD                    8U  
  194#define PCIE_VTBL_VCTRL                 12U  
uint32_t pcie_bdf_t
A unique PCI(e) endpoint (bus, device, function).
Definition pcie.h:43
uint32_t pcie_msi_map(unsigned int irq, msi_vector_t *vector, uint8_t n_vector)
Compute the target address for an MSI posted write.
bool pcie_msi_enable(pcie_bdf_t bdf, msi_vector_t *vectors, uint8_t n_vector, unsigned int irq)
Configure the given PCI endpoint to generate MSIs.
bool pcie_is_msi(pcie_bdf_t bdf)
Check if the given PCI endpoint supports MSI/MSI-X.
uint16_t pcie_msi_mdr(unsigned int irq, msi_vector_t *vector)
Compute the data for an MSI posted write.
flags
Definition parser.h:97
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
pcie_bdf_t bdf
Definition msi.h:52
arch_msi_vector_t arch
Definition msi.h:53
uint32_t msg_addr
Definition msi.h:45
uint32_t msg_up_addr
Definition msi.h:46
uint32_t vector_ctrl
Definition msi.h:48
uint32_t msg_data
Definition msi.h:47