pcie: add initial controller support
This adds : - Generic PCIe Controller layer implementing the current PCIe API - Generic PCIe Controller in ECAM mode driver The Generic PCIe Controller layer provides: - Configuration space read/write - single bus endpoint enumerations - Endpoint I/O, MEM & MEM64 BARs allocation - Endpoint I/O, MEM & MEM64 BARs get & translation for drivers The Generic PCIe Controller in ECAM mode driver provides: - Raw DT RANGES properties into usable PCIe regions - Configuration space read/write into ECAM config space - PCIe regions allocation & translation The limitations are: - No support for PCIe prefetchable regions - No support for PCIe bus configuration (only bus0 is supported) - No support for multiple controllers (no domain-id in BDF) Support has been designed to initially support Root Complexes with Root Complex Integrated Endpoint, which was designed for Embedded Systems with internal-only PCIe Endpoints on bus 0. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
This commit is contained in:
parent
c714368691
commit
f8f2936dba
6 changed files with 580 additions and 4 deletions
|
@ -243,6 +243,7 @@ extern uint32_t pcie_get_ext_cap(pcie_bdf_t bdf, uint32_t cap_id);
|
|||
|
||||
#define PCIE_CONF_TYPE 3U
|
||||
|
||||
#define PCIE_CONF_MULTIFUNCTION(w) (((w) & 0x00800000U) != 0U)
|
||||
#define PCIE_CONF_TYPE_BRIDGE(w) (((w) & 0x007F0000U) != 0U)
|
||||
|
||||
/*
|
||||
|
@ -262,6 +263,7 @@ extern uint32_t pcie_get_ext_cap(pcie_bdf_t bdf, uint32_t cap_id);
|
|||
#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
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue