7#ifndef ZEPHYR_INCLUDE_DRIVERS_PCIE_PCIE_H_
8#define ZEPHYR_INCLUDE_DRIVERS_PCIE_PCIE_H_
98 unsigned int bar_index,
183#define PCIE_CONF_CAPPTR 13U
184#define PCIE_CONF_CAPPTR_FIRST(w) (((w) >> 2) & 0x3FU)
191#define PCIE_CONF_CAP_ID(w) ((w) & 0xFFU)
192#define PCIE_CONF_CAP_NEXT(w) (((w) >> 10) & 0x3FU)
198#define PCIE_CONF_EXT_CAPPTR 64U
205#define PCIE_CONF_EXT_CAP_ID(w) ((w) & 0xFFFFU)
206#define PCIE_CONF_EXT_CAP_VER(w) (((w) >> 16) & 0xFU)
207#define PCIE_CONF_EXT_CAP_NEXT(w) (((w) >> 20) & 0xFFFU)
213#define PCIE_CONF_ID 0U
219#define PCIE_CONF_CMDSTAT 1U
221#define PCIE_CONF_CMDSTAT_IO 0x00000001U
222#define PCIE_CONF_CMDSTAT_MEM 0x00000002U
223#define PCIE_CONF_CMDSTAT_MASTER 0x00000004U
224#define PCIE_CONF_CMDSTAT_CAPS 0x00100000U
231#define PCIE_CONF_CLASSREV 2U
233#define PCIE_CONF_CLASSREV_CLASS(w) (((w) >> 24) & 0xFFU)
234#define PCIE_CONF_CLASSREV_SUBCLASS(w) (((w) >> 16) & 0xFFU)
235#define PCIE_CONF_CLASSREV_PROGIF(w) (((w) >> 8) & 0xFFU)
236#define PCIE_CONF_CLASSREV_REV(w) ((w) & 0xFFU)
244#define PCIE_CONF_TYPE 3U
246#define PCIE_CONF_TYPE_BRIDGE(w) (((w) & 0x007F0000U) != 0U)
254#define PCIE_CONF_BAR0 4U
255#define PCIE_CONF_BAR1 5U
256#define PCIE_CONF_BAR2 6U
257#define PCIE_CONF_BAR3 7U
258#define PCIE_CONF_BAR4 8U
259#define PCIE_CONF_BAR5 9U
261#define PCIE_CONF_BAR_IO(w) (((w) & 0x00000001U) == 0x00000001U)
262#define PCIE_CONF_BAR_MEM(w) (((w) & 0x00000001U) != 0x00000001U)
263#define PCIE_CONF_BAR_64(w) (((w) & 0x00000006U) == 0x00000004U)
264#define PCIE_CONF_BAR_ADDR(w) ((w) & ~0xfUL)
265#define PCIE_CONF_BAR_FLAGS(w) ((w) & 0xfUL)
266#define PCIE_CONF_BAR_NONE 0U
268#define PCIE_CONF_BAR_INVAL 0xFFFFFFF0U
269#define PCIE_CONF_BAR_INVAL64 0xFFFFFFFFFFFFFFF0UL
271#define PCIE_CONF_BAR_INVAL_FLAGS(w) \
272 ((((w) & 0x00000006U) == 0x00000006U) || \
273 (((w) & 0x00000006U) == 0x00000002U))
282#define PCIE_CONF_INTR 15U
284#define PCIE_CONF_INTR_IRQ(w) ((w) & 0xFFU)
285#define PCIE_CONF_INTR_IRQ_NONE 0xFFU
287#define PCIE_MAX_BUS (0xFFFFFFFF & PCIE_BDF_BUS_MASK)
288#define PCIE_MAX_DEV (0xFFFFFFFF & PCIE_BDF_DEV_MASK)
289#define PCIE_MAX_FUNC (0xFFFFFFFF & PCIE_BDF_FUNC_MASK)
ZTEST_BMEM int index[(3)]
Definition: main.c:32
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_set_cmd(pcie_bdf_t bdf, uint32_t bits, bool on)
Set or reset bits in the endpoint command/status register.
bool pcie_probe(pcie_bdf_t bdf, pcie_id_t id)
Probe for the presence of a PCI(e) endpoint.
uint32_t pcie_id_t
A unique PCI(e) identifier (vendor ID, device ID).
Definition: pcie.h:37
bool pcie_get_mbar(pcie_bdf_t bdf, unsigned int bar_index, struct pcie_mbar *mbar)
Get the MBAR at a specific BAR index.
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.
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.
uint32_t pcie_bdf_t
A unique PCI(e) endpoint (bus, device, function).
Definition: pcie.h:27
pcie_bdf_t pcie_bdf_lookup(pcie_id_t id)
Look up the BDF based on PCI(e) vendor & device ID.
unsigned int pcie_alloc_irq(pcie_bdf_t bdf)
Allocate an IRQ for an endpoint.
bool pcie_probe_mbar(pcie_bdf_t bdf, unsigned int index, struct pcie_mbar *mbar)
Probe the nth MMIO address assigned to 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_TYPE__ uint32_t
Definition: stdint.h:60
__UINTPTR_TYPE__ uintptr_t
Definition: stdint.h:75
size_t size
Definition: pcie.h:41
uintptr_t phys_addr
Definition: pcie.h:40
static fdata_t data[2]
Definition: test_fifo_contexts.c:15