|  | 
| #define | PCIE_ID_IS_VALID(id) | 
|  | 
| #define | PCIE_DT_ID(node_id) | 
|  | Get the PCIe Vendor and Device ID for a node. 
 | 
|  | 
| #define | PCIE_DT_INST_ID(inst)   PCIE_DT_ID(DT_DRV_INST(inst)) | 
|  | Get the PCIe Vendor and Device ID for a node. 
 | 
|  | 
| #define | DEVICE_PCIE_DECLARE(node_id) | 
|  | Declare a PCIe context variable for a DTS node. 
 | 
|  | 
| #define | DEVICE_PCIE_INST_DECLARE(inst)   DEVICE_PCIE_DECLARE(DT_DRV_INST(inst)) | 
|  | Declare a PCIe context variable for a DTS node. 
 | 
|  | 
| #define | DEVICE_PCIE_INIT(node_id,  name)   .name = &Z_DEVICE_PCIE_NAME(node_id) | 
|  | Initialize a named struct member to point at a PCIe context. 
 | 
|  | 
| #define | DEVICE_PCIE_INST_INIT(inst,  name)   	DEVICE_PCIE_INIT(DT_DRV_INST(inst), name) | 
|  | Initialize a named struct member to point at a PCIe context. 
 | 
|  | 
| #define | PCIE_HOST_CONTROLLER(n)   PCIE_BDF(0, 0, n) | 
|  | Get the BDF for a given PCI host controller. 
 | 
