xref: /linux/Documentation/devicetree/bindings/pci/altr,pcie-root-port.yaml (revision 7d06015d936c861160803e020f68f413b5c3cd9d)
1b08929e1SMatthew Gerlach# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2b08929e1SMatthew Gerlach# Copyright (C) 2015, 2019, 2024, Intel Corporation
3b08929e1SMatthew Gerlach%YAML 1.2
4b08929e1SMatthew Gerlach---
5b08929e1SMatthew Gerlach$id: http://devicetree.org/schemas/altr,pcie-root-port.yaml#
6b08929e1SMatthew Gerlach$schema: http://devicetree.org/meta-schemas/core.yaml#
7b08929e1SMatthew Gerlach
8b08929e1SMatthew Gerlachtitle: Altera PCIe Root Port
9b08929e1SMatthew Gerlach
10b08929e1SMatthew Gerlachmaintainers:
11b08929e1SMatthew Gerlach  - Matthew Gerlach <matthew.gerlach@linux.intel.com>
12b08929e1SMatthew Gerlach
13b08929e1SMatthew Gerlachproperties:
14b08929e1SMatthew Gerlach  compatible:
15*6843f38eSMatthew Gerlach    description: Each family of socfpga has its own implementation of the
16*6843f38eSMatthew Gerlach      PCI controller. The altr,pcie-root-port-1.0 is used for the Cyclone5
17*6843f38eSMatthew Gerlach      family of chips. The Stratix10 family of chips is supported by the
18*6843f38eSMatthew Gerlach      altr,pcie-root-port-2.0. The Agilex family of chips has three,
19*6843f38eSMatthew Gerlach      non-register compatible, variants of PCIe Hard IP referred to as the
20*6843f38eSMatthew Gerlach      F-Tile, P-Tile, and R-Tile, depending on the specific chip instance.
21*6843f38eSMatthew Gerlach
22b08929e1SMatthew Gerlach    enum:
23b08929e1SMatthew Gerlach      - altr,pcie-root-port-1.0
24b08929e1SMatthew Gerlach      - altr,pcie-root-port-2.0
25*6843f38eSMatthew Gerlach      - altr,pcie-root-port-3.0-f-tile
26*6843f38eSMatthew Gerlach      - altr,pcie-root-port-3.0-p-tile
27*6843f38eSMatthew Gerlach      - altr,pcie-root-port-3.0-r-tile
28b08929e1SMatthew Gerlach
29b08929e1SMatthew Gerlach  reg:
30b08929e1SMatthew Gerlach    items:
31b08929e1SMatthew Gerlach      - description: TX slave port region
32b08929e1SMatthew Gerlach      - description: Control register access region
33b08929e1SMatthew Gerlach      - description: Hard IP region
34b08929e1SMatthew Gerlach    minItems: 2
35b08929e1SMatthew Gerlach
36b08929e1SMatthew Gerlach  reg-names:
37b08929e1SMatthew Gerlach    items:
38b08929e1SMatthew Gerlach      - const: Txs
39b08929e1SMatthew Gerlach      - const: Cra
40b08929e1SMatthew Gerlach      - const: Hip
41b08929e1SMatthew Gerlach    minItems: 2
42b08929e1SMatthew Gerlach
43b08929e1SMatthew Gerlach  interrupts:
44b08929e1SMatthew Gerlach    maxItems: 1
45b08929e1SMatthew Gerlach
46b08929e1SMatthew Gerlach  interrupt-controller: true
47b08929e1SMatthew Gerlach
48b08929e1SMatthew Gerlach  interrupt-map-mask:
49b08929e1SMatthew Gerlach    items:
50b08929e1SMatthew Gerlach      - const: 0
51b08929e1SMatthew Gerlach      - const: 0
52b08929e1SMatthew Gerlach      - const: 0
53b08929e1SMatthew Gerlach      - const: 7
54b08929e1SMatthew Gerlach
55b08929e1SMatthew Gerlach  interrupt-map:
56b08929e1SMatthew Gerlach    maxItems: 4
57b08929e1SMatthew Gerlach
58b08929e1SMatthew Gerlach  "#interrupt-cells":
59b08929e1SMatthew Gerlach    const: 1
60b08929e1SMatthew Gerlach
61b08929e1SMatthew Gerlach  msi-parent: true
62b08929e1SMatthew Gerlach
63b08929e1SMatthew Gerlachrequired:
64b08929e1SMatthew Gerlach  - compatible
65b08929e1SMatthew Gerlach  - reg
66b08929e1SMatthew Gerlach  - reg-names
67b08929e1SMatthew Gerlach  - interrupts
68b08929e1SMatthew Gerlach  - "#interrupt-cells"
69b08929e1SMatthew Gerlach  - interrupt-controller
70b08929e1SMatthew Gerlach  - interrupt-map
71b08929e1SMatthew Gerlach  - interrupt-map-mask
72b08929e1SMatthew Gerlach
73b08929e1SMatthew GerlachallOf:
74b08929e1SMatthew Gerlach  - $ref: /schemas/pci/pci-host-bridge.yaml#
75b08929e1SMatthew Gerlach  - if:
76b08929e1SMatthew Gerlach      properties:
77b08929e1SMatthew Gerlach        compatible:
78b08929e1SMatthew Gerlach          enum:
79b08929e1SMatthew Gerlach            - altr,pcie-root-port-1.0
80b08929e1SMatthew Gerlach    then:
81b08929e1SMatthew Gerlach      properties:
82b08929e1SMatthew Gerlach        reg:
83b08929e1SMatthew Gerlach          maxItems: 2
84b08929e1SMatthew Gerlach
85b08929e1SMatthew Gerlach        reg-names:
86b08929e1SMatthew Gerlach          maxItems: 2
87b08929e1SMatthew Gerlach
88b08929e1SMatthew Gerlach    else:
89b08929e1SMatthew Gerlach      properties:
90b08929e1SMatthew Gerlach        reg:
91b08929e1SMatthew Gerlach          minItems: 3
92b08929e1SMatthew Gerlach
93b08929e1SMatthew Gerlach        reg-names:
94b08929e1SMatthew Gerlach          minItems: 3
95b08929e1SMatthew Gerlach
96b08929e1SMatthew Gerlach
97b08929e1SMatthew GerlachunevaluatedProperties: false
98b08929e1SMatthew Gerlach
99b08929e1SMatthew Gerlachexamples:
100b08929e1SMatthew Gerlach  - |
101b08929e1SMatthew Gerlach    #include <dt-bindings/interrupt-controller/arm-gic.h>
102b08929e1SMatthew Gerlach    #include <dt-bindings/interrupt-controller/irq.h>
103b08929e1SMatthew Gerlach    pcie_0: pcie@c00000000 {
104b08929e1SMatthew Gerlach        compatible = "altr,pcie-root-port-1.0";
105b08929e1SMatthew Gerlach        reg = <0xc0000000 0x20000000>,
106b08929e1SMatthew Gerlach              <0xff220000 0x00004000>;
107b08929e1SMatthew Gerlach        reg-names = "Txs", "Cra";
108b08929e1SMatthew Gerlach        interrupt-parent = <&hps_0_arm_gic_0>;
109b08929e1SMatthew Gerlach        interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
110b08929e1SMatthew Gerlach        interrupt-controller;
111b08929e1SMatthew Gerlach        #interrupt-cells = <1>;
112b08929e1SMatthew Gerlach        bus-range = <0x0 0xff>;
113b08929e1SMatthew Gerlach        device_type = "pci";
114b08929e1SMatthew Gerlach        msi-parent = <&msi_to_gic_gen_0>;
115b08929e1SMatthew Gerlach        #address-cells = <3>;
116b08929e1SMatthew Gerlach        #size-cells = <2>;
117b08929e1SMatthew Gerlach        interrupt-map-mask = <0 0 0 7>;
118b08929e1SMatthew Gerlach        interrupt-map = <0 0 0 1 &pcie_0 0 0 0 1>,
119b08929e1SMatthew Gerlach                        <0 0 0 2 &pcie_0 0 0 0 2>,
120b08929e1SMatthew Gerlach                        <0 0 0 3 &pcie_0 0 0 0 3>,
121b08929e1SMatthew Gerlach                        <0 0 0 4 &pcie_0 0 0 0 4>;
122b08929e1SMatthew Gerlach        ranges = <0x82000000 0x00000000 0x00000000 0xc0000000 0x00000000 0x10000000>,
123b08929e1SMatthew Gerlach                 <0x82000000 0x00000000 0x10000000 0xd0000000 0x00000000 0x10000000>;
124b08929e1SMatthew Gerlach    };
125