18bab661aSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 28bab661aSEmmanuel Vadot%YAML 1.2 38bab661aSEmmanuel Vadot--- 48bab661aSEmmanuel Vadot$id: http://devicetree.org/schemas/pci/snps,dw-pcie-common.yaml# 58bab661aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 68bab661aSEmmanuel Vadot 78bab661aSEmmanuel Vadottitle: Synopsys DWC PCIe RP/EP controller 88bab661aSEmmanuel Vadot 98bab661aSEmmanuel Vadotmaintainers: 108bab661aSEmmanuel Vadot - Jingoo Han <jingoohan1@gmail.com> 118bab661aSEmmanuel Vadot - Gustavo Pimentel <gustavo.pimentel@synopsys.com> 128bab661aSEmmanuel Vadot 138bab661aSEmmanuel Vadotdescription: 148bab661aSEmmanuel Vadot Generic Synopsys DesignWare PCIe Root Port and Endpoint controller 158bab661aSEmmanuel Vadot properties. 168bab661aSEmmanuel Vadot 178bab661aSEmmanuel Vadotselect: false 188bab661aSEmmanuel Vadot 198bab661aSEmmanuel Vadotproperties: 208bab661aSEmmanuel Vadot reg: 218bab661aSEmmanuel Vadot description: 228bab661aSEmmanuel Vadot DWC PCIe CSR space is normally accessed over the dedicated Data Bus 238bab661aSEmmanuel Vadot Interface - DBI. In accordance with the reference manual the register 248bab661aSEmmanuel Vadot configuration space belongs to the Configuration-Dependent Module (CDM) 258bab661aSEmmanuel Vadot and is split up into several sub-parts Standard PCIe configuration 268bab661aSEmmanuel Vadot space, Port Logic Registers (PL), Shadow Config-space Registers, 278bab661aSEmmanuel Vadot iATU/eDMA registers. The particular sub-space is selected by the 288bab661aSEmmanuel Vadot CDM/ELBI (dbi_cs) and CS2 (dbi_cs2) signals (selector bits). Such 298bab661aSEmmanuel Vadot configuration provides a flexible interface for the system engineers to 308bab661aSEmmanuel Vadot either map the particular space at a desired MMIO address or just leave 318bab661aSEmmanuel Vadot them in a contiguous memory space if pure Native or AXI Bridge DBI access 328bab661aSEmmanuel Vadot is selected. Note the PCIe CFG-space, PL and Shadow registers are 338bab661aSEmmanuel Vadot specific for each activated function, while the rest of the sub-spaces 348bab661aSEmmanuel Vadot are common for all of them (if there are more than one). 358bab661aSEmmanuel Vadot minItems: 2 36*84943d6fSEmmanuel Vadot maxItems: 7 378bab661aSEmmanuel Vadot 388bab661aSEmmanuel Vadot reg-names: 398bab661aSEmmanuel Vadot minItems: 2 40*84943d6fSEmmanuel Vadot maxItems: 7 418bab661aSEmmanuel Vadot 428bab661aSEmmanuel Vadot interrupts: 438bab661aSEmmanuel Vadot description: 448bab661aSEmmanuel Vadot There are two main sub-blocks which are normally capable of 458bab661aSEmmanuel Vadot generating interrupts. It's System Information Interface and MSI 468bab661aSEmmanuel Vadot interface. While the former one has some common for the Host and 478bab661aSEmmanuel Vadot Endpoint controllers IRQ-signals, the later interface is obviously 488bab661aSEmmanuel Vadot Root Complex specific since it's responsible for the incoming MSI 498bab661aSEmmanuel Vadot messages signalling. The System Information IRQ signals are mainly 508bab661aSEmmanuel Vadot responsible for reporting the generic PCIe hierarchy and Root 518bab661aSEmmanuel Vadot Complex events like VPD IO request, general AER, PME, Hot-plug, link 528bab661aSEmmanuel Vadot bandwidth change, link equalization request, INTx asserted/deasserted 538bab661aSEmmanuel Vadot Message detection, embedded DMA Tx/Rx/Error. 548bab661aSEmmanuel Vadot minItems: 1 558bab661aSEmmanuel Vadot maxItems: 26 568bab661aSEmmanuel Vadot 578bab661aSEmmanuel Vadot interrupt-names: 588bab661aSEmmanuel Vadot minItems: 1 598bab661aSEmmanuel Vadot maxItems: 26 608bab661aSEmmanuel Vadot 618bab661aSEmmanuel Vadot clocks: 628bab661aSEmmanuel Vadot description: 638bab661aSEmmanuel Vadot DWC PCIe reference manual explicitly defines a set of the clocks required 648bab661aSEmmanuel Vadot to get the controller working correctly. In general all of them can 658bab661aSEmmanuel Vadot be divided into two groups':' application and core clocks. Note the 668bab661aSEmmanuel Vadot platforms may have some of the clock sources unspecified in case if the 678bab661aSEmmanuel Vadot corresponding domains are fed up from a common clock source. 688bab661aSEmmanuel Vadot minItems: 1 698bab661aSEmmanuel Vadot maxItems: 7 708bab661aSEmmanuel Vadot 718bab661aSEmmanuel Vadot clock-names: 728bab661aSEmmanuel Vadot minItems: 1 738bab661aSEmmanuel Vadot maxItems: 7 748bab661aSEmmanuel Vadot items: 758bab661aSEmmanuel Vadot oneOf: 768bab661aSEmmanuel Vadot - description: 778bab661aSEmmanuel Vadot Data Bus Interface (DBI) clock. Clock signal for the AXI-bus 788bab661aSEmmanuel Vadot interface of the Configuration-Dependent Module, which is 798bab661aSEmmanuel Vadot basically the set of the controller CSRs. 808bab661aSEmmanuel Vadot const: dbi 818bab661aSEmmanuel Vadot - description: 828bab661aSEmmanuel Vadot Application AXI-bus Master interface clock. Basically this is 838bab661aSEmmanuel Vadot a clock for the controller DMA interface (PCI-to-CPU). 848bab661aSEmmanuel Vadot const: mstr 858bab661aSEmmanuel Vadot - description: 868bab661aSEmmanuel Vadot Application AXI-bus Slave interface clock. This is a clock for 878bab661aSEmmanuel Vadot the CPU-to-PCI memory IO interface. 888bab661aSEmmanuel Vadot const: slv 898bab661aSEmmanuel Vadot - description: 908bab661aSEmmanuel Vadot Controller Core-PCS PIPE interface clock. It's normally 918bab661aSEmmanuel Vadot supplied by an external PCS-PHY. 928bab661aSEmmanuel Vadot const: pipe 938bab661aSEmmanuel Vadot - description: 948bab661aSEmmanuel Vadot Controller Primary clock. It's assumed that all controller input 958bab661aSEmmanuel Vadot signals (except resets) are synchronous to this clock. 968bab661aSEmmanuel Vadot const: core 978bab661aSEmmanuel Vadot - description: 988bab661aSEmmanuel Vadot Auxiliary clock for the controller PMC domain. The controller 998bab661aSEmmanuel Vadot partitioning implies having some parts to operate with this 1008bab661aSEmmanuel Vadot clock in some power management states. 1018bab661aSEmmanuel Vadot const: aux 1028bab661aSEmmanuel Vadot - description: 1038bab661aSEmmanuel Vadot Generic reference clock. In case if there are several 1048bab661aSEmmanuel Vadot interfaces fed up with a common clock source it's advisable to 1058bab661aSEmmanuel Vadot define it with this name (for instance pipe, core and aux can 1068bab661aSEmmanuel Vadot be connected to a single source of the periodic signal). 1078bab661aSEmmanuel Vadot const: ref 1088bab661aSEmmanuel Vadot - description: 1098bab661aSEmmanuel Vadot Clock for the PHY registers interface. Originally this is 1108bab661aSEmmanuel Vadot a PHY-viewport-based interface, but some platform may have 1118bab661aSEmmanuel Vadot specifically designed one. 1128bab661aSEmmanuel Vadot const: phy_reg 1138bab661aSEmmanuel Vadot - description: 1148bab661aSEmmanuel Vadot Vendor-specific clock names. Consider using the generic names 1158bab661aSEmmanuel Vadot above for new bindings. 1168bab661aSEmmanuel Vadot oneOf: 1178bab661aSEmmanuel Vadot - description: See native 'dbi' clock for details 1188bab661aSEmmanuel Vadot enum: [ pcie, pcie_apb_sys, aclk_dbi ] 1198bab661aSEmmanuel Vadot - description: See native 'mstr/slv' clock for details 1208bab661aSEmmanuel Vadot enum: [ pcie_bus, pcie_inbound_axi, pcie_aclk, aclk_mst, aclk_slv ] 1218bab661aSEmmanuel Vadot - description: See native 'pipe' clock for details 1228bab661aSEmmanuel Vadot enum: [ pcie_phy, pcie_phy_ref, link ] 1238bab661aSEmmanuel Vadot - description: See native 'aux' clock for details 1248bab661aSEmmanuel Vadot enum: [ pcie_aux ] 1258bab661aSEmmanuel Vadot - description: See native 'ref' clock for details. 1268bab661aSEmmanuel Vadot enum: [ gio ] 1278bab661aSEmmanuel Vadot - description: See nativs 'phy_reg' clock for details 1288bab661aSEmmanuel Vadot enum: [ pcie_apb_phy, pclk ] 1298bab661aSEmmanuel Vadot 1308bab661aSEmmanuel Vadot resets: 1318bab661aSEmmanuel Vadot description: 1328bab661aSEmmanuel Vadot DWC PCIe reference manual explicitly defines a set of the reset 1338bab661aSEmmanuel Vadot signals required to be de-asserted to properly activate the controller 1348bab661aSEmmanuel Vadot sub-parts. All of these signals can be divided into two sub-groups':' 1358bab661aSEmmanuel Vadot application and core resets with respect to the main sub-domains they 1368bab661aSEmmanuel Vadot are supposed to reset. Note the platforms may have some of these signals 1378bab661aSEmmanuel Vadot unspecified in case if they are automatically handled or aggregated into 1388bab661aSEmmanuel Vadot a comprehensive control module. 1398bab661aSEmmanuel Vadot minItems: 1 1408bab661aSEmmanuel Vadot maxItems: 10 1418bab661aSEmmanuel Vadot 1428bab661aSEmmanuel Vadot reset-names: 1438bab661aSEmmanuel Vadot minItems: 1 1448bab661aSEmmanuel Vadot maxItems: 10 1458bab661aSEmmanuel Vadot items: 1468bab661aSEmmanuel Vadot oneOf: 1478bab661aSEmmanuel Vadot - description: Data Bus Interface (DBI) domain reset 1488bab661aSEmmanuel Vadot const: dbi 1498bab661aSEmmanuel Vadot - description: AXI-bus Master interface reset 1508bab661aSEmmanuel Vadot const: mstr 1518bab661aSEmmanuel Vadot - description: AXI-bus Slave interface reset 1528bab661aSEmmanuel Vadot const: slv 1538bab661aSEmmanuel Vadot - description: Application-dependent interface reset 1548bab661aSEmmanuel Vadot const: app 1558bab661aSEmmanuel Vadot - description: Controller Non-sticky CSR flags reset 1568bab661aSEmmanuel Vadot const: non-sticky 1578bab661aSEmmanuel Vadot - description: Controller sticky CSR flags reset 1588bab661aSEmmanuel Vadot const: sticky 1598bab661aSEmmanuel Vadot - description: PIPE-interface (Core-PCS) logic reset 1608bab661aSEmmanuel Vadot const: pipe 1618bab661aSEmmanuel Vadot - description: 1628bab661aSEmmanuel Vadot Controller primary reset (resets everything except PMC module) 1638bab661aSEmmanuel Vadot const: core 1648bab661aSEmmanuel Vadot - description: PCS/PHY block reset 1658bab661aSEmmanuel Vadot const: phy 1668bab661aSEmmanuel Vadot - description: PMC hot reset signal 1678bab661aSEmmanuel Vadot const: hot 1688bab661aSEmmanuel Vadot - description: Cold reset signal 1698bab661aSEmmanuel Vadot const: pwr 1708bab661aSEmmanuel Vadot - description: 1718bab661aSEmmanuel Vadot Vendor-specific reset names. Consider using the generic names 1728bab661aSEmmanuel Vadot above for new bindings. 1738bab661aSEmmanuel Vadot oneOf: 1748bab661aSEmmanuel Vadot - description: See native 'app' reset for details 1758bab661aSEmmanuel Vadot enum: [ apps, gio, apb ] 1768bab661aSEmmanuel Vadot - description: See native 'phy' reset for details 1778bab661aSEmmanuel Vadot enum: [ pciephy, link ] 1788bab661aSEmmanuel Vadot - description: See native 'pwr' reset for details 1798bab661aSEmmanuel Vadot enum: [ turnoff ] 1808bab661aSEmmanuel Vadot 1818bab661aSEmmanuel Vadot phys: 1828bab661aSEmmanuel Vadot description: 1838bab661aSEmmanuel Vadot There can be up to the number of possible lanes PHYs specified placed in 1848bab661aSEmmanuel Vadot the phandle array in the line-based order. Obviously each the specified 1858bab661aSEmmanuel Vadot PHYs are supposed to be able to work in the PCIe mode with a speed 1868bab661aSEmmanuel Vadot implied by the DWC PCIe controller they are attached to. 1878bab661aSEmmanuel Vadot minItems: 1 1888bab661aSEmmanuel Vadot maxItems: 16 1898bab661aSEmmanuel Vadot 1908bab661aSEmmanuel Vadot phy-names: 1918bab661aSEmmanuel Vadot minItems: 1 1928bab661aSEmmanuel Vadot maxItems: 16 1938bab661aSEmmanuel Vadot oneOf: 1948bab661aSEmmanuel Vadot - description: Generic PHY names 1958bab661aSEmmanuel Vadot items: 1968bab661aSEmmanuel Vadot pattern: '^pcie[0-9]+$' 1978bab661aSEmmanuel Vadot - description: 1988bab661aSEmmanuel Vadot Vendor-specific PHY names. Consider using the generic 1998bab661aSEmmanuel Vadot names above for new bindings. 2008bab661aSEmmanuel Vadot items: 2018bab661aSEmmanuel Vadot oneOf: 2028bab661aSEmmanuel Vadot - pattern: '^pcie(-?phy[0-9]*)?$' 2038bab661aSEmmanuel Vadot - pattern: '^p2u-[0-7]$' 2048bab661aSEmmanuel Vadot 2058bab661aSEmmanuel Vadot reset-gpio: 2068bab661aSEmmanuel Vadot deprecated: true 2078bab661aSEmmanuel Vadot description: 2088bab661aSEmmanuel Vadot Reference to the GPIO-controlled PERST# signal. It is used to reset all 2098bab661aSEmmanuel Vadot the peripheral devices available on the PCIe bus. 2108bab661aSEmmanuel Vadot maxItems: 1 2118bab661aSEmmanuel Vadot 2128bab661aSEmmanuel Vadot reset-gpios: 2138bab661aSEmmanuel Vadot description: 2148bab661aSEmmanuel Vadot Reference to the GPIO-controlled PERST# signal. It is used to reset all 2158bab661aSEmmanuel Vadot the peripheral devices available on the PCIe bus. 2168bab661aSEmmanuel Vadot maxItems: 1 2178bab661aSEmmanuel Vadot 2188bab661aSEmmanuel Vadot max-link-speed: 2198bab661aSEmmanuel Vadot maximum: 5 2208bab661aSEmmanuel Vadot 2218bab661aSEmmanuel Vadot num-lanes: 2228bab661aSEmmanuel Vadot description: 2238bab661aSEmmanuel Vadot Number of PCIe link lanes to use. Can be omitted if the already brought 2248bab661aSEmmanuel Vadot up link is supposed to be preserved. 2258bab661aSEmmanuel Vadot maximum: 16 2268bab661aSEmmanuel Vadot 2278bab661aSEmmanuel Vadot num-ob-windows: 2288bab661aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 2298bab661aSEmmanuel Vadot deprecated: true 2308bab661aSEmmanuel Vadot description: 2318bab661aSEmmanuel Vadot Number of outbound address translation windows. This parameter can be 2328bab661aSEmmanuel Vadot auto-detected based on the iATU memory writability. So there is no 2338bab661aSEmmanuel Vadot point in having a dedicated DT-property for it. 2348bab661aSEmmanuel Vadot maximum: 256 2358bab661aSEmmanuel Vadot 2368bab661aSEmmanuel Vadot num-ib-windows: 2378bab661aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 2388bab661aSEmmanuel Vadot deprecated: true 2398bab661aSEmmanuel Vadot description: 2408bab661aSEmmanuel Vadot Number of inbound address translation windows. In the same way as 2418bab661aSEmmanuel Vadot for the outbound AT windows, this parameter can be auto-detected based 2428bab661aSEmmanuel Vadot on the iATU memory writability. There is no point having a dedicated 2438bab661aSEmmanuel Vadot DT-property for it either. 2448bab661aSEmmanuel Vadot maximum: 256 2458bab661aSEmmanuel Vadot 2468bab661aSEmmanuel Vadot num-viewport: 2478bab661aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 2488bab661aSEmmanuel Vadot deprecated: true 2498bab661aSEmmanuel Vadot description: 2508bab661aSEmmanuel Vadot Number of outbound view ports configured in hardware. It's the same as 2518bab661aSEmmanuel Vadot the number of outbound AT windows. 2528bab661aSEmmanuel Vadot maximum: 256 2538bab661aSEmmanuel Vadot 2548bab661aSEmmanuel Vadot snps,enable-cdm-check: 2558bab661aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/flag 2568bab661aSEmmanuel Vadot description: 2578bab661aSEmmanuel Vadot Enable automatic checking of CDM (Configuration Dependent Module) 2588bab661aSEmmanuel Vadot registers for data corruption. CDM registers include standard PCIe 2598bab661aSEmmanuel Vadot configuration space registers, Port Logic registers, DMA and iATU 2608bab661aSEmmanuel Vadot registers. This feature has been available since DWC PCIe v4.80a. 2618bab661aSEmmanuel Vadot 2628bab661aSEmmanuel Vadot dma-coherent: true 2638bab661aSEmmanuel Vadot 2648bab661aSEmmanuel VadotadditionalProperties: true 2658bab661aSEmmanuel Vadot 2668bab661aSEmmanuel Vadot... 267