xref: /linux/Documentation/devicetree/bindings/pci/hisilicon,kirin-pcie.yaml (revision 3a39d672e7f48b8d6b91a09afa4b55352773b4b5)
178e29356SMauro Carvalho Chehab# SPDX-License-Identifier: GPL-2.0
278e29356SMauro Carvalho Chehab%YAML 1.2
378e29356SMauro Carvalho Chehab---
478e29356SMauro Carvalho Chehab$id: http://devicetree.org/schemas/pci/hisilicon,kirin-pcie.yaml#
578e29356SMauro Carvalho Chehab$schema: http://devicetree.org/meta-schemas/core.yaml#
678e29356SMauro Carvalho Chehab
778e29356SMauro Carvalho Chehabtitle: HiSilicon Kirin SoCs PCIe host DT description
878e29356SMauro Carvalho Chehab
978e29356SMauro Carvalho Chehabmaintainers:
1078e29356SMauro Carvalho Chehab  - Xiaowei Song <songxiaowei@hisilicon.com>
1178e29356SMauro Carvalho Chehab  - Binghui Wang <wangbinghui@hisilicon.com>
1278e29356SMauro Carvalho Chehab
1378e29356SMauro Carvalho Chehabdescription: |
1478e29356SMauro Carvalho Chehab  Kirin PCIe host controller is based on the Synopsys DesignWare PCI core.
1578e29356SMauro Carvalho Chehab  It shares common functions with the PCIe DesignWare core driver and
1678e29356SMauro Carvalho Chehab  inherits common properties defined in
1778e29356SMauro Carvalho Chehab  Documentation/devicetree/bindings/pci/snps,dw-pcie.yaml.
1878e29356SMauro Carvalho Chehab
1978e29356SMauro Carvalho ChehaballOf:
2078e29356SMauro Carvalho Chehab  - $ref: /schemas/pci/snps,dw-pcie.yaml#
2178e29356SMauro Carvalho Chehab
2278e29356SMauro Carvalho Chehabproperties:
2378e29356SMauro Carvalho Chehab  compatible:
2478e29356SMauro Carvalho Chehab    contains:
2578e29356SMauro Carvalho Chehab      enum:
2678e29356SMauro Carvalho Chehab        - hisilicon,kirin960-pcie
27cfcf126fSMauro Carvalho Chehab        - hisilicon,kirin970-pcie
2878e29356SMauro Carvalho Chehab
2978e29356SMauro Carvalho Chehab  reg:
3078e29356SMauro Carvalho Chehab    description: |
3178e29356SMauro Carvalho Chehab      Should contain dbi, apb, config registers location and length.
32cfcf126fSMauro Carvalho Chehab      For hisilicon,kirin960-pcie, it should also contain phy.
3378e29356SMauro Carvalho Chehab    minItems: 3
3478e29356SMauro Carvalho Chehab    maxItems: 4
3578e29356SMauro Carvalho Chehab
3678e29356SMauro Carvalho Chehab  reg-names:
3778e29356SMauro Carvalho Chehab    minItems: 3
3878e29356SMauro Carvalho Chehab    maxItems: 4
3978e29356SMauro Carvalho Chehab
40*ac44be21SKrzysztof Kozlowski  clocks:
41*ac44be21SKrzysztof Kozlowski    maxItems: 5
42b92225b0SRob Herring
43b92225b0SRob Herring  clock-names:
44b92225b0SRob Herring    items:
45b92225b0SRob Herring      - const: pcie_phy_ref
46b92225b0SRob Herring      - const: pcie_aux
47b92225b0SRob Herring      - const: pcie_apb_phy
48b92225b0SRob Herring      - const: pcie_apb_sys
49b92225b0SRob Herring      - const: pcie_aclk
50b92225b0SRob Herring
51b92225b0SRob Herring  phys:
52b92225b0SRob Herring    maxItems: 1
53b92225b0SRob Herring
54cfcf126fSMauro Carvalho Chehab  hisilicon,clken-gpios:
55cfcf126fSMauro Carvalho Chehab    description: |
56cfcf126fSMauro Carvalho Chehab      Clock input enablement GPIOs from PCI devices like Ethernet, M.2 and
57cfcf126fSMauro Carvalho Chehab      mini-PCIe slots.
58cfcf126fSMauro Carvalho Chehab
5978e29356SMauro Carvalho Chehabrequired:
6078e29356SMauro Carvalho Chehab  - compatible
6178e29356SMauro Carvalho Chehab  - reg
6278e29356SMauro Carvalho Chehab  - reg-names
6378e29356SMauro Carvalho Chehab
6478e29356SMauro Carvalho ChehabunevaluatedProperties: false
6578e29356SMauro Carvalho Chehab
6678e29356SMauro Carvalho Chehabexamples:
6778e29356SMauro Carvalho Chehab  - |
6878e29356SMauro Carvalho Chehab    #include <dt-bindings/interrupt-controller/arm-gic.h>
6978e29356SMauro Carvalho Chehab    #include <dt-bindings/clock/hi3660-clock.h>
70cfcf126fSMauro Carvalho Chehab    #include <dt-bindings/clock/hi3670-clock.h>
7178e29356SMauro Carvalho Chehab
7278e29356SMauro Carvalho Chehab    soc {
7378e29356SMauro Carvalho Chehab      #address-cells = <2>;
7478e29356SMauro Carvalho Chehab      #size-cells = <2>;
7578e29356SMauro Carvalho Chehab
7678e29356SMauro Carvalho Chehab      pcie@f4000000 {
7778e29356SMauro Carvalho Chehab        compatible = "hisilicon,kirin960-pcie";
7878e29356SMauro Carvalho Chehab        reg = <0x0 0xf4000000 0x0 0x1000>,
7978e29356SMauro Carvalho Chehab              <0x0 0xff3fe000 0x0 0x1000>,
8078e29356SMauro Carvalho Chehab              <0x0 0xf3f20000 0x0 0x40000>,
8178e29356SMauro Carvalho Chehab              <0x0 0xf5000000 0x0 0x2000>;
8278e29356SMauro Carvalho Chehab        reg-names = "dbi", "apb", "phy", "config";
8378e29356SMauro Carvalho Chehab        bus-range = <0x0  0xff>;
8478e29356SMauro Carvalho Chehab        #address-cells = <3>;
8578e29356SMauro Carvalho Chehab        #size-cells = <2>;
8678e29356SMauro Carvalho Chehab        device_type = "pci";
8778e29356SMauro Carvalho Chehab        ranges = <0x02000000 0x0 0x00000000
8878e29356SMauro Carvalho Chehab                  0x0 0xf6000000
8978e29356SMauro Carvalho Chehab                  0x0 0x02000000>;
9078e29356SMauro Carvalho Chehab        num-lanes = <1>;
9178e29356SMauro Carvalho Chehab        #interrupt-cells = <1>;
9278e29356SMauro Carvalho Chehab        interrupts = <0 283 4>;
9378e29356SMauro Carvalho Chehab        interrupt-names = "msi";
9478e29356SMauro Carvalho Chehab        interrupt-map-mask = <0xf800 0 0 7>;
9578e29356SMauro Carvalho Chehab        interrupt-map = <0x0 0 0 1 &gic GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>,
9678e29356SMauro Carvalho Chehab                        <0x0 0 0 2 &gic GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>,
9778e29356SMauro Carvalho Chehab                        <0x0 0 0 3 &gic GIC_SPI 284 IRQ_TYPE_LEVEL_HIGH>,
9878e29356SMauro Carvalho Chehab                        <0x0 0 0 4 &gic GIC_SPI 285 IRQ_TYPE_LEVEL_HIGH>;
9978e29356SMauro Carvalho Chehab        clocks = <&crg_ctrl HI3660_PCIEPHY_REF>,
10078e29356SMauro Carvalho Chehab                 <&crg_ctrl HI3660_CLK_GATE_PCIEAUX>,
10178e29356SMauro Carvalho Chehab                 <&crg_ctrl HI3660_PCLK_GATE_PCIE_PHY>,
10278e29356SMauro Carvalho Chehab                 <&crg_ctrl HI3660_PCLK_GATE_PCIE_SYS>,
10378e29356SMauro Carvalho Chehab                 <&crg_ctrl HI3660_ACLK_GATE_PCIE>;
10478e29356SMauro Carvalho Chehab        clock-names = "pcie_phy_ref", "pcie_aux", "pcie_apb_phy",
10578e29356SMauro Carvalho Chehab                      "pcie_apb_sys", "pcie_aclk";
10678e29356SMauro Carvalho Chehab      };
107cfcf126fSMauro Carvalho Chehab
108cfcf126fSMauro Carvalho Chehab      pcie@f5000000 {
109cfcf126fSMauro Carvalho Chehab        compatible = "hisilicon,kirin970-pcie";
110cfcf126fSMauro Carvalho Chehab        reg = <0x0 0xf4000000 0x0 0x1000000>,
111cfcf126fSMauro Carvalho Chehab              <0x0 0xfc180000 0x0 0x1000>,
112cfcf126fSMauro Carvalho Chehab              <0x0 0xf5000000 0x0 0x2000>;
113cfcf126fSMauro Carvalho Chehab        reg-names = "dbi", "apb", "config";
114cfcf126fSMauro Carvalho Chehab        bus-range = <0x0  0xff>;
115cfcf126fSMauro Carvalho Chehab        #address-cells = <3>;
116cfcf126fSMauro Carvalho Chehab        #size-cells = <2>;
117cfcf126fSMauro Carvalho Chehab        device_type = "pci";
118cfcf126fSMauro Carvalho Chehab        phys = <&pcie_phy>;
119cfcf126fSMauro Carvalho Chehab        ranges = <0x02000000 0x0 0x00000000
120cfcf126fSMauro Carvalho Chehab                  0x0 0xf6000000
121cfcf126fSMauro Carvalho Chehab                  0x0 0x02000000>;
122cfcf126fSMauro Carvalho Chehab        num-lanes = <1>;
123cfcf126fSMauro Carvalho Chehab        #interrupt-cells = <1>;
124cfcf126fSMauro Carvalho Chehab        interrupts = <GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>;
125cfcf126fSMauro Carvalho Chehab        interrupt-names = "msi";
126cfcf126fSMauro Carvalho Chehab        interrupt-map-mask = <0 0 0 7>;
127cfcf126fSMauro Carvalho Chehab        interrupt-map = <0x0 0 0 1 &gic GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>,
128cfcf126fSMauro Carvalho Chehab                        <0x0 0 0 2 &gic GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>,
129cfcf126fSMauro Carvalho Chehab                        <0x0 0 0 3 &gic GIC_SPI 284 IRQ_TYPE_LEVEL_HIGH>,
130cfcf126fSMauro Carvalho Chehab                        <0x0 0 0 4 &gic GIC_SPI 285 IRQ_TYPE_LEVEL_HIGH>;
131cfcf126fSMauro Carvalho Chehab        reset-gpios = <&gpio7 0 0>;
132cfcf126fSMauro Carvalho Chehab        hisilicon,clken-gpios = <&gpio27 3 0>, <&gpio17 0 0>, <&gpio20 6 0>;
133cfcf126fSMauro Carvalho Chehab        pcie@0,0 { // Lane 0: PCIe switch: Bus 1, Device 0
134cfcf126fSMauro Carvalho Chehab          reg = <0 0 0 0 0>;
135cfcf126fSMauro Carvalho Chehab          compatible = "pciclass,0604";
136cfcf126fSMauro Carvalho Chehab          device_type = "pci";
137cfcf126fSMauro Carvalho Chehab          #address-cells = <3>;
138cfcf126fSMauro Carvalho Chehab          #size-cells = <2>;
139cfcf126fSMauro Carvalho Chehab          ranges;
140cfcf126fSMauro Carvalho Chehab
141cfcf126fSMauro Carvalho Chehab          pcie@0,0 { // Lane 0: upstream
142cfcf126fSMauro Carvalho Chehab            reg = <0 0 0 0 0>;
143cfcf126fSMauro Carvalho Chehab            compatible = "pciclass,0604";
144cfcf126fSMauro Carvalho Chehab            device_type = "pci";
145cfcf126fSMauro Carvalho Chehab            #address-cells = <3>;
146cfcf126fSMauro Carvalho Chehab            #size-cells = <2>;
147cfcf126fSMauro Carvalho Chehab            ranges;
148cfcf126fSMauro Carvalho Chehab
149cfcf126fSMauro Carvalho Chehab            pcie@1,0 { // Lane 4: M.2
150cfcf126fSMauro Carvalho Chehab              reg = <0x0800 0 0 0 0>;
151cfcf126fSMauro Carvalho Chehab              compatible = "pciclass,0604";
152cfcf126fSMauro Carvalho Chehab              device_type = "pci";
153cfcf126fSMauro Carvalho Chehab              reset-gpios = <&gpio3 1 0>;
154cfcf126fSMauro Carvalho Chehab              #address-cells = <3>;
155cfcf126fSMauro Carvalho Chehab              #size-cells = <2>;
156cfcf126fSMauro Carvalho Chehab              ranges;
157cfcf126fSMauro Carvalho Chehab            };
158cfcf126fSMauro Carvalho Chehab
159cfcf126fSMauro Carvalho Chehab            pcie@5,0 { // Lane 5: Mini PCIe
160cfcf126fSMauro Carvalho Chehab              reg = <0x2800 0 0 0 0>;
161cfcf126fSMauro Carvalho Chehab              compatible = "pciclass,0604";
162cfcf126fSMauro Carvalho Chehab              device_type = "pci";
163cfcf126fSMauro Carvalho Chehab              reset-gpios = <&gpio27 4 0 >;
164cfcf126fSMauro Carvalho Chehab              #address-cells = <3>;
165cfcf126fSMauro Carvalho Chehab              #size-cells = <2>;
166cfcf126fSMauro Carvalho Chehab              ranges;
167cfcf126fSMauro Carvalho Chehab            };
168cfcf126fSMauro Carvalho Chehab
169cfcf126fSMauro Carvalho Chehab            pcie@7,0 { // Lane 6: Ethernet
170cfcf126fSMauro Carvalho Chehab              reg = <0x03800 0 0 0 0>;
171cfcf126fSMauro Carvalho Chehab              compatible = "pciclass,0604";
172cfcf126fSMauro Carvalho Chehab              device_type = "pci";
173cfcf126fSMauro Carvalho Chehab              reset-gpios = <&gpio25 2 0 >;
174cfcf126fSMauro Carvalho Chehab              #address-cells = <3>;
175cfcf126fSMauro Carvalho Chehab              #size-cells = <2>;
176cfcf126fSMauro Carvalho Chehab              ranges;
177cfcf126fSMauro Carvalho Chehab            };
178cfcf126fSMauro Carvalho Chehab          };
179cfcf126fSMauro Carvalho Chehab        };
180cfcf126fSMauro Carvalho Chehab      };
18178e29356SMauro Carvalho Chehab    };
182