162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/pci/snps,dw-pcie-common.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: Synopsys DWC PCIe RP/EP controller 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Jingoo Han <jingoohan1@gmail.com> 1162306a36Sopenharmony_ci - Gustavo Pimentel <gustavo.pimentel@synopsys.com> 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_cidescription: 1462306a36Sopenharmony_ci Generic Synopsys DesignWare PCIe Root Port and Endpoint controller 1562306a36Sopenharmony_ci properties. 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ciselect: false 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ciproperties: 2062306a36Sopenharmony_ci reg: 2162306a36Sopenharmony_ci description: 2262306a36Sopenharmony_ci DWC PCIe CSR space is normally accessed over the dedicated Data Bus 2362306a36Sopenharmony_ci Interface - DBI. In accordance with the reference manual the register 2462306a36Sopenharmony_ci configuration space belongs to the Configuration-Dependent Module (CDM) 2562306a36Sopenharmony_ci and is split up into several sub-parts Standard PCIe configuration 2662306a36Sopenharmony_ci space, Port Logic Registers (PL), Shadow Config-space Registers, 2762306a36Sopenharmony_ci iATU/eDMA registers. The particular sub-space is selected by the 2862306a36Sopenharmony_ci CDM/ELBI (dbi_cs) and CS2 (dbi_cs2) signals (selector bits). Such 2962306a36Sopenharmony_ci configuration provides a flexible interface for the system engineers to 3062306a36Sopenharmony_ci either map the particular space at a desired MMIO address or just leave 3162306a36Sopenharmony_ci them in a contiguous memory space if pure Native or AXI Bridge DBI access 3262306a36Sopenharmony_ci is selected. Note the PCIe CFG-space, PL and Shadow registers are 3362306a36Sopenharmony_ci specific for each activated function, while the rest of the sub-spaces 3462306a36Sopenharmony_ci are common for all of them (if there are more than one). 3562306a36Sopenharmony_ci minItems: 2 3662306a36Sopenharmony_ci maxItems: 6 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci reg-names: 3962306a36Sopenharmony_ci minItems: 2 4062306a36Sopenharmony_ci maxItems: 6 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci interrupts: 4362306a36Sopenharmony_ci description: 4462306a36Sopenharmony_ci There are two main sub-blocks which are normally capable of 4562306a36Sopenharmony_ci generating interrupts. It's System Information Interface and MSI 4662306a36Sopenharmony_ci interface. While the former one has some common for the Host and 4762306a36Sopenharmony_ci Endpoint controllers IRQ-signals, the later interface is obviously 4862306a36Sopenharmony_ci Root Complex specific since it's responsible for the incoming MSI 4962306a36Sopenharmony_ci messages signalling. The System Information IRQ signals are mainly 5062306a36Sopenharmony_ci responsible for reporting the generic PCIe hierarchy and Root 5162306a36Sopenharmony_ci Complex events like VPD IO request, general AER, PME, Hot-plug, link 5262306a36Sopenharmony_ci bandwidth change, link equalization request, INTx asserted/deasserted 5362306a36Sopenharmony_ci Message detection, embedded DMA Tx/Rx/Error. 5462306a36Sopenharmony_ci minItems: 1 5562306a36Sopenharmony_ci maxItems: 26 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci interrupt-names: 5862306a36Sopenharmony_ci minItems: 1 5962306a36Sopenharmony_ci maxItems: 26 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci clocks: 6262306a36Sopenharmony_ci description: 6362306a36Sopenharmony_ci DWC PCIe reference manual explicitly defines a set of the clocks required 6462306a36Sopenharmony_ci to get the controller working correctly. In general all of them can 6562306a36Sopenharmony_ci be divided into two groups':' application and core clocks. Note the 6662306a36Sopenharmony_ci platforms may have some of the clock sources unspecified in case if the 6762306a36Sopenharmony_ci corresponding domains are fed up from a common clock source. 6862306a36Sopenharmony_ci minItems: 1 6962306a36Sopenharmony_ci maxItems: 7 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ci clock-names: 7262306a36Sopenharmony_ci minItems: 1 7362306a36Sopenharmony_ci maxItems: 7 7462306a36Sopenharmony_ci items: 7562306a36Sopenharmony_ci oneOf: 7662306a36Sopenharmony_ci - description: 7762306a36Sopenharmony_ci Data Bus Interface (DBI) clock. Clock signal for the AXI-bus 7862306a36Sopenharmony_ci interface of the Configuration-Dependent Module, which is 7962306a36Sopenharmony_ci basically the set of the controller CSRs. 8062306a36Sopenharmony_ci const: dbi 8162306a36Sopenharmony_ci - description: 8262306a36Sopenharmony_ci Application AXI-bus Master interface clock. Basically this is 8362306a36Sopenharmony_ci a clock for the controller DMA interface (PCI-to-CPU). 8462306a36Sopenharmony_ci const: mstr 8562306a36Sopenharmony_ci - description: 8662306a36Sopenharmony_ci Application AXI-bus Slave interface clock. This is a clock for 8762306a36Sopenharmony_ci the CPU-to-PCI memory IO interface. 8862306a36Sopenharmony_ci const: slv 8962306a36Sopenharmony_ci - description: 9062306a36Sopenharmony_ci Controller Core-PCS PIPE interface clock. It's normally 9162306a36Sopenharmony_ci supplied by an external PCS-PHY. 9262306a36Sopenharmony_ci const: pipe 9362306a36Sopenharmony_ci - description: 9462306a36Sopenharmony_ci Controller Primary clock. It's assumed that all controller input 9562306a36Sopenharmony_ci signals (except resets) are synchronous to this clock. 9662306a36Sopenharmony_ci const: core 9762306a36Sopenharmony_ci - description: 9862306a36Sopenharmony_ci Auxiliary clock for the controller PMC domain. The controller 9962306a36Sopenharmony_ci partitioning implies having some parts to operate with this 10062306a36Sopenharmony_ci clock in some power management states. 10162306a36Sopenharmony_ci const: aux 10262306a36Sopenharmony_ci - description: 10362306a36Sopenharmony_ci Generic reference clock. In case if there are several 10462306a36Sopenharmony_ci interfaces fed up with a common clock source it's advisable to 10562306a36Sopenharmony_ci define it with this name (for instance pipe, core and aux can 10662306a36Sopenharmony_ci be connected to a single source of the periodic signal). 10762306a36Sopenharmony_ci const: ref 10862306a36Sopenharmony_ci - description: 10962306a36Sopenharmony_ci Clock for the PHY registers interface. Originally this is 11062306a36Sopenharmony_ci a PHY-viewport-based interface, but some platform may have 11162306a36Sopenharmony_ci specifically designed one. 11262306a36Sopenharmony_ci const: phy_reg 11362306a36Sopenharmony_ci - description: 11462306a36Sopenharmony_ci Vendor-specific clock names. Consider using the generic names 11562306a36Sopenharmony_ci above for new bindings. 11662306a36Sopenharmony_ci oneOf: 11762306a36Sopenharmony_ci - description: See native 'dbi' clock for details 11862306a36Sopenharmony_ci enum: [ pcie, pcie_apb_sys, aclk_dbi ] 11962306a36Sopenharmony_ci - description: See native 'mstr/slv' clock for details 12062306a36Sopenharmony_ci enum: [ pcie_bus, pcie_inbound_axi, pcie_aclk, aclk_mst, aclk_slv ] 12162306a36Sopenharmony_ci - description: See native 'pipe' clock for details 12262306a36Sopenharmony_ci enum: [ pcie_phy, pcie_phy_ref, link ] 12362306a36Sopenharmony_ci - description: See native 'aux' clock for details 12462306a36Sopenharmony_ci enum: [ pcie_aux ] 12562306a36Sopenharmony_ci - description: See native 'ref' clock for details. 12662306a36Sopenharmony_ci enum: [ gio ] 12762306a36Sopenharmony_ci - description: See nativs 'phy_reg' clock for details 12862306a36Sopenharmony_ci enum: [ pcie_apb_phy, pclk ] 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ci resets: 13162306a36Sopenharmony_ci description: 13262306a36Sopenharmony_ci DWC PCIe reference manual explicitly defines a set of the reset 13362306a36Sopenharmony_ci signals required to be de-asserted to properly activate the controller 13462306a36Sopenharmony_ci sub-parts. All of these signals can be divided into two sub-groups':' 13562306a36Sopenharmony_ci application and core resets with respect to the main sub-domains they 13662306a36Sopenharmony_ci are supposed to reset. Note the platforms may have some of these signals 13762306a36Sopenharmony_ci unspecified in case if they are automatically handled or aggregated into 13862306a36Sopenharmony_ci a comprehensive control module. 13962306a36Sopenharmony_ci minItems: 1 14062306a36Sopenharmony_ci maxItems: 10 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_ci reset-names: 14362306a36Sopenharmony_ci minItems: 1 14462306a36Sopenharmony_ci maxItems: 10 14562306a36Sopenharmony_ci items: 14662306a36Sopenharmony_ci oneOf: 14762306a36Sopenharmony_ci - description: Data Bus Interface (DBI) domain reset 14862306a36Sopenharmony_ci const: dbi 14962306a36Sopenharmony_ci - description: AXI-bus Master interface reset 15062306a36Sopenharmony_ci const: mstr 15162306a36Sopenharmony_ci - description: AXI-bus Slave interface reset 15262306a36Sopenharmony_ci const: slv 15362306a36Sopenharmony_ci - description: Application-dependent interface reset 15462306a36Sopenharmony_ci const: app 15562306a36Sopenharmony_ci - description: Controller Non-sticky CSR flags reset 15662306a36Sopenharmony_ci const: non-sticky 15762306a36Sopenharmony_ci - description: Controller sticky CSR flags reset 15862306a36Sopenharmony_ci const: sticky 15962306a36Sopenharmony_ci - description: PIPE-interface (Core-PCS) logic reset 16062306a36Sopenharmony_ci const: pipe 16162306a36Sopenharmony_ci - description: 16262306a36Sopenharmony_ci Controller primary reset (resets everything except PMC module) 16362306a36Sopenharmony_ci const: core 16462306a36Sopenharmony_ci - description: PCS/PHY block reset 16562306a36Sopenharmony_ci const: phy 16662306a36Sopenharmony_ci - description: PMC hot reset signal 16762306a36Sopenharmony_ci const: hot 16862306a36Sopenharmony_ci - description: Cold reset signal 16962306a36Sopenharmony_ci const: pwr 17062306a36Sopenharmony_ci - description: 17162306a36Sopenharmony_ci Vendor-specific reset names. Consider using the generic names 17262306a36Sopenharmony_ci above for new bindings. 17362306a36Sopenharmony_ci oneOf: 17462306a36Sopenharmony_ci - description: See native 'app' reset for details 17562306a36Sopenharmony_ci enum: [ apps, gio, apb ] 17662306a36Sopenharmony_ci - description: See native 'phy' reset for details 17762306a36Sopenharmony_ci enum: [ pciephy, link ] 17862306a36Sopenharmony_ci - description: See native 'pwr' reset for details 17962306a36Sopenharmony_ci enum: [ turnoff ] 18062306a36Sopenharmony_ci 18162306a36Sopenharmony_ci phys: 18262306a36Sopenharmony_ci description: 18362306a36Sopenharmony_ci There can be up to the number of possible lanes PHYs specified placed in 18462306a36Sopenharmony_ci the phandle array in the line-based order. Obviously each the specified 18562306a36Sopenharmony_ci PHYs are supposed to be able to work in the PCIe mode with a speed 18662306a36Sopenharmony_ci implied by the DWC PCIe controller they are attached to. 18762306a36Sopenharmony_ci minItems: 1 18862306a36Sopenharmony_ci maxItems: 16 18962306a36Sopenharmony_ci 19062306a36Sopenharmony_ci phy-names: 19162306a36Sopenharmony_ci minItems: 1 19262306a36Sopenharmony_ci maxItems: 16 19362306a36Sopenharmony_ci oneOf: 19462306a36Sopenharmony_ci - description: Generic PHY names 19562306a36Sopenharmony_ci items: 19662306a36Sopenharmony_ci pattern: '^pcie[0-9]+$' 19762306a36Sopenharmony_ci - description: 19862306a36Sopenharmony_ci Vendor-specific PHY names. Consider using the generic 19962306a36Sopenharmony_ci names above for new bindings. 20062306a36Sopenharmony_ci items: 20162306a36Sopenharmony_ci oneOf: 20262306a36Sopenharmony_ci - pattern: '^pcie(-?phy[0-9]*)?$' 20362306a36Sopenharmony_ci - pattern: '^p2u-[0-7]$' 20462306a36Sopenharmony_ci 20562306a36Sopenharmony_ci reset-gpio: 20662306a36Sopenharmony_ci deprecated: true 20762306a36Sopenharmony_ci description: 20862306a36Sopenharmony_ci Reference to the GPIO-controlled PERST# signal. It is used to reset all 20962306a36Sopenharmony_ci the peripheral devices available on the PCIe bus. 21062306a36Sopenharmony_ci maxItems: 1 21162306a36Sopenharmony_ci 21262306a36Sopenharmony_ci reset-gpios: 21362306a36Sopenharmony_ci description: 21462306a36Sopenharmony_ci Reference to the GPIO-controlled PERST# signal. It is used to reset all 21562306a36Sopenharmony_ci the peripheral devices available on the PCIe bus. 21662306a36Sopenharmony_ci maxItems: 1 21762306a36Sopenharmony_ci 21862306a36Sopenharmony_ci max-link-speed: 21962306a36Sopenharmony_ci maximum: 5 22062306a36Sopenharmony_ci 22162306a36Sopenharmony_ci num-lanes: 22262306a36Sopenharmony_ci description: 22362306a36Sopenharmony_ci Number of PCIe link lanes to use. Can be omitted if the already brought 22462306a36Sopenharmony_ci up link is supposed to be preserved. 22562306a36Sopenharmony_ci maximum: 16 22662306a36Sopenharmony_ci 22762306a36Sopenharmony_ci num-ob-windows: 22862306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 22962306a36Sopenharmony_ci deprecated: true 23062306a36Sopenharmony_ci description: 23162306a36Sopenharmony_ci Number of outbound address translation windows. This parameter can be 23262306a36Sopenharmony_ci auto-detected based on the iATU memory writability. So there is no 23362306a36Sopenharmony_ci point in having a dedicated DT-property for it. 23462306a36Sopenharmony_ci maximum: 256 23562306a36Sopenharmony_ci 23662306a36Sopenharmony_ci num-ib-windows: 23762306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 23862306a36Sopenharmony_ci deprecated: true 23962306a36Sopenharmony_ci description: 24062306a36Sopenharmony_ci Number of inbound address translation windows. In the same way as 24162306a36Sopenharmony_ci for the outbound AT windows, this parameter can be auto-detected based 24262306a36Sopenharmony_ci on the iATU memory writability. There is no point having a dedicated 24362306a36Sopenharmony_ci DT-property for it either. 24462306a36Sopenharmony_ci maximum: 256 24562306a36Sopenharmony_ci 24662306a36Sopenharmony_ci num-viewport: 24762306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 24862306a36Sopenharmony_ci deprecated: true 24962306a36Sopenharmony_ci description: 25062306a36Sopenharmony_ci Number of outbound view ports configured in hardware. It's the same as 25162306a36Sopenharmony_ci the number of outbound AT windows. 25262306a36Sopenharmony_ci maximum: 256 25362306a36Sopenharmony_ci 25462306a36Sopenharmony_ci snps,enable-cdm-check: 25562306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/flag 25662306a36Sopenharmony_ci description: 25762306a36Sopenharmony_ci Enable automatic checking of CDM (Configuration Dependent Module) 25862306a36Sopenharmony_ci registers for data corruption. CDM registers include standard PCIe 25962306a36Sopenharmony_ci configuration space registers, Port Logic registers, DMA and iATU 26062306a36Sopenharmony_ci registers. This feature has been available since DWC PCIe v4.80a. 26162306a36Sopenharmony_ci 26262306a36Sopenharmony_ci dma-coherent: true 26362306a36Sopenharmony_ci 26462306a36Sopenharmony_ciadditionalProperties: true 26562306a36Sopenharmony_ci 26662306a36Sopenharmony_ci... 267