1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/pci/rockchip,rk3399-pcie.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Rockchip AXI PCIe Root Port Bridge Host
8
9maintainers:
10  - Shawn Lin <shawn.lin@rock-chips.com>
11
12allOf:
13  - $ref: /schemas/pci/pci-bus.yaml#
14  - $ref: rockchip,rk3399-pcie-common.yaml#
15
16properties:
17  compatible:
18    const: rockchip,rk3399-pcie
19
20  reg: true
21
22  reg-names:
23    items:
24      - const: axi-base
25      - const: apb-base
26
27  interrupts:
28    maxItems: 3
29
30  interrupt-names:
31    items:
32      - const: sys
33      - const: legacy
34      - const: client
35
36  aspm-no-l0s:
37    description: This property is needed if using 24MHz OSC for RC's PHY.
38
39  ep-gpios:
40    maxItems: 1
41    description: pre-reset GPIO
42
43  vpcie12v-supply:
44    description: The 12v regulator to use for PCIe.
45
46  vpcie3v3-supply:
47    description: The 3.3v regulator to use for PCIe.
48
49  vpcie1v8-supply:
50    description: The 1.8v regulator to use for PCIe.
51
52  vpcie0v9-supply:
53    description: The 0.9v regulator to use for PCIe.
54
55  interrupt-controller:
56    type: object
57    additionalProperties: false
58
59    properties:
60      '#address-cells':
61        const: 0
62
63      '#interrupt-cells':
64        const: 1
65
66      interrupt-controller: true
67
68required:
69  - ranges
70  - "#interrupt-cells"
71  - interrupts
72  - interrupt-controller
73  - interrupt-map
74  - interrupt-map-mask
75  - msi-map
76
77unevaluatedProperties: false
78
79examples:
80  - |
81    #include <dt-bindings/interrupt-controller/arm-gic.h>
82    #include <dt-bindings/gpio/gpio.h>
83    #include <dt-bindings/clock/rk3399-cru.h>
84
85    bus {
86        #address-cells = <2>;
87        #size-cells = <2>;
88
89        pcie@f8000000 {
90            compatible = "rockchip,rk3399-pcie";
91            device_type = "pci";
92            #address-cells = <3>;
93            #size-cells = <2>;
94            clocks = <&cru ACLK_PCIE>, <&cru ACLK_PERF_PCIE>,
95              <&cru PCLK_PCIE>, <&cru SCLK_PCIE_PM>;
96            clock-names = "aclk", "aclk-perf",
97                    "hclk", "pm";
98            interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH 0>,
99                  <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH 0>,
100                  <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH 0>;
101            interrupt-names = "sys", "legacy", "client";
102            ep-gpios = <&gpio3 13 GPIO_ACTIVE_HIGH>;
103            ranges = <0x83000000 0x0 0xfa000000 0x0 0xfa000000 0x0 0x600000
104                0x81000000 0x0 0xfa600000 0x0 0xfa600000 0x0 0x100000>;
105            num-lanes = <4>;
106            msi-map = <0x0 &its 0x0 0x1000>;
107            reg = <0x0 0xf8000000 0x0 0x2000000>, <0x0 0xfd000000 0x0 0x1000000>;
108            reg-names = "axi-base", "apb-base";
109            resets = <&cru SRST_PCIE_CORE>, <&cru SRST_PCIE_MGMT>,
110              <&cru SRST_PCIE_MGMT_STICKY>, <&cru SRST_PCIE_PIPE> ,
111              <&cru SRST_PCIE_PM>, <&cru SRST_P_PCIE>, <&cru SRST_A_PCIE>;
112            reset-names = "core", "mgmt", "mgmt-sticky", "pipe",
113                    "pm", "pclk", "aclk";
114            /* deprecated legacy PHY model */
115            phys = <&pcie_phy>;
116            phy-names = "pcie-phy";
117            pinctrl-names = "default";
118            pinctrl-0 = <&pcie_clkreq>;
119            #interrupt-cells = <1>;
120            interrupt-map-mask = <0 0 0 7>;
121            interrupt-map = <0 0 0 1 &pcie0_intc 0>,
122                <0 0 0 2 &pcie0_intc 1>,
123                <0 0 0 3 &pcie0_intc 2>,
124                <0 0 0 4 &pcie0_intc 3>;
125
126            pcie0_intc: interrupt-controller {
127                interrupt-controller;
128                #address-cells = <0>;
129                #interrupt-cells = <1>;
130            };
131        };
132    };
133...
134