|  | 
| #define | PCIE_CONF_CAPPTR   13U	/* capabilities pointer */ | 
|  | 
| #define | PCIE_CONF_CAPPTR_FIRST(w)   (((w) >> 2) & 0x3FU) | 
|  | 
| #define | PCIE_CONF_CAP_ID(w)   ((w) & 0xFFU) | 
|  | 
| #define | PCIE_CONF_CAP_NEXT(w)   (((w) >> 10) & 0x3FU) | 
|  | 
| #define | PCIE_CONF_EXT_CAPPTR   64U | 
|  | 
| #define | PCIE_CONF_EXT_CAP_ID(w)   ((w) & 0xFFFFU) | 
|  | 
| #define | PCIE_CONF_EXT_CAP_VER(w)   (((w) >> 16) & 0xFU) | 
|  | 
| #define | PCIE_CONF_EXT_CAP_NEXT(w)   (((w) >> 20) & 0xFFFU) | 
|  | 
| #define | PCIE_CONF_ID   0U | 
|  | 
| #define | PCIE_CONF_CMDSTAT   1U	/* command/status register */ | 
|  | 
| #define | PCIE_CONF_CMDSTAT_IO   0x00000001U  /* I/O access enable */ | 
|  | 
| #define | PCIE_CONF_CMDSTAT_MEM   0x00000002U  /* mem access enable */ | 
|  | 
| #define | PCIE_CONF_CMDSTAT_MASTER   0x00000004U  /* bus master enable */ | 
|  | 
| #define | PCIE_CONF_CMDSTAT_INTERRUPT   0x00080000U  /* interrupt status */ | 
|  | 
| #define | PCIE_CONF_CMDSTAT_CAPS   0x00100000U  /* capabilities list */ | 
|  | 
| #define | PCIE_CONF_CLASSREV   2U	/* class/revision register */ | 
|  | 
| #define | PCIE_CONF_CLASSREV_CLASS(w)   (((w) >> 24) & 0xFFU) | 
|  | 
| #define | PCIE_CONF_CLASSREV_SUBCLASS(w)   (((w) >> 16) & 0xFFU) | 
|  | 
| #define | PCIE_CONF_CLASSREV_PROGIF(w)   (((w) >> 8) & 0xFFU) | 
|  | 
| #define | PCIE_CONF_CLASSREV_REV(w)   ((w) & 0xFFU) | 
|  | 
| #define | PCIE_CONF_TYPE   3U | 
|  | 
| #define | PCIE_CONF_MULTIFUNCTION(w)   (((w) & 0x00800000U) != 0U) | 
|  | 
| #define | PCIE_CONF_TYPE_BRIDGE(w)   (((w) & 0x007F0000U) != 0U) | 
|  | 
| #define | PCIE_CONF_TYPE_GET(w)   (((w) >> 16) & 0x7F) | 
|  | 
| #define | PCIE_CONF_TYPE_STANDARD   0x0U | 
|  | 
| #define | PCIE_CONF_TYPE_PCI_BRIDGE   0x1U | 
|  | 
| #define | PCIE_CONF_TYPE_CARDBUS_BRIDGE   0x2U | 
|  | 
| #define | PCIE_CONF_BAR0   4U | 
|  | 
| #define | PCIE_CONF_BAR1   5U | 
|  | 
| #define | PCIE_CONF_BAR2   6U | 
|  | 
| #define | PCIE_CONF_BAR3   7U | 
|  | 
| #define | PCIE_CONF_BAR4   8U | 
|  | 
| #define | PCIE_CONF_BAR5   9U | 
|  | 
| #define | PCIE_CONF_BAR_IO(w)   (((w) & 0x00000001U) == 0x00000001U) | 
|  | 
| #define | PCIE_CONF_BAR_MEM(w)   (((w) & 0x00000001U) != 0x00000001U) | 
|  | 
| #define | PCIE_CONF_BAR_64(w)   (((w) & 0x00000006U) == 0x00000004U) | 
|  | 
| #define | PCIE_CONF_BAR_ADDR(w)   ((w) & ~0xfUL) | 
|  | 
| #define | PCIE_CONF_BAR_IO_ADDR(w)   ((w) & ~0x3UL) | 
|  | 
| #define | PCIE_CONF_BAR_FLAGS(w)   ((w) & 0xfUL) | 
|  | 
| #define | PCIE_CONF_BAR_NONE   0U | 
|  | 
| #define | PCIE_CONF_BAR_INVAL   0xFFFFFFF0U | 
|  | 
| #define | PCIE_CONF_BAR_INVAL64   0xFFFFFFFFFFFFFFF0UL | 
|  | 
| #define | PCIE_CONF_BAR_INVAL_FLAGS(w) | 
|  | 
| #define | PCIE_BUS_NUMBER   6U | 
|  | 
| #define | PCIE_BUS_PRIMARY_NUMBER(w)   ((w) & 0xffUL) | 
|  | 
| #define | PCIE_BUS_SECONDARY_NUMBER(w)   (((w) >> 8) & 0xffUL) | 
|  | 
| #define | PCIE_BUS_SUBORDINATE_NUMBER(w)   (((w) >> 16) & 0xffUL) | 
|  | 
| #define | PCIE_SECONDARY_LATENCY_TIMER(w)   (((w) >> 24) & 0xffUL) | 
|  | 
| #define | PCIE_BUS_NUMBER_VAL(prim,  sec,  sub,  lat) | 
|  | 
| #define | PCIE_IO_SEC_STATUS   7U | 
|  | 
| #define | PCIE_IO_BASE(w)   ((w) & 0xffUL) | 
|  | 
| #define | PCIE_IO_LIMIT(w)   (((w) >> 8) & 0xffUL) | 
|  | 
| #define | PCIE_SEC_STATUS(w)   (((w) >> 16) & 0xffffUL) | 
|  | 
| #define | PCIE_IO_SEC_STATUS_VAL(iob,  iol,  sec_status) | 
|  | 
| #define | PCIE_MEM_BASE_LIMIT   8U | 
|  | 
| #define | PCIE_MEM_BASE(w)   ((w) & 0xffffUL) | 
|  | 
| #define | PCIE_MEM_LIMIT(w)   (((w) >> 16) & 0xffffUL) | 
|  | 
| #define | PCIE_MEM_BASE_LIMIT_VAL(memb,  meml) | 
|  | 
| #define | PCIE_PREFETCH_BASE_LIMIT   9U | 
|  | 
| #define | PCIE_PREFETCH_BASE(w)   ((w) & 0xffffUL) | 
|  | 
| #define | PCIE_PREFETCH_LIMIT(w)   (((w) >> 16) & 0xffffUL) | 
|  | 
| #define | PCIE_PREFETCH_BASE_LIMIT_VAL(pmemb,  pmeml) | 
|  | 
| #define | PCIE_PREFETCH_BASE_UPPER   10U | 
|  | 
| #define | PCIE_PREFETCH_LIMIT_UPPER   11U | 
|  | 
| #define | PCIE_IO_BASE_LIMIT_UPPER   12U | 
|  | 
| #define | PCIE_IO_BASE_UPPER(w)   ((w) & 0xffffUL) | 
|  | 
| #define | PCIE_IO_LIMIT_UPPER(w)   (((w) >> 16) & 0xffffUL) | 
|  | 
| #define | PCIE_IO_BASE_LIMIT_UPPER_VAL(iobu,  iolu) | 
|  | 
| #define | PCIE_CONF_INTR   15U | 
|  | 
| #define | PCIE_CONF_INTR_IRQ(w)   ((w) & 0xFFU) | 
|  | 
| #define | PCIE_CONF_INTR_IRQ_NONE   0xFFU  /* no interrupt routed */ | 
|  | 
| #define | PCIE_MAX_BUS   (0xFFFFFFFFU & PCIE_BDF_BUS_MASK) | 
|  | 
| #define | PCIE_MAX_DEV   (0xFFFFFFFFU & PCIE_BDF_DEV_MASK) | 
|  | 
| #define | PCIE_MAX_FUNC   (0xFFFFFFFFU & PCIE_BDF_FUNC_MASK) | 
|  | 
| #define | PCIE_IRQ_CONNECT(bdf_p,  irq_p,  priority_p,  isr_p,  isr_param_p,  flags_p) | 
|  | Initialize an interrupt handler for a PCIe endpoint IRQ. 
 | 
