1* Qualcomm PCI express root complex 2 3- compatible: 4 Usage: required 5 Value type: <stringlist> 6 Definition: Value should contain 7 - "qcom,pcie-ipq8064" for ipq8064 8 - "qcom,pcie-apq8064" for apq8064 9 - "qcom,pcie-apq8084" for apq8084 10 - "qcom,pcie-msm8996" for msm8996 or apq8096 11 - "qcom,pcie-ipq4019" for ipq4019 12 - "qcom,pcie-ipq8074" for ipq8074 13 - "qcom,pcie-qcs404" for qcs404 14 15- reg: 16 Usage: required 17 Value type: <prop-encoded-array> 18 Definition: Register ranges as listed in the reg-names property 19 20- reg-names: 21 Usage: required 22 Value type: <stringlist> 23 Definition: Must include the following entries 24 - "parf" Qualcomm specific registers 25 - "dbi" DesignWare PCIe registers 26 - "elbi" External local bus interface registers 27 - "config" PCIe configuration space 28 29- device_type: 30 Usage: required 31 Value type: <string> 32 Definition: Should be "pci". As specified in designware-pcie.txt 33 34- #address-cells: 35 Usage: required 36 Value type: <u32> 37 Definition: Should be 3. As specified in designware-pcie.txt 38 39- #size-cells: 40 Usage: required 41 Value type: <u32> 42 Definition: Should be 2. As specified in designware-pcie.txt 43 44- ranges: 45 Usage: required 46 Value type: <prop-encoded-array> 47 Definition: As specified in designware-pcie.txt 48 49- interrupts: 50 Usage: required 51 Value type: <prop-encoded-array> 52 Definition: MSI interrupt 53 54- interrupt-names: 55 Usage: required 56 Value type: <stringlist> 57 Definition: Should contain "msi" 58 59- #interrupt-cells: 60 Usage: required 61 Value type: <u32> 62 Definition: Should be 1. As specified in designware-pcie.txt 63 64- interrupt-map-mask: 65 Usage: required 66 Value type: <prop-encoded-array> 67 Definition: As specified in designware-pcie.txt 68 69- interrupt-map: 70 Usage: required 71 Value type: <prop-encoded-array> 72 Definition: As specified in designware-pcie.txt 73 74- clocks: 75 Usage: required 76 Value type: <prop-encoded-array> 77 Definition: List of phandle and clock specifier pairs as listed 78 in clock-names property 79 80- clock-names: 81 Usage: required 82 Value type: <stringlist> 83 Definition: Should contain the following entries 84 - "iface" Configuration AHB clock 85 86- clock-names: 87 Usage: required for ipq/apq8064 88 Value type: <stringlist> 89 Definition: Should contain the following entries 90 - "core" Clocks the pcie hw block 91 - "phy" Clocks the pcie PHY block 92- clock-names: 93 Usage: required for apq8084/ipq4019 94 Value type: <stringlist> 95 Definition: Should contain the following entries 96 - "aux" Auxiliary (AUX) clock 97 - "bus_master" Master AXI clock 98 - "bus_slave" Slave AXI clock 99 100- clock-names: 101 Usage: required for msm8996/apq8096 102 Value type: <stringlist> 103 Definition: Should contain the following entries 104 - "pipe" Pipe Clock driving internal logic 105 - "aux" Auxiliary (AUX) clock 106 - "cfg" Configuration clock 107 - "bus_master" Master AXI clock 108 - "bus_slave" Slave AXI clock 109 110- clock-names: 111 Usage: required for ipq8074 112 Value type: <stringlist> 113 Definition: Should contain the following entries 114 - "iface" PCIe to SysNOC BIU clock 115 - "axi_m" AXI Master clock 116 - "axi_s" AXI Slave clock 117 - "ahb" AHB clock 118 - "aux" Auxiliary clock 119 120- clock-names: 121 Usage: required for qcs404 122 Value type: <stringlist> 123 Definition: Should contain the following entries 124 - "iface" AHB clock 125 - "aux" Auxiliary clock 126 - "master_bus" AXI Master clock 127 - "slave_bus" AXI Slave clock 128 129- resets: 130 Usage: required 131 Value type: <prop-encoded-array> 132 Definition: List of phandle and reset specifier pairs as listed 133 in reset-names property 134 135- reset-names: 136 Usage: required for ipq/apq8064 137 Value type: <stringlist> 138 Definition: Should contain the following entries 139 - "axi" AXI reset 140 - "ahb" AHB reset 141 - "por" POR reset 142 - "pci" PCI reset 143 - "phy" PHY reset 144 145- reset-names: 146 Usage: required for apq8084 147 Value type: <stringlist> 148 Definition: Should contain the following entries 149 - "core" Core reset 150 151- reset-names: 152 Usage: required for ipq/apq8064 153 Value type: <stringlist> 154 Definition: Should contain the following entries 155 - "axi_m" AXI master reset 156 - "axi_s" AXI slave reset 157 - "pipe" PIPE reset 158 - "axi_m_vmid" VMID reset 159 - "axi_s_xpu" XPU reset 160 - "parf" PARF reset 161 - "phy" PHY reset 162 - "axi_m_sticky" AXI sticky reset 163 - "pipe_sticky" PIPE sticky reset 164 - "pwr" PWR reset 165 - "ahb" AHB reset 166 - "phy_ahb" PHY AHB reset 167 168- reset-names: 169 Usage: required for ipq8074 170 Value type: <stringlist> 171 Definition: Should contain the following entries 172 - "pipe" PIPE reset 173 - "sleep" Sleep reset 174 - "sticky" Core Sticky reset 175 - "axi_m" AXI Master reset 176 - "axi_s" AXI Slave reset 177 - "ahb" AHB Reset 178 - "axi_m_sticky" AXI Master Sticky reset 179 180- reset-names: 181 Usage: required for qcs404 182 Value type: <stringlist> 183 Definition: Should contain the following entries 184 - "axi_m" AXI Master reset 185 - "axi_s" AXI Slave reset 186 - "axi_m_sticky" AXI Master Sticky reset 187 - "pipe_sticky" PIPE sticky reset 188 - "pwr" PWR reset 189 - "ahb" AHB reset 190 191- power-domains: 192 Usage: required for apq8084 and msm8996/apq8096 193 Value type: <prop-encoded-array> 194 Definition: A phandle and power domain specifier pair to the 195 power domain which is responsible for collapsing 196 and restoring power to the peripheral 197 198- vdda-supply: 199 Usage: required 200 Value type: <phandle> 201 Definition: A phandle to the core analog power supply 202 203- vdda_phy-supply: 204 Usage: required for ipq/apq8064 205 Value type: <phandle> 206 Definition: A phandle to the analog power supply for PHY 207 208- vdda_refclk-supply: 209 Usage: required for ipq/apq8064 210 Value type: <phandle> 211 Definition: A phandle to the analog power supply for IC which generates 212 reference clock 213- vddpe-3v3-supply: 214 Usage: optional 215 Value type: <phandle> 216 Definition: A phandle to the PCIe endpoint power supply 217 218- phys: 219 Usage: required for apq8084 and qcs404 220 Value type: <phandle> 221 Definition: List of phandle(s) as listed in phy-names property 222 223- phy-names: 224 Usage: required for apq8084 and qcs404 225 Value type: <stringlist> 226 Definition: Should contain "pciephy" 227 228- <name>-gpios: 229 Usage: optional 230 Value type: <prop-encoded-array> 231 Definition: List of phandle and GPIO specifier pairs. Should contain 232 - "perst-gpios" PCIe endpoint reset signal line 233 - "wake-gpios" PCIe endpoint wake signal line 234 235* Example for ipq/apq8064 236 pcie@1b500000 { 237 compatible = "qcom,pcie-apq8064", "qcom,pcie-ipq8064", "snps,dw-pcie"; 238 reg = <0x1b500000 0x1000 239 0x1b502000 0x80 240 0x1b600000 0x100 241 0x0ff00000 0x100000>; 242 reg-names = "dbi", "elbi", "parf", "config"; 243 device_type = "pci"; 244 linux,pci-domain = <0>; 245 bus-range = <0x00 0xff>; 246 num-lanes = <1>; 247 #address-cells = <3>; 248 #size-cells = <2>; 249 ranges = <0x81000000 0 0 0x0fe00000 0 0x00100000 /* I/O */ 250 0x82000000 0 0 0x08000000 0 0x07e00000>; /* memory */ 251 interrupts = <GIC_SPI 238 IRQ_TYPE_NONE>; 252 interrupt-names = "msi"; 253 #interrupt-cells = <1>; 254 interrupt-map-mask = <0 0 0 0x7>; 255 interrupt-map = <0 0 0 1 &intc 0 36 IRQ_TYPE_LEVEL_HIGH>, /* int_a */ 256 <0 0 0 2 &intc 0 37 IRQ_TYPE_LEVEL_HIGH>, /* int_b */ 257 <0 0 0 3 &intc 0 38 IRQ_TYPE_LEVEL_HIGH>, /* int_c */ 258 <0 0 0 4 &intc 0 39 IRQ_TYPE_LEVEL_HIGH>; /* int_d */ 259 clocks = <&gcc PCIE_A_CLK>, 260 <&gcc PCIE_H_CLK>, 261 <&gcc PCIE_PHY_CLK>; 262 clock-names = "core", "iface", "phy"; 263 resets = <&gcc PCIE_ACLK_RESET>, 264 <&gcc PCIE_HCLK_RESET>, 265 <&gcc PCIE_POR_RESET>, 266 <&gcc PCIE_PCI_RESET>, 267 <&gcc PCIE_PHY_RESET>; 268 reset-names = "axi", "ahb", "por", "pci", "phy"; 269 pinctrl-0 = <&pcie_pins_default>; 270 pinctrl-names = "default"; 271 }; 272 273* Example for apq8084 274 pcie0@fc520000 { 275 compatible = "qcom,pcie-apq8084", "snps,dw-pcie"; 276 reg = <0xfc520000 0x2000>, 277 <0xff000000 0x1000>, 278 <0xff001000 0x1000>, 279 <0xff002000 0x2000>; 280 reg-names = "parf", "dbi", "elbi", "config"; 281 device_type = "pci"; 282 linux,pci-domain = <0>; 283 bus-range = <0x00 0xff>; 284 num-lanes = <1>; 285 #address-cells = <3>; 286 #size-cells = <2>; 287 ranges = <0x81000000 0 0 0xff200000 0 0x00100000 /* I/O */ 288 0x82000000 0 0x00300000 0xff300000 0 0x00d00000>; /* memory */ 289 interrupts = <GIC_SPI 243 IRQ_TYPE_NONE>; 290 interrupt-names = "msi"; 291 #interrupt-cells = <1>; 292 interrupt-map-mask = <0 0 0 0x7>; 293 interrupt-map = <0 0 0 1 &intc 0 244 IRQ_TYPE_LEVEL_HIGH>, /* int_a */ 294 <0 0 0 2 &intc 0 245 IRQ_TYPE_LEVEL_HIGH>, /* int_b */ 295 <0 0 0 3 &intc 0 247 IRQ_TYPE_LEVEL_HIGH>, /* int_c */ 296 <0 0 0 4 &intc 0 248 IRQ_TYPE_LEVEL_HIGH>; /* int_d */ 297 clocks = <&gcc GCC_PCIE_0_CFG_AHB_CLK>, 298 <&gcc GCC_PCIE_0_MSTR_AXI_CLK>, 299 <&gcc GCC_PCIE_0_SLV_AXI_CLK>, 300 <&gcc GCC_PCIE_0_AUX_CLK>; 301 clock-names = "iface", "master_bus", "slave_bus", "aux"; 302 resets = <&gcc GCC_PCIE_0_BCR>; 303 reset-names = "core"; 304 power-domains = <&gcc PCIE0_GDSC>; 305 vdda-supply = <&pma8084_l3>; 306 phys = <&pciephy0>; 307 phy-names = "pciephy"; 308 perst-gpio = <&tlmm 70 GPIO_ACTIVE_LOW>; 309 pinctrl-0 = <&pcie0_pins_default>; 310 pinctrl-names = "default"; 311 }; 312