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-dsp"; 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_13A>, 441 <&pd IMX_SC_R_MU_13B>, 442 <&pd IMX_SC_R_DSP>, 443 <&pd IMX_SC_R_DSP_RAM>; 444 mbox-names = "txdb0", "txdb1", 445 "rxdb0", "rxdb1"; 446 mboxes = <&lsio_mu13 2 0>, 447 <&lsio_mu13 2 1>, 448 <&lsio_mu13 3 0>, 449 <&lsio_mu13 3 1>; 450 memory-region = <&dsp_reserved>; 451 status = "disabled"; 452 }; 453 454 asrc1: asrc@59800000 { 455 compatible = "fsl,imx8qm-asrc"; 456 reg = <0x59800000 0x10000>; 457 interrupts = <GIC_SPI 380 IRQ_TYPE_LEVEL_HIGH>; 458 clocks = <&asrc1_lpcg IMX_LPCG_CLK_4>, 459 <&asrc1_lpcg IMX_LPCG_CLK_4>, 460 <&aud_pll_div0_lpcg IMX_LPCG_CLK_0>, 461 <&aud_pll_div1_lpcg IMX_LPCG_CLK_0>, 462 <&acm IMX_ADMA_ACM_AUD_CLK0_SEL>, 463 <&acm IMX_ADMA_ACM_AUD_CLK1_SEL>, 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 <&clk_dummy>, 474 <&clk_dummy>, 475 <&clk_dummy>, 476 <&clk_dummy>; 477 clock-names = "mem", "ipg", 478 "asrck_0", "asrck_1", "asrck_2", "asrck_3", 479 "asrck_4", "asrck_5", "asrck_6", "asrck_7", 480 "asrck_8", "asrck_9", "asrck_a", "asrck_b", 481 "asrck_c", "asrck_d", "asrck_e", "asrck_f", 482 "spba"; 483 dmas = <&edma1 0 0 0>, 484 <&edma1 1 0 0>, 485 <&edma1 2 0 0>, 486 <&edma1 3 0 FSL_EDMA_RX>, 487 <&edma1 4 0 FSL_EDMA_RX>, 488 <&edma1 5 0 FSL_EDMA_RX>; 489 /* tx* is output channel of asrc, it is rx channel for eDMA */ 490 dma-names = "rxa", "rxb", "rxc", "txa", "txb", "txc"; 491 fsl,asrc-rate = <8000>; 492 fsl,asrc-width = <16>; 493 fsl,asrc-clk-map = <1>; 494 power-domains = <&pd IMX_SC_R_ASRC_1>; 495 status = "disabled"; 496 }; 497 498 sai4: sai@59820000 { 499 compatible = "fsl,imx8qm-sai"; 500 reg = <0x59820000 0x10000>; 501 interrupts = <GIC_SPI 329 IRQ_TYPE_LEVEL_HIGH>; 502 clocks = <&sai4_lpcg IMX_LPCG_CLK_4>, 503 <&clk_dummy>, 504 <&sai4_lpcg IMX_LPCG_CLK_0>, 505 <&clk_dummy>, 506 <&clk_dummy>; 507 clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3"; 508 dmas = <&edma1 8 0 FSL_EDMA_RX>, <&edma1 9 0 0>; 509 dma-names = "rx", "tx"; 510 power-domains = <&pd IMX_SC_R_SAI_4>; 511 status = "disabled"; 512 }; 513 514 sai5: sai@59830000 { 515 compatible = "fsl,imx8qm-sai"; 516 reg = <0x59830000 0x10000>; 517 interrupts = <GIC_SPI 331 IRQ_TYPE_LEVEL_HIGH>; 518 clocks = <&sai5_lpcg IMX_LPCG_CLK_4>, 519 <&clk_dummy>, 520 <&sai5_lpcg IMX_LPCG_CLK_0>, 521 <&clk_dummy>, 522 <&clk_dummy>; 523 clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3"; 524 dmas = <&edma1 10 0 0>; 525 dma-names = "tx"; 526 power-domains = <&pd IMX_SC_R_SAI_5>; 527 status = "disabled"; 528 }; 529 530 amix: amix@59840000 { 531 compatible = "fsl,imx8qm-audmix"; 532 reg = <0x59840000 0x10000>; 533 clocks = <&amix_lpcg IMX_LPCG_CLK_0>; 534 clock-names = "ipg"; 535 power-domains = <&pd IMX_SC_R_AMIX>; 536 dais = <&sai4>, <&sai5>; 537 status = "disabled"; 538 }; 539 540 mqs: mqs@59850000 { 541 compatible = "fsl,imx8qm-mqs"; 542 reg = <0x59850000 0x10000>; 543 clocks = <&mqs0_lpcg IMX_LPCG_CLK_4>, <&mqs0_lpcg IMX_LPCG_CLK_0>; 544 clock-names = "mclk", "core"; 545 power-domains = <&pd IMX_SC_R_MQS_0>; 546 status = "disabled"; 547 }; 548 549 edma1: dma-controller@599f0000 { 550 compatible = "fsl,imx8qm-edma"; 551 reg = <0x599f0000 0xc0000>; 552 #dma-cells = <3>; 553 dma-channels = <11>; 554 dma-channel-mask = <0xc0>; 555 interrupts = <GIC_SPI 382 IRQ_TYPE_LEVEL_HIGH>, /* 0 asrc 1 */ 556 <GIC_SPI 383 IRQ_TYPE_LEVEL_HIGH>, /* 1 */ 557 <GIC_SPI 384 IRQ_TYPE_LEVEL_HIGH>, /* 2 */ 558 <GIC_SPI 385 IRQ_TYPE_LEVEL_HIGH>, /* 3 */ 559 <GIC_SPI 386 IRQ_TYPE_LEVEL_HIGH>, /* 4 */ 560 <GIC_SPI 387 IRQ_TYPE_LEVEL_HIGH>, /* 5 */ 561 <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, /* 6 unused */ 562 <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, /* 7 unused */ 563 <GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH>, /* sai4 */ 564 <GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH>, 565 <GIC_SPI 332 IRQ_TYPE_LEVEL_HIGH>; /* sai5 */ 566 power-domains = <&pd IMX_SC_R_DMA_1_CH0>, 567 <&pd IMX_SC_R_DMA_1_CH1>, 568 <&pd IMX_SC_R_DMA_1_CH2>, 569 <&pd IMX_SC_R_DMA_1_CH3>, 570 <&pd IMX_SC_R_DMA_1_CH4>, 571 <&pd IMX_SC_R_DMA_1_CH5>, 572 <&pd IMX_SC_R_DMA_1_CH6>, 573 <&pd IMX_SC_R_DMA_1_CH7>, 574 <&pd IMX_SC_R_DMA_1_CH8>, 575 <&pd IMX_SC_R_DMA_1_CH9>, 576 <&pd IMX_SC_R_DMA_1_CH10>; 577 }; 578 579 aud_rec0_lpcg: clock-controller@59d00000 { 580 compatible = "fsl,imx8qxp-lpcg"; 581 reg = <0x59d00000 0x10000>; 582 #clock-cells = <1>; 583 clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>; 584 clock-indices = <IMX_LPCG_CLK_0>; 585 clock-output-names = "aud_rec_clk0_lpcg_clk"; 586 power-domains = <&pd IMX_SC_R_AUDIO_PLL_0>; 587 }; 588 589 aud_rec1_lpcg: clock-controller@59d10000 { 590 compatible = "fsl,imx8qxp-lpcg"; 591 reg = <0x59d10000 0x10000>; 592 #clock-cells = <1>; 593 clocks = <&clk IMX_SC_R_AUDIO_PLL_1 IMX_SC_PM_CLK_MST_BUS>; 594 clock-indices = <IMX_LPCG_CLK_0>; 595 clock-output-names = "aud_rec_clk1_lpcg_clk"; 596 power-domains = <&pd IMX_SC_R_AUDIO_PLL_1>; 597 }; 598 599 aud_pll_div0_lpcg: clock-controller@59d20000 { 600 compatible = "fsl,imx8qxp-lpcg"; 601 reg = <0x59d20000 0x10000>; 602 #clock-cells = <1>; 603 clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>; 604 clock-indices = <IMX_LPCG_CLK_0>; 605 clock-output-names = "aud_pll_div_clk0_lpcg_clk"; 606 power-domains = <&pd IMX_SC_R_AUDIO_PLL_0>; 607 }; 608 609 aud_pll_div1_lpcg: clock-controller@59d30000 { 610 compatible = "fsl,imx8qxp-lpcg"; 611 reg = <0x59d30000 0x10000>; 612 #clock-cells = <1>; 613 clocks = <&clk IMX_SC_R_AUDIO_PLL_1 IMX_SC_PM_CLK_SLV_BUS>; 614 clock-indices = <IMX_LPCG_CLK_0>; 615 clock-output-names = "aud_pll_div_clk1_lpcg_clk"; 616 power-domains = <&pd IMX_SC_R_AUDIO_PLL_1>; 617 }; 618 619 mclkout0_lpcg: clock-controller@59d50000 { 620 compatible = "fsl,imx8qxp-lpcg"; 621 reg = <0x59d50000 0x10000>; 622 #clock-cells = <1>; 623 clocks = <&acm IMX_ADMA_ACM_MCLKOUT0_SEL>; 624 clock-indices = <IMX_LPCG_CLK_0>; 625 clock-output-names = "mclkout0_lpcg_clk"; 626 power-domains = <&pd IMX_SC_R_MCLK_OUT_0>; 627 }; 628 629 mclkout1_lpcg: clock-controller@59d60000 { 630 compatible = "fsl,imx8qxp-lpcg"; 631 reg = <0x59d60000 0x10000>; 632 #clock-cells = <1>; 633 clocks = <&acm IMX_ADMA_ACM_MCLKOUT1_SEL>; 634 clock-indices = <IMX_LPCG_CLK_0>; 635 clock-output-names = "mclkout1_lpcg_clk"; 636 power-domains = <&pd IMX_SC_R_MCLK_OUT_1>; 637 }; 638 639 acm: acm@59e00000 { 640 compatible = "fsl,imx8qxp-acm"; 641 reg = <0x59e00000 0x1d0000>; 642 #clock-cells = <1>; 643 power-domains = <&pd IMX_SC_R_AUDIO_CLK_0>, 644 <&pd IMX_SC_R_AUDIO_CLK_1>, 645 <&pd IMX_SC_R_MCLK_OUT_0>, 646 <&pd IMX_SC_R_MCLK_OUT_1>, 647 <&pd IMX_SC_R_AUDIO_PLL_0>, 648 <&pd IMX_SC_R_AUDIO_PLL_1>, 649 <&pd IMX_SC_R_ASRC_0>, 650 <&pd IMX_SC_R_ASRC_1>, 651 <&pd IMX_SC_R_ESAI_0>, 652 <&pd IMX_SC_R_SAI_0>, 653 <&pd IMX_SC_R_SAI_1>, 654 <&pd IMX_SC_R_SAI_2>, 655 <&pd IMX_SC_R_SAI_3>, 656 <&pd IMX_SC_R_SAI_4>, 657 <&pd IMX_SC_R_SAI_5>, 658 <&pd IMX_SC_R_SPDIF_0>, 659 <&pd IMX_SC_R_MQS_0>; 660 clocks = <&aud_rec0_lpcg IMX_LPCG_CLK_0>, 661 <&aud_rec1_lpcg IMX_LPCG_CLK_0>, 662 <&aud_pll_div0_lpcg IMX_LPCG_CLK_0>, 663 <&aud_pll_div1_lpcg IMX_LPCG_CLK_0>, 664 <&clk_ext_aud_mclk0>, 665 <&clk_ext_aud_mclk1>, 666 <&clk_esai0_rx_clk>, 667 <&clk_esai0_rx_hf_clk>, 668 <&clk_esai0_tx_clk>, 669 <&clk_esai0_tx_hf_clk>, 670 <&clk_spdif0_rx>, 671 <&clk_sai0_rx_bclk>, 672 <&clk_sai0_tx_bclk>, 673 <&clk_sai1_rx_bclk>, 674 <&clk_sai1_tx_bclk>, 675 <&clk_sai2_rx_bclk>, 676 <&clk_sai3_rx_bclk>, 677 <&clk_sai4_rx_bclk>; 678 clock-names = "aud_rec_clk0_lpcg_clk", 679 "aud_rec_clk1_lpcg_clk", 680 "aud_pll_div_clk0_lpcg_clk", 681 "aud_pll_div_clk1_lpcg_clk", 682 "ext_aud_mclk0", 683 "ext_aud_mclk1", 684 "esai0_rx_clk", 685 "esai0_rx_hf_clk", 686 "esai0_tx_clk", 687 "esai0_tx_hf_clk", 688 "spdif0_rx", 689 "sai0_rx_bclk", 690 "sai0_tx_bclk", 691 "sai1_rx_bclk", 692 "sai1_tx_bclk", 693 "sai2_rx_bclk", 694 "sai3_rx_bclk", 695 "sai4_rx_bclk"; 696 }; 697 698 asrc1_lpcg: clock-controller@59c00000 { 699 compatible = "fsl,imx8qxp-lpcg"; 700 reg = <0x59c00000 0x10000>; 701 #clock-cells = <1>; 702 clocks = <&audio_ipg_clk>; 703 clock-indices = <IMX_LPCG_CLK_4>; 704 clock-output-names = "asrc1_lpcg_ipg_clk"; 705 power-domains = <&pd IMX_SC_R_ASRC_1>; 706 }; 707 708 sai4_lpcg: clock-controller@59c20000 { 709 compatible = "fsl,imx8qxp-lpcg"; 710 reg = <0x59c20000 0x10000>; 711 #clock-cells = <1>; 712 clocks = <&acm IMX_ADMA_ACM_SAI4_MCLK_SEL>, 713 <&audio_ipg_clk>; 714 clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_4>; 715 clock-output-names = "sai4_lpcg_mclk", 716 "sai4_lpcg_ipg_clk"; 717 power-domains = <&pd IMX_SC_R_SAI_4>; 718 }; 719 720 sai5_lpcg: clock-controller@59c30000 { 721 compatible = "fsl,imx8qxp-lpcg"; 722 reg = <0x59c30000 0x10000>; 723 #clock-cells = <1>; 724 clocks = <&acm IMX_ADMA_ACM_SAI5_MCLK_SEL>, 725 <&audio_ipg_clk>; 726 clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_4>; 727 clock-output-names = "sai5_lpcg_mclk", 728 "sai5_lpcg_ipg_clk"; 729 power-domains = <&pd IMX_SC_R_SAI_5>; 730 }; 731 732 amix_lpcg: clock-controller@59c40000 { 733 compatible = "fsl,imx8qxp-lpcg"; 734 reg = <0x59c40000 0x10000>; 735 #clock-cells = <1>; 736 clocks = <&audio_ipg_clk>; 737 clock-indices = <IMX_LPCG_CLK_0>; 738 clock-output-names = "amix_lpcg_ipg_clk"; 739 power-domains = <&pd IMX_SC_R_AMIX>; 740 }; 741 742 mqs0_lpcg: clock-controller@59c50000 { 743 compatible = "fsl,imx8qxp-lpcg"; 744 reg = <0x59c50000 0x10000>; 745 #clock-cells = <1>; 746 clocks = <&acm IMX_ADMA_ACM_MQS_TX_CLK_SEL>, 747 <&audio_ipg_clk>; 748 clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_4>; 749 clock-output-names = "mqs0_lpcg_mclk", 750 "mqs0_lpcg_ipg_clk"; 751 power-domains = <&pd IMX_SC_R_MQS_0>; 752 }; 753}; 754