|  | 
|  | 
| uint32_t | pcie_conf_read (pcie_bdf_t bdf, unsigned int reg) | 
|  | Read a 32-bit word from an endpoint's configuration space. 
 | 
|  | 
| void | pcie_conf_write (pcie_bdf_t bdf, unsigned int reg, uint32_t data) | 
|  | Write a 32-bit word to an endpoint's configuration space. 
 | 
|  | 
| int | pcie_scan (const struct pcie_scan_opt *opt) | 
|  | Scan for PCIe devices. 
 | 
|  | 
| bool | pcie_get_mbar (pcie_bdf_t bdf, unsigned int bar_index, struct pcie_bar *mbar) | 
|  | Get the MBAR at a specific BAR index. 
 | 
|  | 
| bool | pcie_probe_mbar (pcie_bdf_t bdf, unsigned int index, struct pcie_bar *mbar) | 
|  | Probe the nth MMIO address assigned to an endpoint. 
 | 
|  | 
| bool | pcie_get_iobar (pcie_bdf_t bdf, unsigned int bar_index, struct pcie_bar *iobar) | 
|  | Get the I/O BAR at a specific BAR index. 
 | 
|  | 
| bool | pcie_probe_iobar (pcie_bdf_t bdf, unsigned int index, struct pcie_bar *iobar) | 
|  | Probe the nth I/O BAR address assigned to an endpoint. 
 | 
|  | 
| void | pcie_set_cmd (pcie_bdf_t bdf, uint32_t bits, bool on) | 
|  | Set or reset bits in the endpoint command/status register. 
 | 
|  | 
| unsigned int | pcie_alloc_irq (pcie_bdf_t bdf) | 
|  | Allocate an IRQ for an endpoint. 
 | 
|  | 
| unsigned int | pcie_get_irq (pcie_bdf_t bdf) | 
|  | Return the IRQ assigned by the firmware/board to an endpoint. 
 | 
|  | 
| void | pcie_irq_enable (pcie_bdf_t bdf, unsigned int irq) | 
|  | Enable the PCI(e) endpoint to generate the specified IRQ. 
 | 
|  | 
| uint32_t | pcie_get_cap (pcie_bdf_t bdf, uint32_t cap_id) | 
|  | Find a PCI(e) capability in an endpoint's configuration space. 
 | 
|  | 
| uint32_t | pcie_get_ext_cap (pcie_bdf_t bdf, uint32_t cap_id) | 
|  | Find an Extended PCI(e) capability in an endpoint's configuration space. 
 | 
|  | 
| bool | pcie_connect_dynamic_irq (pcie_bdf_t bdf, unsigned int irq, unsigned int priority, void(*routine)(const void *parameter), const void *parameter, uint32_t flags) | 
|  | Dynamically connect a PCIe endpoint IRQ to an ISR handler. 
 | 
|  |