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