1*55aeda95SMatthew Leung# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*55aeda95SMatthew Leung%YAML 1.2 3*55aeda95SMatthew Leung--- 4*55aeda95SMatthew Leung$id: http://devicetree.org/schemas/pci/qcom,hawi-pcie.yaml# 5*55aeda95SMatthew Leung$schema: http://devicetree.org/meta-schemas/core.yaml# 6*55aeda95SMatthew Leung 7*55aeda95SMatthew Leungtitle: Qualcomm Hawi PCI Express Root Complex 8*55aeda95SMatthew Leung 9*55aeda95SMatthew Leungmaintainers: 10*55aeda95SMatthew Leung - Bjorn Andersson <andersson@kernel.org> 11*55aeda95SMatthew Leung - Manivannan Sadhasivam <mani@kernel.org> 12*55aeda95SMatthew Leung 13*55aeda95SMatthew Leungdescription: 14*55aeda95SMatthew Leung Qualcomm Hawi SoC (and compatible) PCIe root complex controller is based on 15*55aeda95SMatthew Leung the Synopsys DesignWare PCIe IP. 16*55aeda95SMatthew Leung 17*55aeda95SMatthew Leungproperties: 18*55aeda95SMatthew Leung compatible: 19*55aeda95SMatthew Leung oneOf: 20*55aeda95SMatthew Leung - const: qcom,hawi-pcie 21*55aeda95SMatthew Leung - items: 22*55aeda95SMatthew Leung - enum: 23*55aeda95SMatthew Leung - qcom,maili-pcie 24*55aeda95SMatthew Leung - const: qcom,hawi-pcie 25*55aeda95SMatthew Leung 26*55aeda95SMatthew Leung reg: 27*55aeda95SMatthew Leung items: 28*55aeda95SMatthew Leung - description: Qualcomm specific registers 29*55aeda95SMatthew Leung - description: DesignWare PCIe registers 30*55aeda95SMatthew Leung - description: External local bus interface registers 31*55aeda95SMatthew Leung - description: ATU address space 32*55aeda95SMatthew Leung - description: PCIe configuration space 33*55aeda95SMatthew Leung - description: MHI registers 34*55aeda95SMatthew Leung 35*55aeda95SMatthew Leung reg-names: 36*55aeda95SMatthew Leung items: 37*55aeda95SMatthew Leung - const: parf 38*55aeda95SMatthew Leung - const: dbi 39*55aeda95SMatthew Leung - const: elbi 40*55aeda95SMatthew Leung - const: atu 41*55aeda95SMatthew Leung - const: config 42*55aeda95SMatthew Leung - const: mhi 43*55aeda95SMatthew Leung 44*55aeda95SMatthew Leung clocks: 45*55aeda95SMatthew Leung items: 46*55aeda95SMatthew Leung - description: PCIe Auxiliary clock 47*55aeda95SMatthew Leung - description: PCIe Configuration clock 48*55aeda95SMatthew Leung - description: PCIe Master AXI clock 49*55aeda95SMatthew Leung - description: PCIe Slave AXI clock 50*55aeda95SMatthew Leung - description: PCIe Slave Q2A AXI clock 51*55aeda95SMatthew Leung - description: PCIe Aggre NoC AXI clock 52*55aeda95SMatthew Leung - description: PCIe Config NoC AXI clock 53*55aeda95SMatthew Leung 54*55aeda95SMatthew Leung clock-names: 55*55aeda95SMatthew Leung items: 56*55aeda95SMatthew Leung - const: aux 57*55aeda95SMatthew Leung - const: cfg 58*55aeda95SMatthew Leung - const: bus_master 59*55aeda95SMatthew Leung - const: bus_slave 60*55aeda95SMatthew Leung - const: slave_q2a 61*55aeda95SMatthew Leung - const: noc_aggr 62*55aeda95SMatthew Leung - const: cnoc_sf_axi 63*55aeda95SMatthew Leung 64*55aeda95SMatthew Leung interrupts: 65*55aeda95SMatthew Leung minItems: 9 66*55aeda95SMatthew Leung maxItems: 9 67*55aeda95SMatthew Leung 68*55aeda95SMatthew Leung interrupt-names: 69*55aeda95SMatthew Leung items: 70*55aeda95SMatthew Leung - const: msi0 71*55aeda95SMatthew Leung - const: msi1 72*55aeda95SMatthew Leung - const: msi2 73*55aeda95SMatthew Leung - const: msi3 74*55aeda95SMatthew Leung - const: msi4 75*55aeda95SMatthew Leung - const: msi5 76*55aeda95SMatthew Leung - const: msi6 77*55aeda95SMatthew Leung - const: msi7 78*55aeda95SMatthew Leung - const: global 79*55aeda95SMatthew Leung 80*55aeda95SMatthew Leung resets: 81*55aeda95SMatthew Leung items: 82*55aeda95SMatthew Leung - description: PCIe core reset 83*55aeda95SMatthew Leung - description: PCIe link down reset 84*55aeda95SMatthew Leung 85*55aeda95SMatthew Leung reset-names: 86*55aeda95SMatthew Leung items: 87*55aeda95SMatthew Leung - const: pci 88*55aeda95SMatthew Leung - const: link_down 89*55aeda95SMatthew Leung 90*55aeda95SMatthew Leungrequired: 91*55aeda95SMatthew Leung - power-domains 92*55aeda95SMatthew Leung - resets 93*55aeda95SMatthew Leung - reset-names 94*55aeda95SMatthew Leung 95*55aeda95SMatthew LeungallOf: 96*55aeda95SMatthew Leung - $ref: qcom,pcie-common.yaml# 97*55aeda95SMatthew Leung 98*55aeda95SMatthew LeungunevaluatedProperties: false 99*55aeda95SMatthew Leung 100*55aeda95SMatthew Leungexamples: 101*55aeda95SMatthew Leung - | 102*55aeda95SMatthew Leung #include <dt-bindings/gpio/gpio.h> 103*55aeda95SMatthew Leung #include <dt-bindings/interconnect/qcom,icc.h> 104*55aeda95SMatthew Leung #include <dt-bindings/interrupt-controller/arm-gic.h> 105*55aeda95SMatthew Leung 106*55aeda95SMatthew Leung soc { 107*55aeda95SMatthew Leung #address-cells = <2>; 108*55aeda95SMatthew Leung #size-cells = <2>; 109*55aeda95SMatthew Leung 110*55aeda95SMatthew Leung pcie@1c00000 { 111*55aeda95SMatthew Leung compatible = "qcom,hawi-pcie"; 112*55aeda95SMatthew Leung reg = <0 0x01c00000 0 0x3000>, 113*55aeda95SMatthew Leung <0 0x40000000 0 0xf1d>, 114*55aeda95SMatthew Leung <0 0x40000f20 0 0xa8>, 115*55aeda95SMatthew Leung <0 0x40001000 0 0x1000>, 116*55aeda95SMatthew Leung <0 0x40100000 0 0x100000>, 117*55aeda95SMatthew Leung <0 0x01c03000 0 0x1000>; 118*55aeda95SMatthew Leung reg-names = "parf", "dbi", "elbi", "atu", "config", "mhi"; 119*55aeda95SMatthew Leung ranges = <0x01000000 0x0 0x00000000 0x0 0x40200000 0x0 0x100000>, 120*55aeda95SMatthew Leung <0x02000000 0x0 0x40300000 0x0 0x40300000 0x0 0x3d00000>; 121*55aeda95SMatthew Leung 122*55aeda95SMatthew Leung bus-range = <0x00 0xff>; 123*55aeda95SMatthew Leung device_type = "pci"; 124*55aeda95SMatthew Leung linux,pci-domain = <0>; 125*55aeda95SMatthew Leung num-lanes = <2>; 126*55aeda95SMatthew Leung 127*55aeda95SMatthew Leung #address-cells = <3>; 128*55aeda95SMatthew Leung #size-cells = <2>; 129*55aeda95SMatthew Leung 130*55aeda95SMatthew Leung clocks = <&gcc_pcie_0_aux_clk>, 131*55aeda95SMatthew Leung <&gcc_pcie_0_cfg_ahb_clk>, 132*55aeda95SMatthew Leung <&gcc_pcie_0_mstr_axi_clk>, 133*55aeda95SMatthew Leung <&gcc_pcie_0_slv_axi_clk>, 134*55aeda95SMatthew Leung <&gcc_pcie_0_slv_q2a_axi_clk>, 135*55aeda95SMatthew Leung <&gcc_aggre_noc_pcie_axi_clk>, 136*55aeda95SMatthew Leung <&gcc_cnoc_pcie_sf_axi_clk>; 137*55aeda95SMatthew Leung clock-names = "aux", 138*55aeda95SMatthew Leung "cfg", 139*55aeda95SMatthew Leung "bus_master", 140*55aeda95SMatthew Leung "bus_slave", 141*55aeda95SMatthew Leung "slave_q2a", 142*55aeda95SMatthew Leung "noc_aggr", 143*55aeda95SMatthew Leung "cnoc_sf_axi"; 144*55aeda95SMatthew Leung 145*55aeda95SMatthew Leung dma-coherent; 146*55aeda95SMatthew Leung 147*55aeda95SMatthew Leung interrupts = <GIC_ESPI 205 IRQ_TYPE_LEVEL_HIGH>, 148*55aeda95SMatthew Leung <GIC_ESPI 206 IRQ_TYPE_LEVEL_HIGH>, 149*55aeda95SMatthew Leung <GIC_ESPI 207 IRQ_TYPE_LEVEL_HIGH>, 150*55aeda95SMatthew Leung <GIC_ESPI 208 IRQ_TYPE_LEVEL_HIGH>, 151*55aeda95SMatthew Leung <GIC_ESPI 209 IRQ_TYPE_LEVEL_HIGH>, 152*55aeda95SMatthew Leung <GIC_ESPI 210 IRQ_TYPE_LEVEL_HIGH>, 153*55aeda95SMatthew Leung <GIC_ESPI 211 IRQ_TYPE_LEVEL_HIGH>, 154*55aeda95SMatthew Leung <GIC_ESPI 212 IRQ_TYPE_LEVEL_HIGH>, 155*55aeda95SMatthew Leung <GIC_ESPI 204 IRQ_TYPE_LEVEL_HIGH>; 156*55aeda95SMatthew Leung interrupt-names = "msi0", "msi1", "msi2", "msi3", 157*55aeda95SMatthew Leung "msi4", "msi5", "msi6", "msi7", "global"; 158*55aeda95SMatthew Leung #interrupt-cells = <1>; 159*55aeda95SMatthew Leung interrupt-map-mask = <0 0 0 0x7>; 160*55aeda95SMatthew Leung interrupt-map = <0 0 0 1 &intc 0 0 GIC_ESPI 213 IRQ_TYPE_LEVEL_HIGH>, /* int_a */ 161*55aeda95SMatthew Leung <0 0 0 2 &intc 0 0 GIC_ESPI 214 IRQ_TYPE_LEVEL_HIGH>, /* int_b */ 162*55aeda95SMatthew Leung <0 0 0 3 &intc 0 0 GIC_ESPI 215 IRQ_TYPE_LEVEL_HIGH>, /* int_c */ 163*55aeda95SMatthew Leung <0 0 0 4 &intc 0 0 GIC_ESPI 216 IRQ_TYPE_LEVEL_HIGH>; /* int_d */ 164*55aeda95SMatthew Leung 165*55aeda95SMatthew Leung interconnects = <&pcie_anoc_master_pcie_0 QCOM_ICC_TAG_ALWAYS 166*55aeda95SMatthew Leung &mc_virt_slave_ebi1 QCOM_ICC_TAG_ALWAYS>, 167*55aeda95SMatthew Leung <&gem_noc_master_appss_proc QCOM_ICC_TAG_ACTIVE_ONLY 168*55aeda95SMatthew Leung &cnoc_main_slave_pcie_0 QCOM_ICC_TAG_ACTIVE_ONLY>; 169*55aeda95SMatthew Leung interconnect-names = "pcie-mem", "cpu-pcie"; 170*55aeda95SMatthew Leung 171*55aeda95SMatthew Leung iommu-map = <0x0 &apps_smmu 0x1000 0x1>, 172*55aeda95SMatthew Leung <0x100 &apps_smmu 0x1001 0x1>; 173*55aeda95SMatthew Leung 174*55aeda95SMatthew Leung pinctrl-0 = <&pcie0_default_state>; 175*55aeda95SMatthew Leung pinctrl-names = "default"; 176*55aeda95SMatthew Leung 177*55aeda95SMatthew Leung power-domains = <&gcc_pcie_0_phy_gdsc>; 178*55aeda95SMatthew Leung 179*55aeda95SMatthew Leung resets = <&gcc_pcie_0_bcr>, 180*55aeda95SMatthew Leung <&gcc_pcie_0_link_down_bcr>; 181*55aeda95SMatthew Leung reset-names = "pci", "link_down"; 182*55aeda95SMatthew Leung 183*55aeda95SMatthew Leung msi-map = <0x0 &gic_its 0x1000 0x1>, 184*55aeda95SMatthew Leung <0x100 &gic_its 0x1001 0x1>; 185*55aeda95SMatthew Leung msi-map-mask = <0xff00>; 186*55aeda95SMatthew Leung 187*55aeda95SMatthew Leung pcie@0 { 188*55aeda95SMatthew Leung device_type = "pci"; 189*55aeda95SMatthew Leung reg = <0x0 0x0 0x0 0x0 0x0>; 190*55aeda95SMatthew Leung bus-range = <0x01 0xff>; 191*55aeda95SMatthew Leung 192*55aeda95SMatthew Leung #address-cells = <3>; 193*55aeda95SMatthew Leung #size-cells = <2>; 194*55aeda95SMatthew Leung ranges; 195*55aeda95SMatthew Leung 196*55aeda95SMatthew Leung phys = <&pcie0_phy>; 197*55aeda95SMatthew Leung wake-gpios = <&tlmm 104 GPIO_ACTIVE_HIGH>; 198*55aeda95SMatthew Leung reset-gpios = <&tlmm 102 GPIO_ACTIVE_LOW>; 199*55aeda95SMatthew Leung }; 200*55aeda95SMatthew Leung }; 201*55aeda95SMatthew Leung }; 202