xref: /linux/Documentation/devicetree/bindings/pci/aspeed,ast2600-pcie.yaml (revision c17ee635fd3a482b2ad2bf5e269755c2eae5f25e)
1*a20df1a7SJacky Chou# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*a20df1a7SJacky Chou%YAML 1.2
3*a20df1a7SJacky Chou---
4*a20df1a7SJacky Chou$id: http://devicetree.org/schemas/pci/aspeed,ast2600-pcie.yaml#
5*a20df1a7SJacky Chou$schema: http://devicetree.org/meta-schemas/core.yaml#
6*a20df1a7SJacky Chou
7*a20df1a7SJacky Choutitle: ASPEED PCIe Root Complex Controller
8*a20df1a7SJacky Chou
9*a20df1a7SJacky Choumaintainers:
10*a20df1a7SJacky Chou  - Jacky Chou <jacky_chou@aspeedtech.com>
11*a20df1a7SJacky Chou
12*a20df1a7SJacky Choudescription:
13*a20df1a7SJacky Chou  The ASPEED PCIe Root Complex controller provides PCI Express Root Complex
14*a20df1a7SJacky Chou  functionality for ASPEED SoCs, such as the AST2600 and AST2700.
15*a20df1a7SJacky Chou  This controller enables connectivity to PCIe endpoint devices, supporting
16*a20df1a7SJacky Chou  memory and I/O windows, MSI and INTx interrupts, and integration with
17*a20df1a7SJacky Chou  the SoC's clock, reset, and pinctrl subsystems. On AST2600, the PCIe Root
18*a20df1a7SJacky Chou  Port device number is always 8.
19*a20df1a7SJacky Chou
20*a20df1a7SJacky Chouproperties:
21*a20df1a7SJacky Chou  compatible:
22*a20df1a7SJacky Chou    enum:
23*a20df1a7SJacky Chou      - aspeed,ast2600-pcie
24*a20df1a7SJacky Chou      - aspeed,ast2700-pcie
25*a20df1a7SJacky Chou
26*a20df1a7SJacky Chou  reg:
27*a20df1a7SJacky Chou    maxItems: 1
28*a20df1a7SJacky Chou
29*a20df1a7SJacky Chou  ranges:
30*a20df1a7SJacky Chou    minItems: 2
31*a20df1a7SJacky Chou    maxItems: 2
32*a20df1a7SJacky Chou
33*a20df1a7SJacky Chou  interrupts:
34*a20df1a7SJacky Chou    maxItems: 1
35*a20df1a7SJacky Chou    description: INTx and MSI interrupt
36*a20df1a7SJacky Chou
37*a20df1a7SJacky Chou  resets:
38*a20df1a7SJacky Chou    items:
39*a20df1a7SJacky Chou      - description: PCIe controller reset
40*a20df1a7SJacky Chou
41*a20df1a7SJacky Chou  reset-names:
42*a20df1a7SJacky Chou    items:
43*a20df1a7SJacky Chou      - const: h2x
44*a20df1a7SJacky Chou
45*a20df1a7SJacky Chou  aspeed,ahbc:
46*a20df1a7SJacky Chou    $ref: /schemas/types.yaml#/definitions/phandle
47*a20df1a7SJacky Chou    description:
48*a20df1a7SJacky Chou      Phandle to the ASPEED AHB Controller (AHBC) syscon node.
49*a20df1a7SJacky Chou      This reference is used by the PCIe controller to access
50*a20df1a7SJacky Chou      system-level configuration registers related to the AHB bus.
51*a20df1a7SJacky Chou      To enable AHB access for the PCIe controller.
52*a20df1a7SJacky Chou
53*a20df1a7SJacky Chou  aspeed,pciecfg:
54*a20df1a7SJacky Chou    $ref: /schemas/types.yaml#/definitions/phandle
55*a20df1a7SJacky Chou    description:
56*a20df1a7SJacky Chou      Phandle to the ASPEED PCIe configuration syscon node.
57*a20df1a7SJacky Chou      This reference allows the PCIe controller to access
58*a20df1a7SJacky Chou      SoC-specific PCIe configuration registers. There are the others
59*a20df1a7SJacky Chou      functions such PCIe RC and PCIe EP will use this common register
60*a20df1a7SJacky Chou      to configure the SoC interfaces.
61*a20df1a7SJacky Chou
62*a20df1a7SJacky Chou  interrupt-controller: true
63*a20df1a7SJacky Chou
64*a20df1a7SJacky ChoupatternProperties:
65*a20df1a7SJacky Chou  "^pcie@[0-9a-f]+,0$":
66*a20df1a7SJacky Chou    type: object
67*a20df1a7SJacky Chou    $ref: /schemas/pci/pci-pci-bridge.yaml#
68*a20df1a7SJacky Chou
69*a20df1a7SJacky Chou    properties:
70*a20df1a7SJacky Chou      reg:
71*a20df1a7SJacky Chou        maxItems: 1
72*a20df1a7SJacky Chou
73*a20df1a7SJacky Chou      resets:
74*a20df1a7SJacky Chou        items:
75*a20df1a7SJacky Chou          - description: PERST# signal
76*a20df1a7SJacky Chou
77*a20df1a7SJacky Chou      reset-names:
78*a20df1a7SJacky Chou        items:
79*a20df1a7SJacky Chou          - const: perst
80*a20df1a7SJacky Chou
81*a20df1a7SJacky Chou      clocks:
82*a20df1a7SJacky Chou        maxItems: 1
83*a20df1a7SJacky Chou
84*a20df1a7SJacky Chou      phys:
85*a20df1a7SJacky Chou        maxItems: 1
86*a20df1a7SJacky Chou
87*a20df1a7SJacky Chou    required:
88*a20df1a7SJacky Chou      - resets
89*a20df1a7SJacky Chou      - reset-names
90*a20df1a7SJacky Chou      - clocks
91*a20df1a7SJacky Chou      - phys
92*a20df1a7SJacky Chou      - ranges
93*a20df1a7SJacky Chou
94*a20df1a7SJacky Chou    unevaluatedProperties: false
95*a20df1a7SJacky Chou
96*a20df1a7SJacky ChouallOf:
97*a20df1a7SJacky Chou  - $ref: /schemas/pci/pci-host-bridge.yaml#
98*a20df1a7SJacky Chou  - $ref: /schemas/interrupt-controller/msi-controller.yaml#
99*a20df1a7SJacky Chou  - if:
100*a20df1a7SJacky Chou      properties:
101*a20df1a7SJacky Chou        compatible:
102*a20df1a7SJacky Chou          contains:
103*a20df1a7SJacky Chou            const: aspeed,ast2600-pcie
104*a20df1a7SJacky Chou    then:
105*a20df1a7SJacky Chou      required:
106*a20df1a7SJacky Chou        - aspeed,ahbc
107*a20df1a7SJacky Chou    else:
108*a20df1a7SJacky Chou      properties:
109*a20df1a7SJacky Chou        aspeed,ahbc: false
110*a20df1a7SJacky Chou  - if:
111*a20df1a7SJacky Chou      properties:
112*a20df1a7SJacky Chou        compatible:
113*a20df1a7SJacky Chou          contains:
114*a20df1a7SJacky Chou            const: aspeed,ast2700-pcie
115*a20df1a7SJacky Chou    then:
116*a20df1a7SJacky Chou      required:
117*a20df1a7SJacky Chou        - aspeed,pciecfg
118*a20df1a7SJacky Chou    else:
119*a20df1a7SJacky Chou      properties:
120*a20df1a7SJacky Chou        aspeed,pciecfg: false
121*a20df1a7SJacky Chou
122*a20df1a7SJacky Chourequired:
123*a20df1a7SJacky Chou  - reg
124*a20df1a7SJacky Chou  - interrupts
125*a20df1a7SJacky Chou  - bus-range
126*a20df1a7SJacky Chou  - ranges
127*a20df1a7SJacky Chou  - resets
128*a20df1a7SJacky Chou  - reset-names
129*a20df1a7SJacky Chou  - msi-controller
130*a20df1a7SJacky Chou  - interrupt-controller
131*a20df1a7SJacky Chou  - interrupt-map-mask
132*a20df1a7SJacky Chou  - interrupt-map
133*a20df1a7SJacky Chou
134*a20df1a7SJacky ChouunevaluatedProperties: false
135*a20df1a7SJacky Chou
136*a20df1a7SJacky Chouexamples:
137*a20df1a7SJacky Chou  - |
138*a20df1a7SJacky Chou    #include <dt-bindings/interrupt-controller/arm-gic.h>
139*a20df1a7SJacky Chou    #include <dt-bindings/clock/ast2600-clock.h>
140*a20df1a7SJacky Chou
141*a20df1a7SJacky Chou    pcie0: pcie@1e770000 {
142*a20df1a7SJacky Chou      compatible = "aspeed,ast2600-pcie";
143*a20df1a7SJacky Chou      device_type = "pci";
144*a20df1a7SJacky Chou      reg = <0x1e770000 0x100>;
145*a20df1a7SJacky Chou      #address-cells = <3>;
146*a20df1a7SJacky Chou      #size-cells = <2>;
147*a20df1a7SJacky Chou      interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
148*a20df1a7SJacky Chou      bus-range = <0x00 0xff>;
149*a20df1a7SJacky Chou
150*a20df1a7SJacky Chou      ranges = <0x01000000 0x0 0x00018000 0x00018000 0x0 0x00008000
151*a20df1a7SJacky Chou                0x02000000 0x0 0x60000000 0x60000000 0x0 0x20000000>;
152*a20df1a7SJacky Chou
153*a20df1a7SJacky Chou      resets = <&syscon ASPEED_RESET_H2X>;
154*a20df1a7SJacky Chou      reset-names = "h2x";
155*a20df1a7SJacky Chou
156*a20df1a7SJacky Chou      #interrupt-cells = <1>;
157*a20df1a7SJacky Chou      msi-controller;
158*a20df1a7SJacky Chou
159*a20df1a7SJacky Chou      aspeed,ahbc = <&ahbc>;
160*a20df1a7SJacky Chou
161*a20df1a7SJacky Chou      interrupt-controller;
162*a20df1a7SJacky Chou      interrupt-map-mask = <0 0 0 7>;
163*a20df1a7SJacky Chou      interrupt-map = <0 0 0 1 &pcie0 0>,
164*a20df1a7SJacky Chou                      <0 0 0 2 &pcie0 1>,
165*a20df1a7SJacky Chou                      <0 0 0 3 &pcie0 2>,
166*a20df1a7SJacky Chou                      <0 0 0 4 &pcie0 3>;
167*a20df1a7SJacky Chou
168*a20df1a7SJacky Chou      pcie@8,0 {
169*a20df1a7SJacky Chou        compatible = "pciclass,0604";
170*a20df1a7SJacky Chou        reg = <0x00004000 0 0 0 0>;
171*a20df1a7SJacky Chou        #address-cells = <3>;
172*a20df1a7SJacky Chou        #size-cells = <2>;
173*a20df1a7SJacky Chou        device_type = "pci";
174*a20df1a7SJacky Chou        resets = <&syscon ASPEED_RESET_PCIE_RC_O>;
175*a20df1a7SJacky Chou        reset-names = "perst";
176*a20df1a7SJacky Chou        clocks = <&syscon ASPEED_CLK_GATE_BCLK>;
177*a20df1a7SJacky Chou        pinctrl-names = "default";
178*a20df1a7SJacky Chou        pinctrl-0 = <&pinctrl_pcierc1_default>;
179*a20df1a7SJacky Chou        phys = <&pcie_phy1>;
180*a20df1a7SJacky Chou        ranges;
181*a20df1a7SJacky Chou      };
182*a20df1a7SJacky Chou    };
183