1354d7675SEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0
2354d7675SEmmanuel Vadot%YAML 1.2
3354d7675SEmmanuel Vadot---
4354d7675SEmmanuel Vadot$id: http://devicetree.org/schemas/pci/snps,dw-pcie-ep.yaml#
5354d7675SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6354d7675SEmmanuel Vadot
7354d7675SEmmanuel Vadottitle: Synopsys DesignWare PCIe endpoint interface
8354d7675SEmmanuel Vadot
9354d7675SEmmanuel Vadotmaintainers:
10354d7675SEmmanuel Vadot  - Jingoo Han <jingoohan1@gmail.com>
11354d7675SEmmanuel Vadot  - Gustavo Pimentel <gustavo.pimentel@synopsys.com>
12354d7675SEmmanuel Vadot
13354d7675SEmmanuel Vadotdescription: |
14354d7675SEmmanuel Vadot  Synopsys DesignWare PCIe host controller endpoint
15354d7675SEmmanuel Vadot
168bab661aSEmmanuel Vadot# Please create a separate DT-schema for your DWC PCIe Endpoint controller
178bab661aSEmmanuel Vadot# and make sure it's assigned with the vendor-specific compatible string.
188bab661aSEmmanuel Vadotselect:
19354d7675SEmmanuel Vadot  properties:
20354d7675SEmmanuel Vadot    compatible:
218bab661aSEmmanuel Vadot      const: snps,dw-pcie-ep
228bab661aSEmmanuel Vadot  required:
238bab661aSEmmanuel Vadot    - compatible
24354d7675SEmmanuel Vadot
258bab661aSEmmanuel VadotallOf:
268bab661aSEmmanuel Vadot  - $ref: /schemas/pci/pci-ep.yaml#
278bab661aSEmmanuel Vadot  - $ref: /schemas/pci/snps,dw-pcie-common.yaml#
288bab661aSEmmanuel Vadot
298bab661aSEmmanuel Vadotproperties:
30354d7675SEmmanuel Vadot  reg:
318bab661aSEmmanuel Vadot    description:
328bab661aSEmmanuel Vadot      DBI, DBI2 reg-spaces and outbound memory window are required for the
338bab661aSEmmanuel Vadot      normal controller functioning. iATU memory IO region is also required
348bab661aSEmmanuel Vadot      if the space is unrolled (IP-core version >= 4.80a).
35354d7675SEmmanuel Vadot    minItems: 2
36*84943d6fSEmmanuel Vadot    maxItems: 7
37354d7675SEmmanuel Vadot
38354d7675SEmmanuel Vadot  reg-names:
39354d7675SEmmanuel Vadot    minItems: 2
40*84943d6fSEmmanuel Vadot    maxItems: 7
41354d7675SEmmanuel Vadot    items:
428bab661aSEmmanuel Vadot      oneOf:
438bab661aSEmmanuel Vadot        - description:
448bab661aSEmmanuel Vadot            Basic DWC PCIe controller configuration-space accessible over
458bab661aSEmmanuel Vadot            the DBI interface. This memory space is either activated with
468bab661aSEmmanuel Vadot            CDM/ELBI = 0 and CS2 = 0 or is a contiguous memory region
478bab661aSEmmanuel Vadot            with all spaces. Note iATU/eDMA CSRs are indirectly accessible
488bab661aSEmmanuel Vadot            via the PL viewports on the DWC PCIe controllers older than
498bab661aSEmmanuel Vadot            v4.80a.
508bab661aSEmmanuel Vadot          const: dbi
518bab661aSEmmanuel Vadot        - description:
528bab661aSEmmanuel Vadot            Shadow DWC PCIe config-space registers. This space is selected
538bab661aSEmmanuel Vadot            by setting CDM/ELBI = 0 and CS2 = 1. This is an intermix of
548bab661aSEmmanuel Vadot            the PCI-SIG PCIe CFG-space with the shadow registers for some
558bab661aSEmmanuel Vadot            PCI Header space, PCI Standard and Extended Structures. It's
568bab661aSEmmanuel Vadot            mainly relevant for the end-point controller configuration,
578bab661aSEmmanuel Vadot            but still there are some shadow registers available for the
588bab661aSEmmanuel Vadot            Root Port mode too.
598bab661aSEmmanuel Vadot          const: dbi2
608bab661aSEmmanuel Vadot        - description:
618bab661aSEmmanuel Vadot            External Local Bus registers. It's an application-dependent
628bab661aSEmmanuel Vadot            registers normally defined by the platform engineers. The space
638bab661aSEmmanuel Vadot            can be selected by setting CDM/ELBI = 1 and CS2 = 0 wires or can
648bab661aSEmmanuel Vadot            be accessed over some platform-specific means (for instance
658bab661aSEmmanuel Vadot            as a part of a system controller).
668bab661aSEmmanuel Vadot          enum: [ elbi, app ]
678bab661aSEmmanuel Vadot        - description:
688bab661aSEmmanuel Vadot            iATU/eDMA registers common for all device functions. It's an
698bab661aSEmmanuel Vadot            unrolled memory space with the internal Address Translation
708bab661aSEmmanuel Vadot            Unit and Enhanced DMA, which is selected by setting CDM/ELBI = 1
718bab661aSEmmanuel Vadot            and CS2 = 1. For IP-core releases prior v4.80a, these registers
728bab661aSEmmanuel Vadot            have been programmed via an indirect addressing scheme using a
738bab661aSEmmanuel Vadot            set of viewport CSRs mapped into the PL space. Note iATU is
748bab661aSEmmanuel Vadot            normally mapped to the 0x0 address of this region, while eDMA
758bab661aSEmmanuel Vadot            is available at 0x80000 base address.
768bab661aSEmmanuel Vadot          const: atu
778bab661aSEmmanuel Vadot        - description:
788bab661aSEmmanuel Vadot            Platform-specific eDMA registers. Some platforms may have eDMA
798bab661aSEmmanuel Vadot            CSRs mapped in a non-standard base address. The registers offset
808bab661aSEmmanuel Vadot            can be changed or the MS/LS-bits of the address can be attached
818bab661aSEmmanuel Vadot            in an additional RTL block before the MEM-IO transactions reach
828bab661aSEmmanuel Vadot            the DW PCIe slave interface.
838bab661aSEmmanuel Vadot          const: dma
848bab661aSEmmanuel Vadot        - description:
858bab661aSEmmanuel Vadot            PHY/PCS configuration registers. Some platforms can have the
868bab661aSEmmanuel Vadot            PCS and PHY CSRs accessible over a dedicated memory mapped
878bab661aSEmmanuel Vadot            region, but mainly these registers are indirectly accessible
888bab661aSEmmanuel Vadot            either by means of the embedded PHY viewport schema or by some
898bab661aSEmmanuel Vadot            platform-specific method.
908bab661aSEmmanuel Vadot          const: phy
918bab661aSEmmanuel Vadot        - description:
928bab661aSEmmanuel Vadot            Outbound iATU-capable memory-region which will be used to
938bab661aSEmmanuel Vadot            generate various application-specific traffic on the PCIe bus
948bab661aSEmmanuel Vadot            hierarchy. It's usage scenario depends on the endpoint
958bab661aSEmmanuel Vadot            functionality, for instance it can be used to create MSI(X)
968bab661aSEmmanuel Vadot            messages.
978bab661aSEmmanuel Vadot          const: addr_space
988bab661aSEmmanuel Vadot        - description:
998bab661aSEmmanuel Vadot            Vendor-specific CSR names. Consider using the generic names above
1008bab661aSEmmanuel Vadot            for new bindings.
1018bab661aSEmmanuel Vadot          oneOf:
1028bab661aSEmmanuel Vadot            - description: See native 'elbi/app' CSR region for details.
1038bab661aSEmmanuel Vadot              enum: [ link, appl ]
1048bab661aSEmmanuel Vadot            - description: See native 'atu' CSR region for details.
1058bab661aSEmmanuel Vadot              enum: [ atu_dma ]
1068bab661aSEmmanuel Vadot    allOf:
1078bab661aSEmmanuel Vadot      - contains:
1088bab661aSEmmanuel Vadot          const: dbi
1098bab661aSEmmanuel Vadot      - contains:
1108bab661aSEmmanuel Vadot          const: addr_space
111354d7675SEmmanuel Vadot
1128bab661aSEmmanuel Vadot  interrupts:
1138bab661aSEmmanuel Vadot    description:
1148bab661aSEmmanuel Vadot      There is no mandatory IRQ signals for the normal controller functioning,
1158bab661aSEmmanuel Vadot      but in addition to the native set the platforms may have a link- or
1168bab661aSEmmanuel Vadot      PM-related IRQs specified.
1178bab661aSEmmanuel Vadot    minItems: 1
1188bab661aSEmmanuel Vadot    maxItems: 20
119354d7675SEmmanuel Vadot
1208bab661aSEmmanuel Vadot  interrupt-names:
1218bab661aSEmmanuel Vadot    minItems: 1
1228bab661aSEmmanuel Vadot    maxItems: 20
1238bab661aSEmmanuel Vadot    items:
1248bab661aSEmmanuel Vadot      oneOf:
1258bab661aSEmmanuel Vadot        - description:
1268bab661aSEmmanuel Vadot            Controller request to read or write virtual product data
1278bab661aSEmmanuel Vadot            from/to the VPD capability registers.
1288bab661aSEmmanuel Vadot          const: vpd
1298bab661aSEmmanuel Vadot        - description:
1308bab661aSEmmanuel Vadot            Link Equalization Request flag is set in the Link Status 2
1318bab661aSEmmanuel Vadot            register (applicable if the corresponding IRQ is enabled in
1328bab661aSEmmanuel Vadot            the Link Control 3 register).
1338bab661aSEmmanuel Vadot          const: l_eq
1348bab661aSEmmanuel Vadot        - description:
1358bab661aSEmmanuel Vadot            Indicates that the eDMA Tx/Rx transfer is complete or that an
1368bab661aSEmmanuel Vadot            error has occurred on the corresponding channel. eDMA can have
1378bab661aSEmmanuel Vadot            eight Tx (Write) and Rx (Read) eDMA channels thus supporting up
1388bab661aSEmmanuel Vadot            to 16 IRQ signals all together. Write eDMA channels shall go
1398bab661aSEmmanuel Vadot            first in the ordered row as per default edma_int[*] bus setup.
1408bab661aSEmmanuel Vadot          pattern: '^dma([0-9]|1[0-5])?$'
1418bab661aSEmmanuel Vadot        - description:
1428bab661aSEmmanuel Vadot            PCIe protocol correctable error or a Data Path protection
1438bab661aSEmmanuel Vadot            correctable error is detected by the automotive/safety
1448bab661aSEmmanuel Vadot            feature.
1458bab661aSEmmanuel Vadot          const: sft_ce
1468bab661aSEmmanuel Vadot        - description:
1478bab661aSEmmanuel Vadot            Indicates that the internal safety mechanism has detected an
1488bab661aSEmmanuel Vadot            uncorrectable error.
1498bab661aSEmmanuel Vadot          const: sft_ue
1508bab661aSEmmanuel Vadot        - description:
1518bab661aSEmmanuel Vadot            Application-specific IRQ raised depending on the vendor-specific
1528bab661aSEmmanuel Vadot            events basis.
1538bab661aSEmmanuel Vadot          const: app
1548bab661aSEmmanuel Vadot        - description:
1558bab661aSEmmanuel Vadot            Vendor-specific IRQ names. Consider using the generic names above
1568bab661aSEmmanuel Vadot            for new bindings.
1578bab661aSEmmanuel Vadot          oneOf:
1588bab661aSEmmanuel Vadot            - description: See native "app" IRQ for details
1598bab661aSEmmanuel Vadot              enum: [ intr ]
160354d7675SEmmanuel Vadot
1618bab661aSEmmanuel Vadot  max-functions:
1628bab661aSEmmanuel Vadot    maximum: 32
163354d7675SEmmanuel Vadot
164354d7675SEmmanuel Vadotrequired:
1658bab661aSEmmanuel Vadot  - compatible
166354d7675SEmmanuel Vadot  - reg
167354d7675SEmmanuel Vadot  - reg-names
168354d7675SEmmanuel Vadot
169e67e8565SEmmanuel VadotadditionalProperties: true
170354d7675SEmmanuel Vadot
171354d7675SEmmanuel Vadotexamples:
172354d7675SEmmanuel Vadot  - |
173354d7675SEmmanuel Vadot    pcie-ep@dfd00000 {
174354d7675SEmmanuel Vadot      compatible = "snps,dw-pcie-ep";
175354d7675SEmmanuel Vadot      reg = <0xdfc00000 0x0001000>, /* IP registers 1 */
176354d7675SEmmanuel Vadot            <0xdfc01000 0x0001000>, /* IP registers 2 */
177354d7675SEmmanuel Vadot            <0xd0000000 0x2000000>; /* Configuration space */
178354d7675SEmmanuel Vadot      reg-names = "dbi", "dbi2", "addr_space";
1798bab661aSEmmanuel Vadot
1808bab661aSEmmanuel Vadot      interrupts = <23>, <24>;
1818bab661aSEmmanuel Vadot      interrupt-names = "dma0", "dma1";
1828bab661aSEmmanuel Vadot
1838bab661aSEmmanuel Vadot      clocks = <&sys_clk 12>, <&sys_clk 24>;
1848bab661aSEmmanuel Vadot      clock-names = "dbi", "ref";
1858bab661aSEmmanuel Vadot
1868bab661aSEmmanuel Vadot      resets = <&sys_rst 12>, <&sys_rst 24>;
1878bab661aSEmmanuel Vadot      reset-names = "dbi", "phy";
1888bab661aSEmmanuel Vadot
1898bab661aSEmmanuel Vadot      phys = <&pcie_phy0>, <&pcie_phy1>, <&pcie_phy2>, <&pcie_phy3>;
1908bab661aSEmmanuel Vadot      phy-names = "pcie0", "pcie1", "pcie2", "pcie3";
1918bab661aSEmmanuel Vadot
1928bab661aSEmmanuel Vadot      max-link-speed = <3>;
1938bab661aSEmmanuel Vadot      max-functions = /bits/ 8 <4>;
194354d7675SEmmanuel Vadot    };
195