1724ba675SRob Herring// SPDX-License-Identifier: GPL-2.0+ OR MIT 2724ba675SRob Herring/* 3724ba675SRob Herring * Device Tree Source for Qualcomm MDM9615 SoC 4724ba675SRob Herring * 5724ba675SRob Herring * Copyright (C) 2016 BayLibre, SAS. 6724ba675SRob Herring * Author : Neil Armstrong <narmstrong@baylibre.com> 7724ba675SRob Herring */ 8724ba675SRob Herring 9724ba675SRob Herring/dts-v1/; 10724ba675SRob Herring 11724ba675SRob Herring#include <dt-bindings/interrupt-controller/arm-gic.h> 12724ba675SRob Herring#include <dt-bindings/clock/qcom,gcc-mdm9615.h> 13d988aa8cSDmitry Baryshkov#include <dt-bindings/clock/qcom,lcc-msm8960.h> 14724ba675SRob Herring#include <dt-bindings/reset/qcom,gcc-mdm9615.h> 15724ba675SRob Herring#include <dt-bindings/mfd/qcom-rpm.h> 16724ba675SRob Herring#include <dt-bindings/soc/qcom,gsbi.h> 17724ba675SRob Herring 18724ba675SRob Herring/ { 19724ba675SRob Herring #address-cells = <1>; 20724ba675SRob Herring #size-cells = <1>; 21724ba675SRob Herring model = "Qualcomm MDM9615"; 22724ba675SRob Herring compatible = "qcom,mdm9615"; 23724ba675SRob Herring interrupt-parent = <&intc>; 24724ba675SRob Herring 25724ba675SRob Herring cpus { 26724ba675SRob Herring #address-cells = <1>; 27724ba675SRob Herring #size-cells = <0>; 28724ba675SRob Herring 29724ba675SRob Herring cpu0: cpu@0 { 30724ba675SRob Herring compatible = "arm,cortex-a5"; 31724ba675SRob Herring reg = <0>; 32724ba675SRob Herring device_type = "cpu"; 33*7b49c9cfSKrzysztof Kozlowski next-level-cache = <&l2>; 34724ba675SRob Herring }; 35724ba675SRob Herring }; 36724ba675SRob Herring 37724ba675SRob Herring cpu-pmu { 38724ba675SRob Herring compatible = "arm,cortex-a5-pmu"; 39724ba675SRob Herring interrupts = <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_HIGH)>; 40724ba675SRob Herring }; 41724ba675SRob Herring 42724ba675SRob Herring clocks { 43174b934cSDmitry Baryshkov cxo_board: cxo_board { 44724ba675SRob Herring compatible = "fixed-clock"; 45724ba675SRob Herring #clock-cells = <0>; 46724ba675SRob Herring clock-frequency = <19200000>; 47724ba675SRob Herring }; 48724ba675SRob Herring }; 49724ba675SRob Herring 50724ba675SRob Herring vsdcc_fixed: vsdcc-regulator { 51724ba675SRob Herring compatible = "regulator-fixed"; 52724ba675SRob Herring regulator-name = "SDCC Power"; 53724ba675SRob Herring regulator-min-microvolt = <2700000>; 54724ba675SRob Herring regulator-max-microvolt = <2700000>; 55724ba675SRob Herring regulator-always-on; 56724ba675SRob Herring }; 57724ba675SRob Herring 58724ba675SRob Herring soc: soc { 59724ba675SRob Herring #address-cells = <1>; 60724ba675SRob Herring #size-cells = <1>; 61724ba675SRob Herring ranges; 62724ba675SRob Herring compatible = "simple-bus"; 63724ba675SRob Herring 64*7b49c9cfSKrzysztof Kozlowski l2: cache-controller@2040000 { 65724ba675SRob Herring compatible = "arm,pl310-cache"; 66724ba675SRob Herring reg = <0x02040000 0x1000>; 67724ba675SRob Herring arm,data-latency = <2 2 0>; 68724ba675SRob Herring cache-unified; 69724ba675SRob Herring cache-level = <2>; 70724ba675SRob Herring }; 71724ba675SRob Herring 72724ba675SRob Herring intc: interrupt-controller@2000000 { 73724ba675SRob Herring compatible = "qcom,msm-qgic2"; 74724ba675SRob Herring interrupt-controller; 75724ba675SRob Herring #interrupt-cells = <3>; 76724ba675SRob Herring reg = <0x02000000 0x1000>, 77724ba675SRob Herring <0x02002000 0x1000>; 78724ba675SRob Herring }; 79724ba675SRob Herring 80724ba675SRob Herring timer@200a000 { 81724ba675SRob Herring compatible = "qcom,kpss-wdt-mdm9615", "qcom,kpss-timer", 82724ba675SRob Herring "qcom,msm-timer"; 83724ba675SRob Herring interrupts = <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_EDGE_RISING)>, 84724ba675SRob Herring <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_EDGE_RISING)>, 85724ba675SRob Herring <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_EDGE_RISING)>; 86724ba675SRob Herring reg = <0x0200a000 0x100>; 87724ba675SRob Herring clock-frequency = <27000000>; 88724ba675SRob Herring cpu-offset = <0x80000>; 89724ba675SRob Herring }; 90724ba675SRob Herring 91724ba675SRob Herring msmgpio: pinctrl@800000 { 92724ba675SRob Herring compatible = "qcom,mdm9615-pinctrl"; 93724ba675SRob Herring gpio-controller; 94724ba675SRob Herring gpio-ranges = <&msmgpio 0 0 88>; 95724ba675SRob Herring #gpio-cells = <2>; 96724ba675SRob Herring interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>; 97724ba675SRob Herring interrupt-controller; 98724ba675SRob Herring #interrupt-cells = <2>; 99724ba675SRob Herring reg = <0x800000 0x4000>; 100724ba675SRob Herring }; 101724ba675SRob Herring 102724ba675SRob Herring gcc: clock-controller@900000 { 103724ba675SRob Herring compatible = "qcom,gcc-mdm9615"; 104724ba675SRob Herring #clock-cells = <1>; 105724ba675SRob Herring #reset-cells = <1>; 106724ba675SRob Herring reg = <0x900000 0x4000>; 107d988aa8cSDmitry Baryshkov clocks = <&cxo_board>, 108d988aa8cSDmitry Baryshkov <&lcc PLL4>; 109724ba675SRob Herring }; 110724ba675SRob Herring 111724ba675SRob Herring lcc: clock-controller@28000000 { 112724ba675SRob Herring compatible = "qcom,lcc-mdm9615"; 113724ba675SRob Herring reg = <0x28000000 0x1000>; 114724ba675SRob Herring #clock-cells = <1>; 115724ba675SRob Herring #reset-cells = <1>; 116174b934cSDmitry Baryshkov clocks = <&cxo_board>, 117174b934cSDmitry Baryshkov <&gcc PLL4_VOTE>, 118174b934cSDmitry Baryshkov <0>, 119174b934cSDmitry Baryshkov <0>, <0>, 120174b934cSDmitry Baryshkov <0>, <0>, 121174b934cSDmitry Baryshkov <0>; 122174b934cSDmitry Baryshkov clock-names = "cxo", 123174b934cSDmitry Baryshkov "pll4_vote", 124174b934cSDmitry Baryshkov "mi2s_codec_clk", 125174b934cSDmitry Baryshkov "codec_i2s_mic_codec_clk", 126174b934cSDmitry Baryshkov "spare_i2s_mic_codec_clk", 127174b934cSDmitry Baryshkov "codec_i2s_spkr_codec_clk", 128174b934cSDmitry Baryshkov "spare_i2s_spkr_codec_clk", 129174b934cSDmitry Baryshkov "pcm_codec_clk"; 130724ba675SRob Herring }; 131724ba675SRob Herring 132724ba675SRob Herring l2cc: clock-controller@2011000 { 133724ba675SRob Herring compatible = "qcom,kpss-gcc-mdm9615", "qcom,kpss-gcc", "syscon"; 134724ba675SRob Herring reg = <0x02011000 0x1000>; 135724ba675SRob Herring }; 136724ba675SRob Herring 137724ba675SRob Herring rng@1a500000 { 138724ba675SRob Herring compatible = "qcom,prng"; 139724ba675SRob Herring reg = <0x1a500000 0x200>; 140724ba675SRob Herring clocks = <&gcc PRNG_CLK>; 141724ba675SRob Herring clock-names = "core"; 142724ba675SRob Herring assigned-clocks = <&gcc PRNG_CLK>; 143724ba675SRob Herring assigned-clock-rates = <32000000>; 144724ba675SRob Herring }; 145724ba675SRob Herring 146724ba675SRob Herring gsbi2: gsbi@16100000 { 147724ba675SRob Herring compatible = "qcom,gsbi-v1.0.0"; 148724ba675SRob Herring cell-index = <2>; 149724ba675SRob Herring reg = <0x16100000 0x100>; 150724ba675SRob Herring clocks = <&gcc GSBI2_H_CLK>; 151724ba675SRob Herring clock-names = "iface"; 152724ba675SRob Herring status = "disabled"; 153724ba675SRob Herring #address-cells = <1>; 154724ba675SRob Herring #size-cells = <1>; 155724ba675SRob Herring ranges; 156724ba675SRob Herring 157724ba675SRob Herring gsbi2_i2c: i2c@16180000 { 158724ba675SRob Herring compatible = "qcom,i2c-qup-v1.1.1"; 159724ba675SRob Herring #address-cells = <1>; 160724ba675SRob Herring #size-cells = <0>; 161724ba675SRob Herring reg = <0x16180000 0x1000>; 162724ba675SRob Herring interrupts = <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>; 163724ba675SRob Herring 164724ba675SRob Herring clocks = <&gcc GSBI2_QUP_CLK>, <&gcc GSBI2_H_CLK>; 165724ba675SRob Herring clock-names = "core", "iface"; 166724ba675SRob Herring status = "disabled"; 167724ba675SRob Herring }; 168724ba675SRob Herring }; 169724ba675SRob Herring 170724ba675SRob Herring gsbi3: gsbi@16200000 { 171724ba675SRob Herring compatible = "qcom,gsbi-v1.0.0"; 172724ba675SRob Herring cell-index = <3>; 173724ba675SRob Herring reg = <0x16200000 0x100>; 174724ba675SRob Herring clocks = <&gcc GSBI3_H_CLK>; 175724ba675SRob Herring clock-names = "iface"; 176724ba675SRob Herring status = "disabled"; 177724ba675SRob Herring #address-cells = <1>; 178724ba675SRob Herring #size-cells = <1>; 179724ba675SRob Herring ranges; 180724ba675SRob Herring 181724ba675SRob Herring gsbi3_spi: spi@16280000 { 182724ba675SRob Herring compatible = "qcom,spi-qup-v1.1.1"; 183724ba675SRob Herring #address-cells = <1>; 184724ba675SRob Herring #size-cells = <0>; 185724ba675SRob Herring reg = <0x16280000 0x1000>; 186724ba675SRob Herring interrupts = <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>; 187724ba675SRob Herring 188724ba675SRob Herring clocks = <&gcc GSBI3_QUP_CLK>, <&gcc GSBI3_H_CLK>; 189724ba675SRob Herring clock-names = "core", "iface"; 190724ba675SRob Herring status = "disabled"; 191724ba675SRob Herring }; 192724ba675SRob Herring }; 193724ba675SRob Herring 194724ba675SRob Herring gsbi4: gsbi@16300000 { 195724ba675SRob Herring compatible = "qcom,gsbi-v1.0.0"; 196724ba675SRob Herring cell-index = <4>; 197724ba675SRob Herring reg = <0x16300000 0x100>; 198724ba675SRob Herring clocks = <&gcc GSBI4_H_CLK>; 199724ba675SRob Herring clock-names = "iface"; 200724ba675SRob Herring status = "disabled"; 201724ba675SRob Herring #address-cells = <1>; 202724ba675SRob Herring #size-cells = <1>; 203724ba675SRob Herring ranges; 204724ba675SRob Herring 205724ba675SRob Herring syscon-tcsr = <&tcsr>; 206724ba675SRob Herring 207724ba675SRob Herring gsbi4_serial: serial@16340000 { 208724ba675SRob Herring compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm"; 209724ba675SRob Herring reg = <0x16340000 0x1000>, 210724ba675SRob Herring <0x16300000 0x1000>; 211724ba675SRob Herring interrupts = <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>; 212724ba675SRob Herring clocks = <&gcc GSBI4_UART_CLK>, <&gcc GSBI4_H_CLK>; 213724ba675SRob Herring clock-names = "core", "iface"; 214724ba675SRob Herring status = "disabled"; 215724ba675SRob Herring }; 216724ba675SRob Herring }; 217724ba675SRob Herring 218724ba675SRob Herring gsbi5: gsbi@16400000 { 219724ba675SRob Herring compatible = "qcom,gsbi-v1.0.0"; 220724ba675SRob Herring cell-index = <5>; 221724ba675SRob Herring reg = <0x16400000 0x100>; 222724ba675SRob Herring clocks = <&gcc GSBI5_H_CLK>; 223724ba675SRob Herring clock-names = "iface"; 224724ba675SRob Herring status = "disabled"; 225724ba675SRob Herring #address-cells = <1>; 226724ba675SRob Herring #size-cells = <1>; 227724ba675SRob Herring ranges; 228724ba675SRob Herring 229724ba675SRob Herring syscon-tcsr = <&tcsr>; 230724ba675SRob Herring 231724ba675SRob Herring gsbi5_i2c: i2c@16480000 { 232724ba675SRob Herring compatible = "qcom,i2c-qup-v1.1.1"; 233724ba675SRob Herring #address-cells = <1>; 234724ba675SRob Herring #size-cells = <0>; 235724ba675SRob Herring reg = <0x16480000 0x1000>; 236724ba675SRob Herring interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>; 237724ba675SRob Herring 238724ba675SRob Herring /* QUP clock is not initialized, set rate */ 239724ba675SRob Herring assigned-clocks = <&gcc GSBI5_QUP_CLK>; 240724ba675SRob Herring assigned-clock-rates = <24000000>; 241724ba675SRob Herring 242724ba675SRob Herring clocks = <&gcc GSBI5_QUP_CLK>, <&gcc GSBI5_H_CLK>; 243724ba675SRob Herring clock-names = "core", "iface"; 244724ba675SRob Herring status = "disabled"; 245724ba675SRob Herring }; 246724ba675SRob Herring 247724ba675SRob Herring gsbi5_serial: serial@16440000 { 248724ba675SRob Herring compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm"; 249724ba675SRob Herring reg = <0x16440000 0x1000>, 250724ba675SRob Herring <0x16400000 0x1000>; 251724ba675SRob Herring interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>; 252724ba675SRob Herring clocks = <&gcc GSBI5_UART_CLK>, <&gcc GSBI5_H_CLK>; 253724ba675SRob Herring clock-names = "core", "iface"; 254724ba675SRob Herring status = "disabled"; 255724ba675SRob Herring }; 256724ba675SRob Herring }; 257724ba675SRob Herring 258bded0924SDmitry Baryshkov ssbi: ssbi@500000 { 259724ba675SRob Herring compatible = "qcom,ssbi"; 260724ba675SRob Herring reg = <0x500000 0x1000>; 261724ba675SRob Herring qcom,controller-type = "pmic-arbiter"; 262724ba675SRob Herring }; 263724ba675SRob Herring 264724ba675SRob Herring sdcc1bam: dma-controller@12182000 { 265724ba675SRob Herring compatible = "qcom,bam-v1.3.0"; 266724ba675SRob Herring reg = <0x12182000 0x8000>; 267724ba675SRob Herring interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; 268724ba675SRob Herring clocks = <&gcc SDC1_H_CLK>; 269724ba675SRob Herring clock-names = "bam_clk"; 270724ba675SRob Herring #dma-cells = <1>; 271724ba675SRob Herring qcom,ee = <0>; 272724ba675SRob Herring }; 273724ba675SRob Herring 274724ba675SRob Herring sdcc2bam: dma-controller@12142000 { 275724ba675SRob Herring compatible = "qcom,bam-v1.3.0"; 276724ba675SRob Herring reg = <0x12142000 0x8000>; 277724ba675SRob Herring interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>; 278724ba675SRob Herring clocks = <&gcc SDC2_H_CLK>; 279724ba675SRob Herring clock-names = "bam_clk"; 280724ba675SRob Herring #dma-cells = <1>; 281724ba675SRob Herring qcom,ee = <0>; 282724ba675SRob Herring }; 283724ba675SRob Herring 284724ba675SRob Herring sdcc1: mmc@12180000 { 285724ba675SRob Herring status = "disabled"; 286724ba675SRob Herring compatible = "arm,pl18x", "arm,primecell"; 287724ba675SRob Herring arm,primecell-periphid = <0x00051180>; 288724ba675SRob Herring reg = <0x12180000 0x2000>; 289724ba675SRob Herring interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>; 290724ba675SRob Herring clocks = <&gcc SDC1_CLK>, <&gcc SDC1_H_CLK>; 291724ba675SRob Herring clock-names = "mclk", "apb_pclk"; 292724ba675SRob Herring bus-width = <8>; 293724ba675SRob Herring max-frequency = <48000000>; 294724ba675SRob Herring cap-sd-highspeed; 295724ba675SRob Herring cap-mmc-highspeed; 296724ba675SRob Herring vmmc-supply = <&vsdcc_fixed>; 297724ba675SRob Herring dmas = <&sdcc1bam 2>, <&sdcc1bam 1>; 298724ba675SRob Herring dma-names = "tx", "rx"; 299724ba675SRob Herring assigned-clocks = <&gcc SDC1_CLK>; 300724ba675SRob Herring assigned-clock-rates = <400000>; 301724ba675SRob Herring }; 302724ba675SRob Herring 303724ba675SRob Herring sdcc2: mmc@12140000 { 304724ba675SRob Herring compatible = "arm,pl18x", "arm,primecell"; 305724ba675SRob Herring arm,primecell-periphid = <0x00051180>; 306724ba675SRob Herring status = "disabled"; 307724ba675SRob Herring reg = <0x12140000 0x2000>; 308724ba675SRob Herring interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>; 309724ba675SRob Herring clocks = <&gcc SDC2_CLK>, <&gcc SDC2_H_CLK>; 310724ba675SRob Herring clock-names = "mclk", "apb_pclk"; 311724ba675SRob Herring bus-width = <4>; 312724ba675SRob Herring cap-sd-highspeed; 313724ba675SRob Herring cap-mmc-highspeed; 314724ba675SRob Herring max-frequency = <48000000>; 315724ba675SRob Herring no-1-8-v; 316724ba675SRob Herring vmmc-supply = <&vsdcc_fixed>; 317724ba675SRob Herring dmas = <&sdcc2bam 2>, <&sdcc2bam 1>; 318724ba675SRob Herring dma-names = "tx", "rx"; 319724ba675SRob Herring assigned-clocks = <&gcc SDC2_CLK>; 320724ba675SRob Herring assigned-clock-rates = <400000>; 321724ba675SRob Herring }; 322724ba675SRob Herring 323724ba675SRob Herring tcsr: syscon@1a400000 { 324724ba675SRob Herring compatible = "qcom,tcsr-mdm9615", "syscon"; 325724ba675SRob Herring reg = <0x1a400000 0x100>; 326724ba675SRob Herring }; 327724ba675SRob Herring 328724ba675SRob Herring rpm: rpm@108000 { 329724ba675SRob Herring compatible = "qcom,rpm-mdm9615"; 330724ba675SRob Herring reg = <0x108000 0x1000>; 331724ba675SRob Herring 332724ba675SRob Herring qcom,ipc = <&l2cc 0x8 2>; 333724ba675SRob Herring 334724ba675SRob Herring interrupts = <GIC_SPI 19 IRQ_TYPE_EDGE_RISING>, 335724ba675SRob Herring <GIC_SPI 21 IRQ_TYPE_EDGE_RISING>, 336724ba675SRob Herring <GIC_SPI 22 IRQ_TYPE_EDGE_RISING>; 337724ba675SRob Herring interrupt-names = "ack", "err", "wakeup"; 338724ba675SRob Herring }; 339724ba675SRob Herring }; 340724ba675SRob Herring}; 341