#include <kernel.h>
#include <zephyr/types.h>
#include <stdbool.h>
#include <drivers/pcie/pcie.h>
Go to the source code of this file.
◆ PCIE_MSI_MAP0
◆ PCIE_MSI_MAP1_64
#define PCIE_MSI_MAP1_64 2U |
◆ PCIE_MSI_MCR
◆ PCIE_MSI_MCR_64
#define PCIE_MSI_MCR_64 0x00800000U /* 64-bit MSI */ |
◆ PCIE_MSI_MCR_EN
#define PCIE_MSI_MCR_EN 0x00010000U /* enable MSI */ |
◆ PCIE_MSI_MCR_MMC
#define PCIE_MSI_MCR_MMC 0x000E0000U /* Multi Messages Capable mask */ |
◆ PCIE_MSI_MCR_MMC_SHIFT
#define PCIE_MSI_MCR_MMC_SHIFT 17 |
◆ PCIE_MSI_MCR_MME
#define PCIE_MSI_MCR_MME 0x00700000U /* mask of # of enabled IRQs */ |
◆ PCIE_MSI_MCR_MME_SHIFT
#define PCIE_MSI_MCR_MME_SHIFT 20 |
◆ PCIE_MSI_MDR_32
#define PCIE_MSI_MDR_32 2U |
◆ PCIE_MSI_MDR_64
#define PCIE_MSI_MDR_64 3U |
◆ PCIE_MSIR_TABLE_ENTRY_SIZE
#define PCIE_MSIR_TABLE_ENTRY_SIZE 16 |
◆ PCIE_MSIX_MCR
◆ PCIE_MSIX_MCR_EN
#define PCIE_MSIX_MCR_EN 0x80000000U /* Enable MSI-X */ |
◆ PCIE_MSIX_MCR_FMASK
#define PCIE_MSIX_MCR_FMASK 0x40000000U /* Function Mask */ |
◆ PCIE_MSIX_MCR_TSIZE
#define PCIE_MSIX_MCR_TSIZE 0x07FF0000U /* Table size mask */ |
◆ PCIE_MSIX_MCR_TSIZE_SHIFT
#define PCIE_MSIX_MCR_TSIZE_SHIFT 16 |
◆ PCIE_MSIX_PBA
◆ PCIE_MSIX_PBA_BIR
#define PCIE_MSIX_PBA_BIR 0x00000007U /* PBA BIR mask */ |
◆ PCIE_MSIX_PBA_OFFSET
#define PCIE_MSIX_PBA_OFFSET 0xFFFFFFF8U /* Offset mask */ |
◆ PCIE_MSIX_TR
◆ PCIE_MSIX_TR_BIR
#define PCIE_MSIX_TR_BIR 0x00000007U /* Table BIR mask */ |
◆ PCIE_MSIX_TR_OFFSET
#define PCIE_MSIX_TR_OFFSET 0xFFFFFFF8U /* Offset mask */ |
◆ PCIE_VTBL_MA
#define PCIE_VTBL_MA 0U /* Msg Address offset */ |
◆ PCIE_VTBL_MD
#define PCIE_VTBL_MD 8U /* Msg Data offset */ |
◆ PCIE_VTBL_MUA
#define PCIE_VTBL_MUA 4U /* Msg Upper Address offset */ |
◆ PCIE_VTBL_VCTRL
#define PCIE_VTBL_VCTRL 12U /* Vector control offset */ |
◆ msi_vector_t
◆ pcie_msi_enable()
Configure the given PCI endpoint to generate MSIs.
- Parameters
-
bdf | the target PCI endpoint |
vectors | an array of allocated vector(s) |
n_vector | the size of the vector array |
irq | The IRQ we wish to trigger via MSI. |
- Returns
- true if the endpoint supports MSI, false otherwise.
◆ pcie_msi_map()
Compute the target address for an MSI posted write.
This function is exported by the arch, board or SoC code.
- Parameters
-
irq | The IRQ we wish to trigger via MSI. |
vector | The vector for which you want the address (or NULL) |
- Returns
- A (32-bit) value for the MSI MAP register.
◆ pcie_msi_mdr()
Compute the data for an MSI posted write.
This function is exported by the arch, board or SoC code.
- Parameters
-
irq | The IRQ we wish to trigger via MSI. |
vector | The vector for which you want the data (or NULL) |
- Returns
- A (16-bit) value for MSI MDR register.