1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2%YAML 1.2 3--- 4$id: http://devicetree.org/schemas/pci/qcom,pcie-ep.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: Qualcomm PCIe Endpoint Controller 8 9maintainers: 10 - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> 11 12properties: 13 compatible: 14 enum: 15 - qcom,sdx55-pcie-ep 16 - qcom,sm8450-pcie-ep 17 18 reg: 19 items: 20 - description: Qualcomm-specific PARF configuration registers 21 - description: DesignWare PCIe registers 22 - description: External local bus interface registers 23 - description: Address Translation Unit (ATU) registers 24 - description: Memory region used to map remote RC address space 25 - description: BAR memory region 26 27 reg-names: 28 items: 29 - const: parf 30 - const: dbi 31 - const: elbi 32 - const: atu 33 - const: addr_space 34 - const: mmio 35 36 clocks: 37 minItems: 7 38 maxItems: 8 39 40 clock-names: 41 minItems: 7 42 maxItems: 8 43 44 qcom,perst-regs: 45 description: Reference to a syscon representing TCSR followed by the two 46 offsets within syscon for Perst enable and Perst separation 47 enable registers 48 $ref: /schemas/types.yaml#/definitions/phandle-array 49 items: 50 - items: 51 - description: Syscon to TCSR system registers 52 - description: Perst enable offset 53 - description: Perst separation enable offset 54 55 interrupts: 56 items: 57 - description: PCIe Global interrupt 58 - description: PCIe Doorbell interrupt 59 60 interrupt-names: 61 items: 62 - const: global 63 - const: doorbell 64 65 reset-gpios: 66 description: GPIO used as PERST# input signal 67 maxItems: 1 68 69 wake-gpios: 70 description: GPIO used as WAKE# output signal 71 maxItems: 1 72 73 resets: 74 maxItems: 1 75 76 reset-names: 77 const: core 78 79 power-domains: 80 maxItems: 1 81 82 phys: 83 maxItems: 1 84 85 phy-names: 86 const: pciephy 87 88 num-lanes: 89 default: 2 90 91required: 92 - compatible 93 - reg 94 - reg-names 95 - clocks 96 - clock-names 97 - interrupts 98 - interrupt-names 99 - reset-gpios 100 - resets 101 - reset-names 102 - power-domains 103 104allOf: 105 - $ref: pci-ep.yaml# 106 - if: 107 properties: 108 compatible: 109 contains: 110 enum: 111 - qcom,sdx55-pcie-ep 112 then: 113 properties: 114 clocks: 115 items: 116 - description: PCIe Auxiliary clock 117 - description: PCIe CFG AHB clock 118 - description: PCIe Master AXI clock 119 - description: PCIe Slave AXI clock 120 - description: PCIe Slave Q2A AXI clock 121 - description: PCIe Sleep clock 122 - description: PCIe Reference clock 123 clock-names: 124 items: 125 - const: aux 126 - const: cfg 127 - const: bus_master 128 - const: bus_slave 129 - const: slave_q2a 130 - const: sleep 131 - const: ref 132 133 - if: 134 properties: 135 compatible: 136 contains: 137 enum: 138 - qcom,sm8450-pcie-ep 139 then: 140 properties: 141 clocks: 142 items: 143 - description: PCIe Auxiliary clock 144 - description: PCIe CFG AHB clock 145 - description: PCIe Master AXI clock 146 - description: PCIe Slave AXI clock 147 - description: PCIe Slave Q2A AXI clock 148 - description: PCIe Reference clock 149 - description: PCIe DDRSS SF TBU clock 150 - description: PCIe AGGRE NOC AXI clock 151 clock-names: 152 items: 153 - const: aux 154 - const: cfg 155 - const: bus_master 156 - const: bus_slave 157 - const: slave_q2a 158 - const: ref 159 - const: ddrss_sf_tbu 160 - const: aggre_noc_axi 161 162unevaluatedProperties: false 163 164examples: 165 - | 166 #include <dt-bindings/clock/qcom,gcc-sdx55.h> 167 #include <dt-bindings/gpio/gpio.h> 168 #include <dt-bindings/interrupt-controller/arm-gic.h> 169 pcie_ep: pcie-ep@1c00000 { 170 compatible = "qcom,sdx55-pcie-ep"; 171 reg = <0x01c00000 0x3000>, 172 <0x40000000 0xf1d>, 173 <0x40000f20 0xc8>, 174 <0x40001000 0x1000>, 175 <0x40002000 0x1000>, 176 <0x01c03000 0x3000>; 177 reg-names = "parf", "dbi", "elbi", "atu", "addr_space", 178 "mmio"; 179 180 clocks = <&gcc GCC_PCIE_AUX_CLK>, 181 <&gcc GCC_PCIE_CFG_AHB_CLK>, 182 <&gcc GCC_PCIE_MSTR_AXI_CLK>, 183 <&gcc GCC_PCIE_SLV_AXI_CLK>, 184 <&gcc GCC_PCIE_SLV_Q2A_AXI_CLK>, 185 <&gcc GCC_PCIE_SLEEP_CLK>, 186 <&gcc GCC_PCIE_0_CLKREF_CLK>; 187 clock-names = "aux", "cfg", "bus_master", "bus_slave", 188 "slave_q2a", "sleep", "ref"; 189 190 qcom,perst-regs = <&tcsr 0xb258 0xb270>; 191 192 interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>, 193 <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>; 194 interrupt-names = "global", "doorbell"; 195 reset-gpios = <&tlmm 57 GPIO_ACTIVE_LOW>; 196 wake-gpios = <&tlmm 53 GPIO_ACTIVE_LOW>; 197 resets = <&gcc GCC_PCIE_BCR>; 198 reset-names = "core"; 199 power-domains = <&gcc PCIE_GDSC>; 200 phys = <&pcie0_lane>; 201 phy-names = "pciephy"; 202 max-link-speed = <3>; 203 num-lanes = <2>; 204 }; 205