xref: /linux/Documentation/devicetree/bindings/pci/qcom,pcie-qcs404.yaml (revision c17ee635fd3a482b2ad2bf5e269755c2eae5f25e)
1*78aa7d0dSKrzysztof Kozlowski# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*78aa7d0dSKrzysztof Kozlowski%YAML 1.2
3*78aa7d0dSKrzysztof Kozlowski---
4*78aa7d0dSKrzysztof Kozlowski$id: http://devicetree.org/schemas/pci/qcom,pcie-qcs404.yaml#
5*78aa7d0dSKrzysztof Kozlowski$schema: http://devicetree.org/meta-schemas/core.yaml#
6*78aa7d0dSKrzysztof Kozlowski
7*78aa7d0dSKrzysztof Kozlowskititle: Qualcomm QCS404 PCI Express Root Complex
8*78aa7d0dSKrzysztof Kozlowski
9*78aa7d0dSKrzysztof Kozlowskimaintainers:
10*78aa7d0dSKrzysztof Kozlowski  - Bjorn Andersson <andersson@kernel.org>
11*78aa7d0dSKrzysztof Kozlowski  - Manivannan Sadhasivam <mani@kernel.org>
12*78aa7d0dSKrzysztof Kozlowski
13*78aa7d0dSKrzysztof Kozlowskiproperties:
14*78aa7d0dSKrzysztof Kozlowski  compatible:
15*78aa7d0dSKrzysztof Kozlowski    enum:
16*78aa7d0dSKrzysztof Kozlowski      - qcom,pcie-qcs404
17*78aa7d0dSKrzysztof Kozlowski
18*78aa7d0dSKrzysztof Kozlowski  reg:
19*78aa7d0dSKrzysztof Kozlowski    maxItems: 4
20*78aa7d0dSKrzysztof Kozlowski
21*78aa7d0dSKrzysztof Kozlowski  reg-names:
22*78aa7d0dSKrzysztof Kozlowski    items:
23*78aa7d0dSKrzysztof Kozlowski      - const: dbi
24*78aa7d0dSKrzysztof Kozlowski      - const: elbi
25*78aa7d0dSKrzysztof Kozlowski      - const: parf
26*78aa7d0dSKrzysztof Kozlowski      - const: config
27*78aa7d0dSKrzysztof Kozlowski
28*78aa7d0dSKrzysztof Kozlowski  clocks:
29*78aa7d0dSKrzysztof Kozlowski    maxItems: 4
30*78aa7d0dSKrzysztof Kozlowski
31*78aa7d0dSKrzysztof Kozlowski  clock-names:
32*78aa7d0dSKrzysztof Kozlowski    items:
33*78aa7d0dSKrzysztof Kozlowski      - const: iface # AHB clock
34*78aa7d0dSKrzysztof Kozlowski      - const: aux
35*78aa7d0dSKrzysztof Kozlowski      - const: master_bus # AXI Master clock
36*78aa7d0dSKrzysztof Kozlowski      - const: slave_bus # AXI Slave clock
37*78aa7d0dSKrzysztof Kozlowski
38*78aa7d0dSKrzysztof Kozlowski  interrupts:
39*78aa7d0dSKrzysztof Kozlowski    maxItems: 1
40*78aa7d0dSKrzysztof Kozlowski
41*78aa7d0dSKrzysztof Kozlowski  interrupt-names:
42*78aa7d0dSKrzysztof Kozlowski    items:
43*78aa7d0dSKrzysztof Kozlowski      - const: msi
44*78aa7d0dSKrzysztof Kozlowski
45*78aa7d0dSKrzysztof Kozlowski  resets:
46*78aa7d0dSKrzysztof Kozlowski    maxItems: 6
47*78aa7d0dSKrzysztof Kozlowski
48*78aa7d0dSKrzysztof Kozlowski  reset-names:
49*78aa7d0dSKrzysztof Kozlowski    items:
50*78aa7d0dSKrzysztof Kozlowski      - const: axi_m # AXI Master reset
51*78aa7d0dSKrzysztof Kozlowski      - const: axi_s # AXI Slave reset
52*78aa7d0dSKrzysztof Kozlowski      - const: axi_m_sticky # AXI Master Sticky reset
53*78aa7d0dSKrzysztof Kozlowski      - const: pipe_sticky
54*78aa7d0dSKrzysztof Kozlowski      - const: pwr
55*78aa7d0dSKrzysztof Kozlowski      - const: ahb
56*78aa7d0dSKrzysztof Kozlowski
57*78aa7d0dSKrzysztof Kozlowskirequired:
58*78aa7d0dSKrzysztof Kozlowski  - resets
59*78aa7d0dSKrzysztof Kozlowski  - reset-names
60*78aa7d0dSKrzysztof Kozlowski
61*78aa7d0dSKrzysztof KozlowskiallOf:
62*78aa7d0dSKrzysztof Kozlowski  - $ref: qcom,pcie-common.yaml#
63*78aa7d0dSKrzysztof Kozlowski
64*78aa7d0dSKrzysztof KozlowskiunevaluatedProperties: false
65*78aa7d0dSKrzysztof Kozlowski
66*78aa7d0dSKrzysztof Kozlowskiexamples:
67*78aa7d0dSKrzysztof Kozlowski  - |
68*78aa7d0dSKrzysztof Kozlowski    #include <dt-bindings/clock/qcom,gcc-qcs404.h>
69*78aa7d0dSKrzysztof Kozlowski    #include <dt-bindings/gpio/gpio.h>
70*78aa7d0dSKrzysztof Kozlowski    #include <dt-bindings/interrupt-controller/arm-gic.h>
71*78aa7d0dSKrzysztof Kozlowski
72*78aa7d0dSKrzysztof Kozlowski    pcie@10000000 {
73*78aa7d0dSKrzysztof Kozlowski        compatible = "qcom,pcie-qcs404";
74*78aa7d0dSKrzysztof Kozlowski        reg = <0x10000000 0xf1d>,
75*78aa7d0dSKrzysztof Kozlowski              <0x10000f20 0xa8>,
76*78aa7d0dSKrzysztof Kozlowski              <0x07780000 0x2000>,
77*78aa7d0dSKrzysztof Kozlowski              <0x10001000 0x2000>;
78*78aa7d0dSKrzysztof Kozlowski        reg-names = "dbi", "elbi", "parf", "config";
79*78aa7d0dSKrzysztof Kozlowski        ranges = <0x81000000 0x0 0x00000000 0x10003000 0x0 0x00010000>, /* I/O */
80*78aa7d0dSKrzysztof Kozlowski                 <0x82000000 0x0 0x10013000 0x10013000 0x0 0x007ed000>; /* memory */
81*78aa7d0dSKrzysztof Kozlowski
82*78aa7d0dSKrzysztof Kozlowski        device_type = "pci";
83*78aa7d0dSKrzysztof Kozlowski        linux,pci-domain = <0>;
84*78aa7d0dSKrzysztof Kozlowski        bus-range = <0x00 0xff>;
85*78aa7d0dSKrzysztof Kozlowski        num-lanes = <1>;
86*78aa7d0dSKrzysztof Kozlowski        #address-cells = <3>;
87*78aa7d0dSKrzysztof Kozlowski        #size-cells = <2>;
88*78aa7d0dSKrzysztof Kozlowski
89*78aa7d0dSKrzysztof Kozlowski        clocks = <&gcc GCC_PCIE_0_CFG_AHB_CLK>,
90*78aa7d0dSKrzysztof Kozlowski                 <&gcc GCC_PCIE_0_AUX_CLK>,
91*78aa7d0dSKrzysztof Kozlowski                 <&gcc GCC_PCIE_0_MSTR_AXI_CLK>,
92*78aa7d0dSKrzysztof Kozlowski                 <&gcc GCC_PCIE_0_SLV_AXI_CLK>;
93*78aa7d0dSKrzysztof Kozlowski        clock-names = "iface", "aux", "master_bus", "slave_bus";
94*78aa7d0dSKrzysztof Kozlowski
95*78aa7d0dSKrzysztof Kozlowski        interrupts = <GIC_SPI 266 IRQ_TYPE_LEVEL_HIGH>;
96*78aa7d0dSKrzysztof Kozlowski        interrupt-names = "msi";
97*78aa7d0dSKrzysztof Kozlowski        #interrupt-cells = <1>;
98*78aa7d0dSKrzysztof Kozlowski        interrupt-map-mask = <0 0 0 0x7>;
99*78aa7d0dSKrzysztof Kozlowski        interrupt-map = <0 0 0 1 &intc GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
100*78aa7d0dSKrzysztof Kozlowski                        <0 0 0 2 &intc GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
101*78aa7d0dSKrzysztof Kozlowski                        <0 0 0 3 &intc GIC_SPI 267 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
102*78aa7d0dSKrzysztof Kozlowski                        <0 0 0 4 &intc GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
103*78aa7d0dSKrzysztof Kozlowski
104*78aa7d0dSKrzysztof Kozlowski        phys = <&pcie_phy>;
105*78aa7d0dSKrzysztof Kozlowski        phy-names = "pciephy";
106*78aa7d0dSKrzysztof Kozlowski
107*78aa7d0dSKrzysztof Kozlowski        perst-gpios = <&tlmm 43 GPIO_ACTIVE_LOW>;
108*78aa7d0dSKrzysztof Kozlowski
109*78aa7d0dSKrzysztof Kozlowski        resets = <&gcc GCC_PCIE_0_AXI_MASTER_ARES>,
110*78aa7d0dSKrzysztof Kozlowski                 <&gcc GCC_PCIE_0_AXI_SLAVE_ARES>,
111*78aa7d0dSKrzysztof Kozlowski                 <&gcc GCC_PCIE_0_AXI_MASTER_STICKY_ARES>,
112*78aa7d0dSKrzysztof Kozlowski                 <&gcc GCC_PCIE_0_CORE_STICKY_ARES>,
113*78aa7d0dSKrzysztof Kozlowski                 <&gcc GCC_PCIE_0_BCR>,
114*78aa7d0dSKrzysztof Kozlowski                 <&gcc GCC_PCIE_0_AHB_ARES>;
115*78aa7d0dSKrzysztof Kozlowski        reset-names = "axi_m",
116*78aa7d0dSKrzysztof Kozlowski                      "axi_s",
117*78aa7d0dSKrzysztof Kozlowski                      "axi_m_sticky",
118*78aa7d0dSKrzysztof Kozlowski                      "pipe_sticky",
119*78aa7d0dSKrzysztof Kozlowski                      "pwr",
120*78aa7d0dSKrzysztof Kozlowski                      "ahb";
121*78aa7d0dSKrzysztof Kozlowski
122*78aa7d0dSKrzysztof Kozlowski        pcie@0 {
123*78aa7d0dSKrzysztof Kozlowski            device_type = "pci";
124*78aa7d0dSKrzysztof Kozlowski            reg = <0x0 0x0 0x0 0x0 0x0>;
125*78aa7d0dSKrzysztof Kozlowski            bus-range = <0x01 0xff>;
126*78aa7d0dSKrzysztof Kozlowski
127*78aa7d0dSKrzysztof Kozlowski            #address-cells = <3>;
128*78aa7d0dSKrzysztof Kozlowski            #size-cells = <2>;
129*78aa7d0dSKrzysztof Kozlowski            ranges;
130*78aa7d0dSKrzysztof Kozlowski        };
131*78aa7d0dSKrzysztof Kozlowski    };
132