12#ifndef ZEPHYR_INCLUDE_DRIVERS_PCIE_CONTROLLERS_H_ 
   13#define ZEPHYR_INCLUDE_DRIVERS_PCIE_CONTROLLERS_H_ 
   79                                            bool mem, 
bool mem64, 
size_t bar_size,
 
   98                                                     bool mem, 
bool mem64, 
size_t align,
 
  121                                             bool mem, 
bool mem64, 
uintptr_t bar_bus_addr,
 
  124#ifdef CONFIG_PCIE_MSI 
  125typedef uint8_t (*pcie_ctrl_msi_device_setup_t)(
const struct device *dev, 
unsigned int priority,
 
  180#ifdef CONFIG_PCIE_MSI 
  181        pcie_ctrl_msi_device_setup_t msi_device_setup;
 
  243                                             bool mem, 
bool mem64, 
size_t bar_size,
 
  249        return api->
region_allocate(dev, bdf, mem, mem64, bar_size, bar_bus_addr);
 
  268                                                      bool mem, 
bool mem64, 
size_t align,
 
  296                                          bool mem, 
bool mem64, 
uintptr_t bar_bus_addr,
 
  303                *bar_addr = bar_bus_addr;
 
  310#ifdef CONFIG_PCIE_MSI 
  311static inline uint8_t pcie_ctrl_msi_device_setup(
const struct device *dev, 
unsigned int priority,
 
  317        return api->msi_device_setup(dev, priority, vectors, n_vector);
 
  324#ifdef CONFIG_PCIE_MSI 
  325        const struct device *msi_parent;
 
  349#define PCIE_RANGE_FORMAT(node_id, idx)                                                 \ 
  351        .flags = DT_RANGES_CHILD_BUS_FLAGS_BY_IDX(node_id, idx),                        \ 
  352        .pcie_bus_addr = DT_RANGES_CHILD_BUS_ADDRESS_BY_IDX(node_id, idx),              \ 
  353        .host_map_addr = DT_RANGES_PARENT_BUS_ADDRESS_BY_IDX(node_id, idx),             \ 
  354        .map_length = DT_RANGES_LENGTH_BY_IDX(node_id, idx),                            \ 
uint32_t pcie_bdf_t
A unique PCI(e) endpoint (bus, device, function).
Definition: pcie.h:29
 
static uint32_t pcie_ctrl_conf_read(const struct device *dev, pcie_bdf_t bdf, unsigned int reg)
Read a 32-bit word from an endpoint's configuration space.
Definition: controller.h:196
 
static bool pcie_ctrl_region_allocate(const struct device *dev, pcie_bdf_t bdf, bool mem, bool mem64, size_t bar_size, uintptr_t *bar_bus_addr)
Allocate a memory region subset for an endpoint Base Address Register.
Definition: controller.h:242
 
void(* pcie_ctrl_conf_write_t)(const struct device *dev, pcie_bdf_t bdf, unsigned int reg, uint32_t data)
Function called to write a 32-bit word to an endpoint's configuration space.
Definition: controller.h:58
 
static void pcie_ctrl_conf_write(const struct device *dev, pcie_bdf_t bdf, unsigned int reg, uint32_t data)
Write a 32-bit word to an endpoint's configuration space.
Definition: controller.h:216
 
bool(* pcie_ctrl_region_allocate_t)(const struct device *dev, pcie_bdf_t bdf, bool mem, bool mem64, size_t bar_size, uintptr_t *bar_bus_addr)
Function called to allocate a memory region subset for an endpoint Base Address Register.
Definition: controller.h:78
 
void pcie_generic_ctrl_conf_write(mm_reg_t cfg_addr, pcie_bdf_t bdf, unsigned int reg, uint32_t data)
Write a 32-bit word to a Memory-Mapped endpoint's configuration space.
 
void pcie_generic_ctrl_enumerate(const struct device *dev, pcie_bdf_t bdf_start)
Start PCIe Endpoints enumeration.
 
uint32_t pcie_generic_ctrl_conf_read(mm_reg_t cfg_addr, pcie_bdf_t bdf, unsigned int reg)
Read a 32-bit word from a Memory-Mapped endpoint's configuration space.
 
bool(* pcie_ctrl_region_get_allocate_base_t)(const struct device *dev, pcie_bdf_t bdf, bool mem, bool mem64, size_t align, uintptr_t *bar_base_addr)
Function called to get the current allocation base of a memory region subset for an endpoint Base Add...
Definition: controller.h:97
 
bool(* pcie_ctrl_region_translate_t)(const struct device *dev, pcie_bdf_t bdf, bool mem, bool mem64, uintptr_t bar_bus_addr, uintptr_t *bar_addr)
Function called to translate an endpoint Base Address Register bus-centric address into Physical addr...
Definition: controller.h:120
 
uint32_t(* pcie_ctrl_conf_read_t)(const struct device *dev, pcie_bdf_t bdf, unsigned int reg)
Function called to read a 32-bit word from an endpoint's configuration space.
Definition: controller.h:44
 
static bool pcie_ctrl_region_translate(const struct device *dev, pcie_bdf_t bdf, bool mem, bool mem64, uintptr_t bar_bus_addr, uintptr_t *bar_addr)
Translate an endpoint Base Address Register bus-centric address into Physical address.
Definition: controller.h:295
 
static bool pcie_ctrl_region_get_allocate_base(const struct device *dev, pcie_bdf_t bdf, bool mem, bool mem64, size_t align, uintptr_t *bar_base_addr)
Function called to get the current allocation base of a memory region subset for an endpoint Base Add...
Definition: controller.h:267
 
#define bool
Definition: stdbool.h:13
 
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
 
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
 
__UINTPTR_TYPE__ uintptr_t
Definition: stdint.h:105
 
Runtime device structure (in ROM) per driver instance.
Definition: device.h:378
 
const void * api
Definition: device.h:384
 
Structure describing a device that supports the PCI Express Controller API.
Definition: controller.h:323
 
uintptr_t cfg_addr
Definition: controller.h:328
 
uintptr_t pcie_bus_addr
Definition: controller.h:338
 
size_t ranges_count
Definition: controller.h:332
 
uint32_t flags
Definition: controller.h:336
 
struct pcie_ctrl_config::@140 ranges[]
 
uintptr_t host_map_addr
Definition: controller.h:340
 
size_t cfg_size
Definition: controller.h:330
 
size_t map_length
Definition: controller.h:342
 
Structure providing callbacks to be implemented for devices that supports the PCI Express Controller ...
Definition: controller.h:174
 
pcie_ctrl_conf_read_t conf_read
Definition: controller.h:175
 
pcie_ctrl_region_allocate_t region_allocate
Definition: controller.h:177
 
pcie_ctrl_conf_write_t conf_write
Definition: controller.h:176
 
pcie_ctrl_region_get_allocate_base_t region_get_allocate_base
Definition: controller.h:178
 
pcie_ctrl_region_translate_t region_translate
Definition: controller.h:179
 
uintptr_t mm_reg_t
Definition: sys_io.h:20
 
static fdata_t data[2]
Definition: test_fifo_contexts.c:15