1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2%YAML 1.2 3--- 4$id: http://devicetree.org/schemas/sound/qcom,lpass-cpu.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: Qualcomm Technologies Inc. LPASS CPU dai driver bindings 8 9maintainers: 10 - Srinivas Kandagatla <srinivas.kandagatla@linaro.org> 11 - Rohit kumar <rohitkr@codeaurora.org> 12 13description: | 14 Qualcomm Technologies Inc. SOC Low-Power Audio SubSystem (LPASS) that consist 15 of MI2S interface for audio data transfer on external codecs. LPASS cpu driver 16 is a module to configure Low-Power Audio Interface(LPAIF) core registers 17 across different IP versions. 18 19properties: 20 compatible: 21 enum: 22 - qcom,lpass-cpu 23 - qcom,apq8016-lpass-cpu 24 - qcom,sc7180-lpass-cpu 25 - qcom,sc7280-lpass-cpu 26 27 reg: 28 minItems: 1 29 maxItems: 6 30 description: LPAIF core registers 31 32 reg-names: 33 minItems: 1 34 maxItems: 6 35 36 clocks: 37 minItems: 3 38 maxItems: 7 39 40 clock-names: 41 minItems: 1 42 maxItems: 10 43 44 interrupts: 45 minItems: 1 46 maxItems: 4 47 description: LPAIF DMA buffer interrupt 48 49 interrupt-names: 50 minItems: 1 51 maxItems: 4 52 53 qcom,adsp: 54 $ref: /schemas/types.yaml#/definitions/phandle 55 description: Phandle for the audio DSP node 56 57 iommus: 58 minItems: 2 59 maxItems: 3 60 description: Phandle to apps_smmu node with sid mask 61 62 power-domains: 63 maxItems: 1 64 65 power-domain-names: 66 maxItems: 1 67 68 '#sound-dai-cells': 69 const: 1 70 71 '#address-cells': 72 const: 1 73 74 '#size-cells': 75 const: 0 76 77patternProperties: 78 "^dai-link@[0-9a-f]$": 79 type: object 80 description: | 81 LPASS CPU dai node for each I2S device or Soundwire device. Bindings of each node 82 depends on the specific driver providing the functionality and 83 properties. 84 properties: 85 reg: 86 maxItems: 1 87 description: Must be one of the DAI ID 88 89 qcom,playback-sd-lines: 90 $ref: /schemas/types.yaml#/definitions/uint32-array 91 description: list of MI2S data lines for playback 92 93 qcom,capture-sd-lines: 94 $ref: /schemas/types.yaml#/definitions/uint32-array 95 description: list of MI2S data lines for capture 96 97 required: 98 - reg 99 100 additionalProperties: false 101 102required: 103 - compatible 104 - reg 105 - reg-names 106 - clocks 107 - clock-names 108 - interrupts 109 - interrupt-names 110 - '#sound-dai-cells' 111 112additionalProperties: false 113 114allOf: 115 - if: 116 properties: 117 compatible: 118 contains: 119 const: qcom,lpass-cpu 120 121 then: 122 properties: 123 clock-names: 124 items: 125 - const: ahbix-clk 126 - const: mi2s-osr-clk 127 - const: mi2s-bit-clk 128 129 - if: 130 properties: 131 compatible: 132 contains: 133 const: qcom,apq8016-lpass-cpu 134 135 then: 136 properties: 137 clock-names: 138 items: 139 - const: ahbix-clk 140 - const: mi2s-bit-clk0 141 - const: mi2s-bit-clk1 142 - const: mi2s-bit-clk2 143 - const: mi2s-bit-clk3 144 - const: pcnoc-mport-clk 145 - const: pcnoc-sway-clk 146 147 - if: 148 properties: 149 compatible: 150 contains: 151 const: qcom,sc7180-lpass-cpu 152 153 then: 154 properties: 155 clock-names: 156 oneOf: 157 - items: #for I2S 158 - const: pcnoc-sway-clk 159 - const: audio-core 160 - const: mclk0 161 - const: pcnoc-mport-clk 162 - const: mi2s-bit-clk0 163 - const: mi2s-bit-clk1 164 - items: #for HDMI 165 - const: pcnoc-sway-clk 166 - const: audio-core 167 - const: pcnoc-mport-clk 168 reg-names: 169 anyOf: 170 - items: #for I2S 171 - const: lpass-lpaif 172 - items: #for I2S and HDMI 173 - const: lpass-hdmiif 174 - const: lpass-lpaif 175 interrupt-names: 176 anyOf: 177 - items: #for I2S 178 - const: lpass-irq-lpaif 179 - items: #for I2S and HDMI 180 - const: lpass-irq-lpaif 181 - const: lpass-irq-hdmi 182 required: 183 - iommus 184 - power-domains 185 186 - if: 187 properties: 188 compatible: 189 contains: 190 const: qcom,sc7280-lpass-cpu 191 192 then: 193 properties: 194 clock-names: 195 oneOf: 196 - items: #for I2S 197 - const: aon_cc_audio_hm_h 198 - const: audio_cc_ext_mclk0 199 - const: core_cc_sysnoc_mport_core 200 - const: core_cc_ext_if0_ibit 201 - const: core_cc_ext_if1_ibit 202 - items: #for Soundwire 203 - const: aon_cc_audio_hm_h 204 - const: audio_cc_codec_mem 205 - const: audio_cc_codec_mem0 206 - const: audio_cc_codec_mem1 207 - const: audio_cc_codec_mem2 208 - const: aon_cc_va_mem0 209 - items: #for HDMI 210 - const: core_cc_sysnoc_mport_core 211 212 reg-names: 213 anyOf: 214 - items: #for I2S 215 - const: lpass-lpaif 216 - items: #for I2S and HDMI 217 - const: lpass-hdmiif 218 - const: lpass-lpaif 219 - items: #for I2S, soundwire and HDMI 220 - const: lpass-hdmiif 221 - const: lpass-lpaif 222 - const: lpass-rxtx-cdc-dma-lpm 223 - const: lpass-rxtx-lpaif 224 - const: lpass-va-lpaif 225 - const: lpass-va-cdc-dma-lpm 226 interrupt-names: 227 anyOf: 228 - items: #for I2S 229 - const: lpass-irq-lpaif 230 - items: #for I2S and HDMI 231 - const: lpass-irq-lpaif 232 - const: lpass-irq-hdmi 233 - items: #for I2S, soundwire and HDMI 234 - const: lpass-irq-lpaif 235 - const: lpass-irq-hdmi 236 - const: lpass-irq-vaif 237 - const: lpass-irq-rxtxif 238 power-domain-names: 239 allOf: 240 - items: 241 - const: lcx 242 243 required: 244 - iommus 245 - power-domains 246 247examples: 248 - | 249 #include <dt-bindings/sound/sc7180-lpass.h> 250 251 soc { 252 #address-cells = <2>; 253 #size-cells = <2>; 254 lpass@62d80000 { 255 compatible = "qcom,sc7180-lpass-cpu"; 256 257 reg = <0 0x62d87000 0 0x68000>, 258 <0 0x62f00000 0 0x29000>; 259 reg-names = "lpass-hdmiif", 260 "lpass-lpaif"; 261 iommus = <&apps_smmu 0x1020 0>, 262 <&apps_smmu 0x1032 0>; 263 power-domains = <&lpass_hm 0>; 264 265 clocks = <&gcc 131>, 266 <&lpasscorecc 6>, 267 <&lpasscorecc 7>, 268 <&lpasscorecc 10>, 269 <&lpasscorecc 8>, 270 <&lpasscorecc 9>; 271 272 clock-names = "pcnoc-sway-clk", "audio-core", 273 "mclk0", "pcnoc-mport-clk", 274 "mi2s-bit-clk0", "mi2s-bit-clk1"; 275 276 interrupts = <0 160 1>, 277 <0 268 1>; 278 interrupt-names = "lpass-irq-lpaif", 279 "lpass-irq-hdmi"; 280 #sound-dai-cells = <1>; 281 282 #address-cells = <1>; 283 #size-cells = <0>; 284 /* Optional to set different MI2S SD lines */ 285 dai-link@0 { 286 reg = <MI2S_PRIMARY>; 287 qcom,playback-sd-lines = <1>; 288 qcom,capture-sd-lines = <0>; 289 }; 290 }; 291 }; 292 293... 294