1// SPDX-License-Identifier: GPL-2.0+ 2/* 3 * Copyright 2018-2019 NXP 4 * Dong Aisheng <aisheng.dong@nxp.com> 5 */ 6 7#include <dt-bindings/clock/imx8-clock.h> 8#include <dt-bindings/clock/imx8-lpcg.h> 9#include <dt-bindings/dma/fsl-edma.h> 10#include <dt-bindings/firmware/imx/rsrc.h> 11 12audio_ipg_clk: clock-audio-ipg { 13 compatible = "fixed-clock"; 14 #clock-cells = <0>; 15 clock-frequency = <120000000>; 16 clock-output-names = "audio_ipg_clk"; 17}; 18 19clk_ext_aud_mclk0: clock-ext-aud-mclk0 { 20 compatible = "fixed-clock"; 21 #clock-cells = <0>; 22 clock-frequency = <0>; 23 clock-output-names = "ext_aud_mclk0"; 24}; 25 26clk_ext_aud_mclk1: clock-ext-aud-mclk1 { 27 compatible = "fixed-clock"; 28 #clock-cells = <0>; 29 clock-frequency = <0>; 30 clock-output-names = "ext_aud_mclk1"; 31}; 32 33clk_esai0_rx_clk: clock-esai0-rx { 34 compatible = "fixed-clock"; 35 #clock-cells = <0>; 36 clock-frequency = <0>; 37 clock-output-names = "esai0_rx_clk"; 38}; 39 40clk_esai0_rx_hf_clk: clock-esai0-rx-hf { 41 compatible = "fixed-clock"; 42 #clock-cells = <0>; 43 clock-frequency = <0>; 44 clock-output-names = "esai0_rx_hf_clk"; 45}; 46 47clk_esai0_tx_clk: clock-esai0-tx { 48 compatible = "fixed-clock"; 49 #clock-cells = <0>; 50 clock-frequency = <0>; 51 clock-output-names = "esai0_tx_clk"; 52}; 53 54clk_esai0_tx_hf_clk: clock-esai0-tx-hf { 55 compatible = "fixed-clock"; 56 #clock-cells = <0>; 57 clock-frequency = <0>; 58 clock-output-names = "esai0_tx_hf_clk"; 59}; 60 61clk_spdif0_rx: clock-spdif0-rx { 62 compatible = "fixed-clock"; 63 #clock-cells = <0>; 64 clock-frequency = <0>; 65 clock-output-names = "spdif0_rx"; 66}; 67 68clk_sai0_rx_bclk: clock-sai0-rx-bclk { 69 compatible = "fixed-clock"; 70 #clock-cells = <0>; 71 clock-frequency = <0>; 72 clock-output-names = "sai0_rx_bclk"; 73}; 74 75clk_sai0_tx_bclk: clock-sai0-tx-bclk { 76 compatible = "fixed-clock"; 77 #clock-cells = <0>; 78 clock-frequency = <0>; 79 clock-output-names = "sai0_tx_bclk"; 80}; 81 82clk_sai1_rx_bclk: clock-sai1-rx-bclk { 83 compatible = "fixed-clock"; 84 #clock-cells = <0>; 85 clock-frequency = <0>; 86 clock-output-names = "sai1_rx_bclk"; 87}; 88 89clk_sai1_tx_bclk: clock-sai1-tx-bclk { 90 compatible = "fixed-clock"; 91 #clock-cells = <0>; 92 clock-frequency = <0>; 93 clock-output-names = "sai1_tx_bclk"; 94}; 95 96clk_sai2_rx_bclk: clock-sai2-rx-bclk { 97 compatible = "fixed-clock"; 98 #clock-cells = <0>; 99 clock-frequency = <0>; 100 clock-output-names = "sai2_rx_bclk"; 101}; 102 103clk_sai3_rx_bclk: clock-sai3-rx-bclk { 104 compatible = "fixed-clock"; 105 #clock-cells = <0>; 106 clock-frequency = <0>; 107 clock-output-names = "sai3_rx_bclk"; 108}; 109 110clk_sai4_rx_bclk: clock-sai4-rx-bclk { 111 compatible = "fixed-clock"; 112 #clock-cells = <0>; 113 clock-frequency = <0>; 114 clock-output-names = "sai4_rx_bclk"; 115}; 116 117audio_subsys: bus@59000000 { 118 compatible = "simple-bus"; 119 #address-cells = <1>; 120 #size-cells = <1>; 121 ranges = <0x59000000 0x0 0x59000000 0x1000000>; 122 123 asrc0: asrc@59000000 { 124 compatible = "fsl,imx8qm-asrc"; 125 reg = <0x59000000 0x10000>; 126 interrupts = <GIC_SPI 372 IRQ_TYPE_LEVEL_HIGH>; 127 clocks = <&asrc0_lpcg IMX_LPCG_CLK_0>, 128 <&asrc0_lpcg IMX_LPCG_CLK_0>, 129 <&aud_pll_div0_lpcg IMX_LPCG_CLK_4>, 130 <&aud_pll_div1_lpcg IMX_LPCG_CLK_4>, 131 <&acm IMX_ADMA_ACM_AUD_CLK0_SEL>, 132 <&acm IMX_ADMA_ACM_AUD_CLK1_SEL>, 133 <&clk_dummy>, 134 <&clk_dummy>, 135 <&clk_dummy>, 136 <&clk_dummy>, 137 <&clk_dummy>, 138 <&clk_dummy>, 139 <&clk_dummy>, 140 <&clk_dummy>, 141 <&clk_dummy>, 142 <&clk_dummy>, 143 <&clk_dummy>, 144 <&clk_dummy>, 145 <&clk_dummy>; 146 clock-names = "mem", "ipg", 147 "asrck_0", "asrck_1", "asrck_2", "asrck_3", 148 "asrck_4", "asrck_5", "asrck_6", "asrck_7", 149 "asrck_8", "asrck_9", "asrck_a", "asrck_b", 150 "asrck_c", "asrck_d", "asrck_e", "asrck_f", 151 "spba"; 152 dmas = <&edma0 0 0 0>, 153 <&edma0 1 0 0>, 154 <&edma0 2 0 0>, 155 <&edma0 3 0 FSL_EDMA_RX>, 156 <&edma0 4 0 FSL_EDMA_RX>, 157 <&edma0 5 0 FSL_EDMA_RX>; 158 /* tx* is output channel of asrc, it is rx channel for eDMA */ 159 dma-names = "rxa", "rxb", "rxc", "txa", "txb", "txc"; 160 fsl,asrc-rate = <8000>; 161 fsl,asrc-width = <16>; 162 fsl,asrc-clk-map = <0>; 163 power-domains = <&pd IMX_SC_R_ASRC_0>; 164 status = "disabled"; 165 }; 166 167 esai0: esai@59010000 { 168 compatible = "fsl,imx8qm-esai"; 169 reg = <0x59010000 0x10000>; 170 interrupts = <GIC_SPI 409 IRQ_TYPE_LEVEL_HIGH>; 171 clocks = <&esai0_lpcg IMX_LPCG_CLK_4>, 172 <&esai0_lpcg IMX_LPCG_CLK_0>, 173 <&esai0_lpcg IMX_LPCG_CLK_4>, 174 <&clk_dummy>; 175 clock-names = "core", "extal", "fsys", "spba"; 176 dmas = <&edma0 6 0 FSL_EDMA_RX>, <&edma0 7 0 0>; 177 dma-names = "rx", "tx"; 178 power-domains = <&pd IMX_SC_R_ESAI_0>; 179 status = "disabled"; 180 }; 181 182 spdif0: spdif@59020000 { 183 compatible = "fsl,imx8qm-spdif"; 184 reg = <0x59020000 0x10000>; 185 interrupts = <GIC_SPI 456 IRQ_TYPE_LEVEL_HIGH>, /* rx */ 186 <GIC_SPI 458 IRQ_TYPE_LEVEL_HIGH>; /* tx */ 187 clocks = <&spdif0_lpcg IMX_LPCG_CLK_4>, /* core */ 188 <&clk_dummy>, /* rxtx0 */ 189 <&spdif0_lpcg IMX_LPCG_CLK_0>, /* rxtx1 */ 190 <&clk_dummy>, /* rxtx2 */ 191 <&clk_dummy>, /* rxtx3 */ 192 <&clk_dummy>, /* rxtx4 */ 193 <&audio_ipg_clk>, /* rxtx5 */ 194 <&clk_dummy>, /* rxtx6 */ 195 <&clk_dummy>, /* rxtx7 */ 196 <&clk_dummy>; /* spba */ 197 clock-names = "core", "rxtx0", "rxtx1", "rxtx2", "rxtx3", "rxtx4", 198 "rxtx5", "rxtx6", "rxtx7", "spba"; 199 dmas = <&edma0 8 0 (FSL_EDMA_MULTI_FIFO | FSL_EDMA_RX)>, 200 <&edma0 9 0 FSL_EDMA_MULTI_FIFO>; 201 dma-names = "rx", "tx"; 202 power-domains = <&pd IMX_SC_R_SPDIF_0>; 203 status = "disabled"; 204 }; 205 206 sai0: sai@59040000 { 207 compatible = "fsl,imx8qm-sai"; 208 reg = <0x59040000 0x10000>; 209 interrupts = <GIC_SPI 314 IRQ_TYPE_LEVEL_HIGH>; 210 clocks = <&sai0_lpcg IMX_LPCG_CLK_4>, 211 <&clk_dummy>, 212 <&sai0_lpcg IMX_LPCG_CLK_0>, 213 <&clk_dummy>, 214 <&clk_dummy>; 215 clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3"; 216 dma-names = "rx", "tx"; 217 dmas = <&edma0 12 0 1>, <&edma0 13 0 0>; 218 power-domains = <&pd IMX_SC_R_SAI_0>; 219 status = "disabled"; 220 }; 221 222 sai1: sai@59050000 { 223 compatible = "fsl,imx8qm-sai"; 224 reg = <0x59050000 0x10000>; 225 interrupts = <GIC_SPI 316 IRQ_TYPE_LEVEL_HIGH>; 226 clocks = <&sai1_lpcg IMX_LPCG_CLK_4>, 227 <&clk_dummy>, 228 <&sai1_lpcg IMX_LPCG_CLK_0>, 229 <&clk_dummy>, 230 <&clk_dummy>; 231 clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3"; 232 dma-names = "rx", "tx"; 233 dmas = <&edma0 14 0 1>, <&edma0 15 0 0>; 234 power-domains = <&pd IMX_SC_R_SAI_1>; 235 status = "disabled"; 236 }; 237 238 sai2: sai@59060000 { 239 compatible = "fsl,imx8qm-sai"; 240 reg = <0x59060000 0x10000>; 241 interrupts = <GIC_SPI 318 IRQ_TYPE_LEVEL_HIGH>; 242 clocks = <&sai2_lpcg IMX_LPCG_CLK_4>, 243 <&clk_dummy>, 244 <&sai2_lpcg IMX_LPCG_CLK_0>, 245 <&clk_dummy>, 246 <&clk_dummy>; 247 clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3"; 248 dma-names = "rx"; 249 dmas = <&edma0 16 0 1>; 250 power-domains = <&pd IMX_SC_R_SAI_2>; 251 status = "disabled"; 252 }; 253 254 sai3: sai@59070000 { 255 compatible = "fsl,imx8qm-sai"; 256 reg = <0x59070000 0x10000>; 257 interrupts = <GIC_SPI 323 IRQ_TYPE_LEVEL_HIGH>; 258 clocks = <&sai3_lpcg IMX_LPCG_CLK_4>, 259 <&clk_dummy>, 260 <&sai3_lpcg IMX_LPCG_CLK_0>, 261 <&clk_dummy>, 262 <&clk_dummy>; 263 clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3"; 264 dma-names = "rx"; 265 dmas = <&edma0 17 0 1>; 266 power-domains = <&pd IMX_SC_R_SAI_3>; 267 status = "disabled"; 268 }; 269 270 edma0: dma-controller@591f0000 { 271 compatible = "fsl,imx8qm-edma"; 272 reg = <0x591f0000 0x190000>; 273 #dma-cells = <3>; 274 dma-channels = <24>; 275 dma-channel-mask = <0x5c0c00>; 276 interrupts = <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>, /* 0 asrc 0 */ 277 <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>, /* 1 */ 278 <GIC_SPI 376 IRQ_TYPE_LEVEL_HIGH>, /* 2 */ 279 <GIC_SPI 377 IRQ_TYPE_LEVEL_HIGH>, /* 3 */ 280 <GIC_SPI 378 IRQ_TYPE_LEVEL_HIGH>, /* 4 */ 281 <GIC_SPI 379 IRQ_TYPE_LEVEL_HIGH>, /* 5 */ 282 <GIC_SPI 410 IRQ_TYPE_LEVEL_HIGH>, /* 6 esai0 */ 283 <GIC_SPI 410 IRQ_TYPE_LEVEL_HIGH>, /* 7 */ 284 <GIC_SPI 457 IRQ_TYPE_LEVEL_HIGH>, /* 8 spdif0 */ 285 <GIC_SPI 459 IRQ_TYPE_LEVEL_HIGH>, /* 9 */ 286 <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, /* 10 unused */ 287 <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, /* 11 unused */ 288 <GIC_SPI 315 IRQ_TYPE_LEVEL_HIGH>, /* 12 sai0 */ 289 <GIC_SPI 315 IRQ_TYPE_LEVEL_HIGH>, /* 13 */ 290 <GIC_SPI 317 IRQ_TYPE_LEVEL_HIGH>, /* 14 sai1 */ 291 <GIC_SPI 317 IRQ_TYPE_LEVEL_HIGH>, /* 15 */ 292 <GIC_SPI 319 IRQ_TYPE_LEVEL_HIGH>, /* 16 sai2 */ 293 <GIC_SPI 324 IRQ_TYPE_LEVEL_HIGH>, /* 17 sai3 */ 294 <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, /* 18 unused */ 295 <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, /* 19 unused */ 296 <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, /* 20 unused */ 297 <GIC_SPI 391 IRQ_TYPE_LEVEL_HIGH>, /* 21 */ 298 <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, /* 22 unused */ 299 <GIC_SPI 393 IRQ_TYPE_LEVEL_HIGH>; /* 23 unused */ 300 power-domains = <&pd IMX_SC_R_DMA_0_CH0>, 301 <&pd IMX_SC_R_DMA_0_CH1>, 302 <&pd IMX_SC_R_DMA_0_CH2>, 303 <&pd IMX_SC_R_DMA_0_CH3>, 304 <&pd IMX_SC_R_DMA_0_CH4>, 305 <&pd IMX_SC_R_DMA_0_CH5>, 306 <&pd IMX_SC_R_DMA_0_CH6>, 307 <&pd IMX_SC_R_DMA_0_CH7>, 308 <&pd IMX_SC_R_DMA_0_CH8>, 309 <&pd IMX_SC_R_DMA_0_CH9>, 310 <&pd IMX_SC_R_DMA_0_CH10>, 311 <&pd IMX_SC_R_DMA_0_CH11>, 312 <&pd IMX_SC_R_DMA_0_CH12>, 313 <&pd IMX_SC_R_DMA_0_CH13>, 314 <&pd IMX_SC_R_DMA_0_CH14>, 315 <&pd IMX_SC_R_DMA_0_CH15>, 316 <&pd IMX_SC_R_DMA_0_CH16>, 317 <&pd IMX_SC_R_DMA_0_CH17>, 318 <&pd IMX_SC_R_DMA_0_CH18>, 319 <&pd IMX_SC_R_DMA_0_CH19>, 320 <&pd IMX_SC_R_DMA_0_CH20>, 321 <&pd IMX_SC_R_DMA_0_CH21>, 322 <&pd IMX_SC_R_DMA_0_CH22>, 323 <&pd IMX_SC_R_DMA_0_CH23>; 324 }; 325 326 asrc0_lpcg: clock-controller@59400000 { 327 compatible = "fsl,imx8qxp-lpcg"; 328 reg = <0x59400000 0x10000>; 329 #clock-cells = <1>; 330 clocks = <&audio_ipg_clk>; 331 clock-indices = <IMX_LPCG_CLK_4>; 332 clock-output-names = "asrc0_lpcg_ipg_clk"; 333 power-domains = <&pd IMX_SC_R_ASRC_0>; 334 }; 335 336 esai0_lpcg: clock-controller@59410000 { 337 compatible = "fsl,imx8qxp-lpcg"; 338 reg = <0x59410000 0x10000>; 339 #clock-cells = <1>; 340 clocks = <&acm IMX_ADMA_ACM_ESAI0_MCLK_SEL>, 341 <&audio_ipg_clk>; 342 clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_4>; 343 clock-output-names = "esai0_lpcg_extal_clk", 344 "esai0_lpcg_ipg_clk"; 345 power-domains = <&pd IMX_SC_R_ESAI_0>; 346 }; 347 348 spdif0_lpcg: clock-controller@59420000 { 349 compatible = "fsl,imx8qxp-lpcg"; 350 reg = <0x59420000 0x10000>; 351 #clock-cells = <1>; 352 clocks = <&acm IMX_ADMA_ACM_SPDIF0_TX_CLK_SEL>, 353 <&audio_ipg_clk>; 354 clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_4>; 355 clock-output-names = "spdif0_lpcg_tx_clk", 356 "spdif0_lpcg_gclkw"; 357 power-domains = <&pd IMX_SC_R_SPDIF_0>; 358 }; 359 360 sai0_lpcg: clock-controller@59440000 { 361 compatible = "fsl,imx8qxp-lpcg"; 362 reg = <0x59440000 0x10000>; 363 #clock-cells = <1>; 364 clocks = <&acm IMX_ADMA_ACM_SAI0_MCLK_SEL>, 365 <&audio_ipg_clk>; 366 clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_4>; 367 clock-output-names = "sai0_lpcg_mclk", 368 "sai0_lpcg_ipg_clk"; 369 power-domains = <&pd IMX_SC_R_SAI_0>; 370 }; 371 372 sai1_lpcg: clock-controller@59450000 { 373 compatible = "fsl,imx8qxp-lpcg"; 374 reg = <0x59450000 0x10000>; 375 #clock-cells = <1>; 376 clocks = <&acm IMX_ADMA_ACM_SAI1_MCLK_SEL>, 377 <&audio_ipg_clk>; 378 clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_4>; 379 clock-output-names = "sai1_lpcg_mclk", 380 "sai1_lpcg_ipg_clk"; 381 power-domains = <&pd IMX_SC_R_SAI_1>; 382 }; 383 384 sai2_lpcg: clock-controller@59460000 { 385 compatible = "fsl,imx8qxp-lpcg"; 386 reg = <0x59460000 0x10000>; 387 #clock-cells = <1>; 388 clocks = <&acm IMX_ADMA_ACM_SAI2_MCLK_SEL>, 389 <&audio_ipg_clk>; 390 clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_4>; 391 clock-output-names = "sai2_lpcg_mclk", 392 "sai2_lpcg_ipg_clk"; 393 power-domains = <&pd IMX_SC_R_SAI_2>; 394 }; 395 396 sai3_lpcg: clock-controller@59470000 { 397 compatible = "fsl,imx8qxp-lpcg"; 398 reg = <0x59470000 0x10000>; 399 #clock-cells = <1>; 400 clocks = <&acm IMX_ADMA_ACM_SAI3_MCLK_SEL>, 401 <&audio_ipg_clk>; 402 clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_4>; 403 clock-output-names = "sai3_lpcg_mclk", 404 "sai3_lpcg_ipg_clk"; 405 power-domains = <&pd IMX_SC_R_SAI_3>; 406 }; 407 408 dsp_lpcg: clock-controller@59580000 { 409 compatible = "fsl,imx8qxp-lpcg"; 410 reg = <0x59580000 0x10000>; 411 #clock-cells = <1>; 412 clocks = <&audio_ipg_clk>, 413 <&audio_ipg_clk>, 414 <&audio_ipg_clk>; 415 clock-indices = <IMX_LPCG_CLK_4>, <IMX_LPCG_CLK_5>, 416 <IMX_LPCG_CLK_7>; 417 clock-output-names = "dsp_lpcg_adb_clk", 418 "dsp_lpcg_ipg_clk", 419 "dsp_lpcg_core_clk"; 420 power-domains = <&pd IMX_SC_R_DSP>; 421 }; 422 423 dsp_ram_lpcg: clock-controller@59590000 { 424 compatible = "fsl,imx8qxp-lpcg"; 425 reg = <0x59590000 0x10000>; 426 #clock-cells = <1>; 427 clocks = <&audio_ipg_clk>; 428 clock-indices = <IMX_LPCG_CLK_4>; 429 clock-output-names = "dsp_ram_lpcg_ipg_clk"; 430 power-domains = <&pd IMX_SC_R_DSP_RAM>; 431 }; 432 433 dsp: dsp@596e8000 { 434 compatible = "fsl,imx8qxp-hifi4"; 435 reg = <0x596e8000 0x88000>; 436 clocks = <&dsp_lpcg IMX_LPCG_CLK_5>, 437 <&dsp_ram_lpcg IMX_LPCG_CLK_4>, 438 <&dsp_lpcg IMX_LPCG_CLK_7>; 439 clock-names = "ipg", "ocram", "core"; 440 power-domains = <&pd IMX_SC_R_MU_13B>, 441 <&pd IMX_SC_R_MU_2A>; 442 mbox-names = "tx", "rx", "rxdb"; 443 mboxes = <&lsio_mu13 0 0>, 444 <&lsio_mu13 1 0>, 445 <&lsio_mu13 3 0>; 446 firmware-name = "imx/dsp/hifi4.bin"; 447 status = "disabled"; 448 }; 449 450 asrc1: asrc@59800000 { 451 compatible = "fsl,imx8qm-asrc"; 452 reg = <0x59800000 0x10000>; 453 interrupts = <GIC_SPI 380 IRQ_TYPE_LEVEL_HIGH>; 454 clocks = <&asrc1_lpcg IMX_LPCG_CLK_4>, 455 <&asrc1_lpcg IMX_LPCG_CLK_4>, 456 <&aud_pll_div0_lpcg IMX_LPCG_CLK_0>, 457 <&aud_pll_div1_lpcg IMX_LPCG_CLK_0>, 458 <&acm IMX_ADMA_ACM_AUD_CLK0_SEL>, 459 <&acm IMX_ADMA_ACM_AUD_CLK1_SEL>, 460 <&clk_dummy>, 461 <&clk_dummy>, 462 <&clk_dummy>, 463 <&clk_dummy>, 464 <&clk_dummy>, 465 <&clk_dummy>, 466 <&clk_dummy>, 467 <&clk_dummy>, 468 <&clk_dummy>, 469 <&clk_dummy>, 470 <&clk_dummy>, 471 <&clk_dummy>, 472 <&clk_dummy>; 473 clock-names = "mem", "ipg", 474 "asrck_0", "asrck_1", "asrck_2", "asrck_3", 475 "asrck_4", "asrck_5", "asrck_6", "asrck_7", 476 "asrck_8", "asrck_9", "asrck_a", "asrck_b", 477 "asrck_c", "asrck_d", "asrck_e", "asrck_f", 478 "spba"; 479 dmas = <&edma1 0 0 0>, 480 <&edma1 1 0 0>, 481 <&edma1 2 0 0>, 482 <&edma1 3 0 FSL_EDMA_RX>, 483 <&edma1 4 0 FSL_EDMA_RX>, 484 <&edma1 5 0 FSL_EDMA_RX>; 485 /* tx* is output channel of asrc, it is rx channel for eDMA */ 486 dma-names = "rxa", "rxb", "rxc", "txa", "txb", "txc"; 487 fsl,asrc-rate = <8000>; 488 fsl,asrc-width = <16>; 489 fsl,asrc-clk-map = <1>; 490 power-domains = <&pd IMX_SC_R_ASRC_1>; 491 status = "disabled"; 492 }; 493 494 sai4: sai@59820000 { 495 compatible = "fsl,imx8qm-sai"; 496 reg = <0x59820000 0x10000>; 497 interrupts = <GIC_SPI 329 IRQ_TYPE_LEVEL_HIGH>; 498 clocks = <&sai4_lpcg IMX_LPCG_CLK_4>, 499 <&clk_dummy>, 500 <&sai4_lpcg IMX_LPCG_CLK_0>, 501 <&clk_dummy>, 502 <&clk_dummy>; 503 clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3"; 504 dmas = <&edma1 8 0 FSL_EDMA_RX>, <&edma1 9 0 0>; 505 dma-names = "rx", "tx"; 506 power-domains = <&pd IMX_SC_R_SAI_4>; 507 status = "disabled"; 508 }; 509 510 sai5: sai@59830000 { 511 compatible = "fsl,imx8qm-sai"; 512 reg = <0x59830000 0x10000>; 513 interrupts = <GIC_SPI 331 IRQ_TYPE_LEVEL_HIGH>; 514 clocks = <&sai5_lpcg IMX_LPCG_CLK_4>, 515 <&clk_dummy>, 516 <&sai5_lpcg IMX_LPCG_CLK_0>, 517 <&clk_dummy>, 518 <&clk_dummy>; 519 clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3"; 520 dmas = <&edma1 10 0 0>; 521 dma-names = "tx"; 522 power-domains = <&pd IMX_SC_R_SAI_5>; 523 status = "disabled"; 524 }; 525 526 amix: amix@59840000 { 527 compatible = "fsl,imx8qm-audmix"; 528 reg = <0x59840000 0x10000>; 529 clocks = <&amix_lpcg IMX_LPCG_CLK_0>; 530 clock-names = "ipg"; 531 power-domains = <&pd IMX_SC_R_AMIX>; 532 dais = <&sai4>, <&sai5>; 533 status = "disabled"; 534 }; 535 536 mqs: mqs@59850000 { 537 compatible = "fsl,imx8qm-mqs"; 538 reg = <0x59850000 0x10000>; 539 clocks = <&mqs0_lpcg IMX_LPCG_CLK_4>, <&mqs0_lpcg IMX_LPCG_CLK_0>; 540 clock-names = "mclk", "core"; 541 power-domains = <&pd IMX_SC_R_MQS_0>; 542 status = "disabled"; 543 }; 544 545 edma1: dma-controller@599f0000 { 546 compatible = "fsl,imx8qm-edma"; 547 reg = <0x599f0000 0xc0000>; 548 #dma-cells = <3>; 549 dma-channels = <11>; 550 dma-channel-mask = <0xc0>; 551 interrupts = <GIC_SPI 382 IRQ_TYPE_LEVEL_HIGH>, /* 0 asrc 1 */ 552 <GIC_SPI 383 IRQ_TYPE_LEVEL_HIGH>, /* 1 */ 553 <GIC_SPI 384 IRQ_TYPE_LEVEL_HIGH>, /* 2 */ 554 <GIC_SPI 385 IRQ_TYPE_LEVEL_HIGH>, /* 3 */ 555 <GIC_SPI 386 IRQ_TYPE_LEVEL_HIGH>, /* 4 */ 556 <GIC_SPI 387 IRQ_TYPE_LEVEL_HIGH>, /* 5 */ 557 <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, /* 6 unused */ 558 <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, /* 7 unused */ 559 <GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH>, /* sai4 */ 560 <GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH>, 561 <GIC_SPI 332 IRQ_TYPE_LEVEL_HIGH>; /* sai5 */ 562 power-domains = <&pd IMX_SC_R_DMA_1_CH0>, 563 <&pd IMX_SC_R_DMA_1_CH1>, 564 <&pd IMX_SC_R_DMA_1_CH2>, 565 <&pd IMX_SC_R_DMA_1_CH3>, 566 <&pd IMX_SC_R_DMA_1_CH4>, 567 <&pd IMX_SC_R_DMA_1_CH5>, 568 <&pd IMX_SC_R_DMA_1_CH6>, 569 <&pd IMX_SC_R_DMA_1_CH7>, 570 <&pd IMX_SC_R_DMA_1_CH8>, 571 <&pd IMX_SC_R_DMA_1_CH9>, 572 <&pd IMX_SC_R_DMA_1_CH10>; 573 }; 574 575 aud_rec0_lpcg: clock-controller@59d00000 { 576 compatible = "fsl,imx8qxp-lpcg"; 577 reg = <0x59d00000 0x10000>; 578 #clock-cells = <1>; 579 clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>; 580 clock-indices = <IMX_LPCG_CLK_0>; 581 clock-output-names = "aud_rec_clk0_lpcg_clk"; 582 power-domains = <&pd IMX_SC_R_AUDIO_PLL_0>; 583 }; 584 585 aud_rec1_lpcg: clock-controller@59d10000 { 586 compatible = "fsl,imx8qxp-lpcg"; 587 reg = <0x59d10000 0x10000>; 588 #clock-cells = <1>; 589 clocks = <&clk IMX_SC_R_AUDIO_PLL_1 IMX_SC_PM_CLK_MST_BUS>; 590 clock-indices = <IMX_LPCG_CLK_0>; 591 clock-output-names = "aud_rec_clk1_lpcg_clk"; 592 power-domains = <&pd IMX_SC_R_AUDIO_PLL_1>; 593 }; 594 595 aud_pll_div0_lpcg: clock-controller@59d20000 { 596 compatible = "fsl,imx8qxp-lpcg"; 597 reg = <0x59d20000 0x10000>; 598 #clock-cells = <1>; 599 clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>; 600 clock-indices = <IMX_LPCG_CLK_0>; 601 clock-output-names = "aud_pll_div_clk0_lpcg_clk"; 602 power-domains = <&pd IMX_SC_R_AUDIO_PLL_0>; 603 }; 604 605 aud_pll_div1_lpcg: clock-controller@59d30000 { 606 compatible = "fsl,imx8qxp-lpcg"; 607 reg = <0x59d30000 0x10000>; 608 #clock-cells = <1>; 609 clocks = <&clk IMX_SC_R_AUDIO_PLL_1 IMX_SC_PM_CLK_SLV_BUS>; 610 clock-indices = <IMX_LPCG_CLK_0>; 611 clock-output-names = "aud_pll_div_clk1_lpcg_clk"; 612 power-domains = <&pd IMX_SC_R_AUDIO_PLL_1>; 613 }; 614 615 mclkout0_lpcg: clock-controller@59d50000 { 616 compatible = "fsl,imx8qxp-lpcg"; 617 reg = <0x59d50000 0x10000>; 618 #clock-cells = <1>; 619 clocks = <&acm IMX_ADMA_ACM_MCLKOUT0_SEL>; 620 clock-indices = <IMX_LPCG_CLK_0>; 621 clock-output-names = "mclkout0_lpcg_clk"; 622 power-domains = <&pd IMX_SC_R_MCLK_OUT_0>; 623 }; 624 625 mclkout1_lpcg: clock-controller@59d60000 { 626 compatible = "fsl,imx8qxp-lpcg"; 627 reg = <0x59d60000 0x10000>; 628 #clock-cells = <1>; 629 clocks = <&acm IMX_ADMA_ACM_MCLKOUT1_SEL>; 630 clock-indices = <IMX_LPCG_CLK_0>; 631 clock-output-names = "mclkout1_lpcg_clk"; 632 power-domains = <&pd IMX_SC_R_MCLK_OUT_1>; 633 }; 634 635 acm: acm@59e00000 { 636 compatible = "fsl,imx8qxp-acm"; 637 reg = <0x59e00000 0x1d0000>; 638 #clock-cells = <1>; 639 power-domains = <&pd IMX_SC_R_AUDIO_CLK_0>, 640 <&pd IMX_SC_R_AUDIO_CLK_1>, 641 <&pd IMX_SC_R_MCLK_OUT_0>, 642 <&pd IMX_SC_R_MCLK_OUT_1>, 643 <&pd IMX_SC_R_AUDIO_PLL_0>, 644 <&pd IMX_SC_R_AUDIO_PLL_1>, 645 <&pd IMX_SC_R_ASRC_0>, 646 <&pd IMX_SC_R_ASRC_1>, 647 <&pd IMX_SC_R_ESAI_0>, 648 <&pd IMX_SC_R_SAI_0>, 649 <&pd IMX_SC_R_SAI_1>, 650 <&pd IMX_SC_R_SAI_2>, 651 <&pd IMX_SC_R_SAI_3>, 652 <&pd IMX_SC_R_SAI_4>, 653 <&pd IMX_SC_R_SAI_5>, 654 <&pd IMX_SC_R_SPDIF_0>, 655 <&pd IMX_SC_R_MQS_0>; 656 clocks = <&aud_rec0_lpcg IMX_LPCG_CLK_0>, 657 <&aud_rec1_lpcg IMX_LPCG_CLK_0>, 658 <&aud_pll_div0_lpcg IMX_LPCG_CLK_0>, 659 <&aud_pll_div1_lpcg IMX_LPCG_CLK_0>, 660 <&clk_ext_aud_mclk0>, 661 <&clk_ext_aud_mclk1>, 662 <&clk_esai0_rx_clk>, 663 <&clk_esai0_rx_hf_clk>, 664 <&clk_esai0_tx_clk>, 665 <&clk_esai0_tx_hf_clk>, 666 <&clk_spdif0_rx>, 667 <&clk_sai0_rx_bclk>, 668 <&clk_sai0_tx_bclk>, 669 <&clk_sai1_rx_bclk>, 670 <&clk_sai1_tx_bclk>, 671 <&clk_sai2_rx_bclk>, 672 <&clk_sai3_rx_bclk>, 673 <&clk_sai4_rx_bclk>; 674 clock-names = "aud_rec_clk0_lpcg_clk", 675 "aud_rec_clk1_lpcg_clk", 676 "aud_pll_div_clk0_lpcg_clk", 677 "aud_pll_div_clk1_lpcg_clk", 678 "ext_aud_mclk0", 679 "ext_aud_mclk1", 680 "esai0_rx_clk", 681 "esai0_rx_hf_clk", 682 "esai0_tx_clk", 683 "esai0_tx_hf_clk", 684 "spdif0_rx", 685 "sai0_rx_bclk", 686 "sai0_tx_bclk", 687 "sai1_rx_bclk", 688 "sai1_tx_bclk", 689 "sai2_rx_bclk", 690 "sai3_rx_bclk", 691 "sai4_rx_bclk"; 692 }; 693 694 asrc1_lpcg: clock-controller@59c00000 { 695 compatible = "fsl,imx8qxp-lpcg"; 696 reg = <0x59c00000 0x10000>; 697 #clock-cells = <1>; 698 clocks = <&audio_ipg_clk>; 699 clock-indices = <IMX_LPCG_CLK_4>; 700 clock-output-names = "asrc1_lpcg_ipg_clk"; 701 power-domains = <&pd IMX_SC_R_ASRC_1>; 702 }; 703 704 sai4_lpcg: clock-controller@59c20000 { 705 compatible = "fsl,imx8qxp-lpcg"; 706 reg = <0x59c20000 0x10000>; 707 #clock-cells = <1>; 708 clocks = <&acm IMX_ADMA_ACM_SAI4_MCLK_SEL>, 709 <&audio_ipg_clk>; 710 clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_4>; 711 clock-output-names = "sai4_lpcg_mclk", 712 "sai4_lpcg_ipg_clk"; 713 power-domains = <&pd IMX_SC_R_SAI_4>; 714 }; 715 716 sai5_lpcg: clock-controller@59c30000 { 717 compatible = "fsl,imx8qxp-lpcg"; 718 reg = <0x59c30000 0x10000>; 719 #clock-cells = <1>; 720 clocks = <&acm IMX_ADMA_ACM_SAI5_MCLK_SEL>, 721 <&audio_ipg_clk>; 722 clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_4>; 723 clock-output-names = "sai5_lpcg_mclk", 724 "sai5_lpcg_ipg_clk"; 725 power-domains = <&pd IMX_SC_R_SAI_5>; 726 }; 727 728 amix_lpcg: clock-controller@59c40000 { 729 compatible = "fsl,imx8qxp-lpcg"; 730 reg = <0x59c40000 0x10000>; 731 #clock-cells = <1>; 732 clocks = <&audio_ipg_clk>; 733 clock-indices = <IMX_LPCG_CLK_0>; 734 clock-output-names = "amix_lpcg_ipg_clk"; 735 power-domains = <&pd IMX_SC_R_AMIX>; 736 }; 737 738 mqs0_lpcg: clock-controller@59c50000 { 739 compatible = "fsl,imx8qxp-lpcg"; 740 reg = <0x59c50000 0x10000>; 741 #clock-cells = <1>; 742 clocks = <&acm IMX_ADMA_ACM_MQS_TX_CLK_SEL>, 743 <&audio_ipg_clk>; 744 clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_4>; 745 clock-output-names = "mqs0_lpcg_mclk", 746 "mqs0_lpcg_ipg_clk"; 747 power-domains = <&pd IMX_SC_R_MQS_0>; 748 }; 749}; 750