xref: /freebsd/sys/contrib/device-tree/Bindings/pci/snps,dw-pcie-common.yaml (revision 84943d6f38e936ac3b7a3947ca26eeb27a39f938)
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