| // SPDX-License-Identifier: GPL-2.0+ |
| /* |
| * Copyright 2018-2019 NXP |
| * Dong Aisheng <aisheng.dong@nxp.com> |
| */ |
| |
| #include <dt-bindings/clock/imx8-clock.h> |
| #include <dt-bindings/clock/imx8-lpcg.h> |
| #include <dt-bindings/dma/fsl-edma.h> |
| #include <dt-bindings/firmware/imx/rsrc.h> |
| |
| audio_ipg_clk: clock-audio-ipg { |
| compatible = "fixed-clock"; |
| #clock-cells = <0>; |
| clock-frequency = <120000000>; |
| clock-output-names = "audio_ipg_clk"; |
| }; |
| |
| clk_ext_aud_mclk0: clock-ext-aud-mclk0 { |
| compatible = "fixed-clock"; |
| #clock-cells = <0>; |
| clock-frequency = <0>; |
| clock-output-names = "ext_aud_mclk0"; |
| }; |
| |
| clk_ext_aud_mclk1: clock-ext-aud-mclk1 { |
| compatible = "fixed-clock"; |
| #clock-cells = <0>; |
| clock-frequency = <0>; |
| clock-output-names = "ext_aud_mclk1"; |
| }; |
| |
| clk_esai0_rx_clk: clock-esai0-rx { |
| compatible = "fixed-clock"; |
| #clock-cells = <0>; |
| clock-frequency = <0>; |
| clock-output-names = "esai0_rx_clk"; |
| }; |
| |
| clk_esai0_rx_hf_clk: clock-esai0-rx-hf { |
| compatible = "fixed-clock"; |
| #clock-cells = <0>; |
| clock-frequency = <0>; |
| clock-output-names = "esai0_rx_hf_clk"; |
| }; |
| |
| clk_esai0_tx_clk: clock-esai0-tx { |
| compatible = "fixed-clock"; |
| #clock-cells = <0>; |
| clock-frequency = <0>; |
| clock-output-names = "esai0_tx_clk"; |
| }; |
| |
| clk_esai0_tx_hf_clk: clock-esai0-tx-hf { |
| compatible = "fixed-clock"; |
| #clock-cells = <0>; |
| clock-frequency = <0>; |
| clock-output-names = "esai0_tx_hf_clk"; |
| }; |
| |
| clk_spdif0_rx: clock-spdif0-rx { |
| compatible = "fixed-clock"; |
| #clock-cells = <0>; |
| clock-frequency = <0>; |
| clock-output-names = "spdif0_rx"; |
| }; |
| |
| clk_sai0_rx_bclk: clock-sai0-rx-bclk { |
| compatible = "fixed-clock"; |
| #clock-cells = <0>; |
| clock-frequency = <0>; |
| clock-output-names = "sai0_rx_bclk"; |
| }; |
| |
| clk_sai0_tx_bclk: clock-sai0-tx-bclk { |
| compatible = "fixed-clock"; |
| #clock-cells = <0>; |
| clock-frequency = <0>; |
| clock-output-names = "sai0_tx_bclk"; |
| }; |
| |
| clk_sai1_rx_bclk: clock-sai1-rx-bclk { |
| compatible = "fixed-clock"; |
| #clock-cells = <0>; |
| clock-frequency = <0>; |
| clock-output-names = "sai1_rx_bclk"; |
| }; |
| |
| clk_sai1_tx_bclk: clock-sai1-tx-bclk { |
| compatible = "fixed-clock"; |
| #clock-cells = <0>; |
| clock-frequency = <0>; |
| clock-output-names = "sai1_tx_bclk"; |
| }; |
| |
| clk_sai2_rx_bclk: clock-sai2-rx-bclk { |
| compatible = "fixed-clock"; |
| #clock-cells = <0>; |
| clock-frequency = <0>; |
| clock-output-names = "sai2_rx_bclk"; |
| }; |
| |
| clk_sai3_rx_bclk: clock-sai3-rx-bclk { |
| compatible = "fixed-clock"; |
| #clock-cells = <0>; |
| clock-frequency = <0>; |
| clock-output-names = "sai3_rx_bclk"; |
| }; |
| |
| clk_sai4_rx_bclk: clock-sai4-rx-bclk { |
| compatible = "fixed-clock"; |
| #clock-cells = <0>; |
| clock-frequency = <0>; |
| clock-output-names = "sai4_rx_bclk"; |
| }; |
| |
| audio_subsys: bus@59000000 { |
| compatible = "simple-bus"; |
| #address-cells = <1>; |
| #size-cells = <1>; |
| ranges = <0x59000000 0x0 0x59000000 0x1000000>; |
| |
| asrc0: asrc@59000000 { |
| compatible = "fsl,imx8qm-asrc"; |
| reg = <0x59000000 0x10000>; |
| interrupts = <GIC_SPI 372 IRQ_TYPE_LEVEL_HIGH>; |
| clocks = <&asrc0_lpcg IMX_LPCG_CLK_0>, |
| <&asrc0_lpcg IMX_LPCG_CLK_0>, |
| <&aud_pll_div0_lpcg IMX_LPCG_CLK_4>, |
| <&aud_pll_div1_lpcg IMX_LPCG_CLK_4>, |
| <&acm IMX_ADMA_ACM_AUD_CLK0_SEL>, |
| <&acm IMX_ADMA_ACM_AUD_CLK1_SEL>, |
| <&clk_dummy>, |
| <&clk_dummy>, |
| <&clk_dummy>, |
| <&clk_dummy>, |
| <&clk_dummy>, |
| <&clk_dummy>, |
| <&clk_dummy>, |
| <&clk_dummy>, |
| <&clk_dummy>, |
| <&clk_dummy>, |
| <&clk_dummy>, |
| <&clk_dummy>, |
| <&clk_dummy>; |
| clock-names = "mem", "ipg", |
| "asrck_0", "asrck_1", "asrck_2", "asrck_3", |
| "asrck_4", "asrck_5", "asrck_6", "asrck_7", |
| "asrck_8", "asrck_9", "asrck_a", "asrck_b", |
| "asrck_c", "asrck_d", "asrck_e", "asrck_f", |
| "spba"; |
| dmas = <&edma0 0 0 0>, |
| <&edma0 1 0 0>, |
| <&edma0 2 0 0>, |
| <&edma0 3 0 FSL_EDMA_RX>, |
| <&edma0 4 0 FSL_EDMA_RX>, |
| <&edma0 5 0 FSL_EDMA_RX>; |
| /* tx* is output channel of asrc, it is rx channel for eDMA */ |
| dma-names = "rxa", "rxb", "rxc", "txa", "txb", "txc"; |
| fsl,asrc-rate = <8000>; |
| fsl,asrc-width = <16>; |
| fsl,asrc-clk-map = <0>; |
| power-domains = <&pd IMX_SC_R_ASRC_0>; |
| status = "disabled"; |
| }; |
| |
| esai0: esai@59010000 { |
| compatible = "fsl,imx8qm-esai"; |
| reg = <0x59010000 0x10000>; |
| interrupts = <GIC_SPI 409 IRQ_TYPE_LEVEL_HIGH>; |
| clocks = <&esai0_lpcg IMX_LPCG_CLK_4>, |
| <&esai0_lpcg IMX_LPCG_CLK_0>, |
| <&esai0_lpcg IMX_LPCG_CLK_4>, |
| <&clk_dummy>; |
| clock-names = "core", "extal", "fsys", "spba"; |
| dmas = <&edma0 6 0 FSL_EDMA_RX>, <&edma0 7 0 0>; |
| dma-names = "rx", "tx"; |
| power-domains = <&pd IMX_SC_R_ESAI_0>; |
| status = "disabled"; |
| }; |
| |
| spdif0: spdif@59020000 { |
| compatible = "fsl,imx8qm-spdif"; |
| reg = <0x59020000 0x10000>; |
| interrupts = <GIC_SPI 456 IRQ_TYPE_LEVEL_HIGH>, /* rx */ |
| <GIC_SPI 458 IRQ_TYPE_LEVEL_HIGH>; /* tx */ |
| clocks = <&spdif0_lpcg IMX_LPCG_CLK_4>, /* core */ |
| <&clk_dummy>, /* rxtx0 */ |
| <&spdif0_lpcg IMX_LPCG_CLK_0>, /* rxtx1 */ |
| <&clk_dummy>, /* rxtx2 */ |
| <&clk_dummy>, /* rxtx3 */ |
| <&clk_dummy>, /* rxtx4 */ |
| <&audio_ipg_clk>, /* rxtx5 */ |
| <&clk_dummy>, /* rxtx6 */ |
| <&clk_dummy>, /* rxtx7 */ |
| <&clk_dummy>; /* spba */ |
| clock-names = "core", "rxtx0", "rxtx1", "rxtx2", "rxtx3", "rxtx4", |
| "rxtx5", "rxtx6", "rxtx7", "spba"; |
| dmas = <&edma0 8 0 (FSL_EDMA_MULTI_FIFO | FSL_EDMA_RX)>, |
| <&edma0 9 0 FSL_EDMA_MULTI_FIFO>; |
| dma-names = "rx", "tx"; |
| power-domains = <&pd IMX_SC_R_SPDIF_0>; |
| status = "disabled"; |
| }; |
| |
| sai0: sai@59040000 { |
| compatible = "fsl,imx8qm-sai"; |
| reg = <0x59040000 0x10000>; |
| interrupts = <GIC_SPI 314 IRQ_TYPE_LEVEL_HIGH>; |
| clocks = <&sai0_lpcg IMX_LPCG_CLK_4>, |
| <&clk_dummy>, |
| <&sai0_lpcg IMX_LPCG_CLK_0>, |
| <&clk_dummy>, |
| <&clk_dummy>; |
| clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3"; |
| dma-names = "rx", "tx"; |
| dmas = <&edma0 12 0 1>, <&edma0 13 0 0>; |
| power-domains = <&pd IMX_SC_R_SAI_0>; |
| status = "disabled"; |
| }; |
| |
| sai1: sai@59050000 { |
| compatible = "fsl,imx8qm-sai"; |
| reg = <0x59050000 0x10000>; |
| interrupts = <GIC_SPI 316 IRQ_TYPE_LEVEL_HIGH>; |
| clocks = <&sai1_lpcg IMX_LPCG_CLK_4>, |
| <&clk_dummy>, |
| <&sai1_lpcg IMX_LPCG_CLK_0>, |
| <&clk_dummy>, |
| <&clk_dummy>; |
| clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3"; |
| dma-names = "rx", "tx"; |
| dmas = <&edma0 14 0 1>, <&edma0 15 0 0>; |
| power-domains = <&pd IMX_SC_R_SAI_1>; |
| status = "disabled"; |
| }; |
| |
| sai2: sai@59060000 { |
| compatible = "fsl,imx8qm-sai"; |
| reg = <0x59060000 0x10000>; |
| interrupts = <GIC_SPI 318 IRQ_TYPE_LEVEL_HIGH>; |
| clocks = <&sai2_lpcg IMX_LPCG_CLK_4>, |
| <&clk_dummy>, |
| <&sai2_lpcg IMX_LPCG_CLK_0>, |
| <&clk_dummy>, |
| <&clk_dummy>; |
| clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3"; |
| dma-names = "rx"; |
| dmas = <&edma0 16 0 1>; |
| power-domains = <&pd IMX_SC_R_SAI_2>; |
| status = "disabled"; |
| }; |
| |
| sai3: sai@59070000 { |
| compatible = "fsl,imx8qm-sai"; |
| reg = <0x59070000 0x10000>; |
| interrupts = <GIC_SPI 323 IRQ_TYPE_LEVEL_HIGH>; |
| clocks = <&sai3_lpcg IMX_LPCG_CLK_4>, |
| <&clk_dummy>, |
| <&sai3_lpcg IMX_LPCG_CLK_0>, |
| <&clk_dummy>, |
| <&clk_dummy>; |
| clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3"; |
| dma-names = "rx"; |
| dmas = <&edma0 17 0 1>; |
| power-domains = <&pd IMX_SC_R_SAI_3>; |
| status = "disabled"; |
| }; |
| |
| edma0: dma-controller@591f0000 { |
| compatible = "fsl,imx8qm-edma"; |
| reg = <0x591f0000 0x190000>; |
| #dma-cells = <3>; |
| dma-channels = <24>; |
| dma-channel-mask = <0x5c0c00>; |
| interrupts = <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>, /* 0 asrc 0 */ |
| <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>, /* 1 */ |
| <GIC_SPI 376 IRQ_TYPE_LEVEL_HIGH>, /* 2 */ |
| <GIC_SPI 377 IRQ_TYPE_LEVEL_HIGH>, /* 3 */ |
| <GIC_SPI 378 IRQ_TYPE_LEVEL_HIGH>, /* 4 */ |
| <GIC_SPI 379 IRQ_TYPE_LEVEL_HIGH>, /* 5 */ |
| <GIC_SPI 410 IRQ_TYPE_LEVEL_HIGH>, /* 6 esai0 */ |
| <GIC_SPI 410 IRQ_TYPE_LEVEL_HIGH>, /* 7 */ |
| <GIC_SPI 457 IRQ_TYPE_LEVEL_HIGH>, /* 8 spdif0 */ |
| <GIC_SPI 459 IRQ_TYPE_LEVEL_HIGH>, /* 9 */ |
| <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, /* 10 unused */ |
| <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, /* 11 unused */ |
| <GIC_SPI 315 IRQ_TYPE_LEVEL_HIGH>, /* 12 sai0 */ |
| <GIC_SPI 315 IRQ_TYPE_LEVEL_HIGH>, /* 13 */ |
| <GIC_SPI 317 IRQ_TYPE_LEVEL_HIGH>, /* 14 sai1 */ |
| <GIC_SPI 317 IRQ_TYPE_LEVEL_HIGH>, /* 15 */ |
| <GIC_SPI 319 IRQ_TYPE_LEVEL_HIGH>, /* 16 sai2 */ |
| <GIC_SPI 324 IRQ_TYPE_LEVEL_HIGH>, /* 17 sai3 */ |
| <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, /* 18 unused */ |
| <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, /* 19 unused */ |
| <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, /* 20 unused */ |
| <GIC_SPI 391 IRQ_TYPE_LEVEL_HIGH>, /* 21 */ |
| <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, /* 22 unused */ |
| <GIC_SPI 393 IRQ_TYPE_LEVEL_HIGH>; /* 23 unused */ |
| power-domains = <&pd IMX_SC_R_DMA_0_CH0>, |
| <&pd IMX_SC_R_DMA_0_CH1>, |
| <&pd IMX_SC_R_DMA_0_CH2>, |
| <&pd IMX_SC_R_DMA_0_CH3>, |
| <&pd IMX_SC_R_DMA_0_CH4>, |
| <&pd IMX_SC_R_DMA_0_CH5>, |
| <&pd IMX_SC_R_DMA_0_CH6>, |
| <&pd IMX_SC_R_DMA_0_CH7>, |
| <&pd IMX_SC_R_DMA_0_CH8>, |
| <&pd IMX_SC_R_DMA_0_CH9>, |
| <&pd IMX_SC_R_DMA_0_CH10>, |
| <&pd IMX_SC_R_DMA_0_CH11>, |
| <&pd IMX_SC_R_DMA_0_CH12>, |
| <&pd IMX_SC_R_DMA_0_CH13>, |
| <&pd IMX_SC_R_DMA_0_CH14>, |
| <&pd IMX_SC_R_DMA_0_CH15>, |
| <&pd IMX_SC_R_DMA_0_CH16>, |
| <&pd IMX_SC_R_DMA_0_CH17>, |
| <&pd IMX_SC_R_DMA_0_CH18>, |
| <&pd IMX_SC_R_DMA_0_CH19>, |
| <&pd IMX_SC_R_DMA_0_CH20>, |
| <&pd IMX_SC_R_DMA_0_CH21>, |
| <&pd IMX_SC_R_DMA_0_CH22>, |
| <&pd IMX_SC_R_DMA_0_CH23>; |
| }; |
| |
| asrc0_lpcg: clock-controller@59400000 { |
| compatible = "fsl,imx8qxp-lpcg"; |
| reg = <0x59400000 0x10000>; |
| #clock-cells = <1>; |
| clocks = <&audio_ipg_clk>; |
| clock-indices = <IMX_LPCG_CLK_4>; |
| clock-output-names = "asrc0_lpcg_ipg_clk"; |
| power-domains = <&pd IMX_SC_R_ASRC_0>; |
| }; |
| |
| esai0_lpcg: clock-controller@59410000 { |
| compatible = "fsl,imx8qxp-lpcg"; |
| reg = <0x59410000 0x10000>; |
| #clock-cells = <1>; |
| clocks = <&acm IMX_ADMA_ACM_ESAI0_MCLK_SEL>, |
| <&audio_ipg_clk>; |
| clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_4>; |
| clock-output-names = "esai0_lpcg_extal_clk", |
| "esai0_lpcg_ipg_clk"; |
| power-domains = <&pd IMX_SC_R_ESAI_0>; |
| }; |
| |
| spdif0_lpcg: clock-controller@59420000 { |
| compatible = "fsl,imx8qxp-lpcg"; |
| reg = <0x59420000 0x10000>; |
| #clock-cells = <1>; |
| clocks = <&acm IMX_ADMA_ACM_SPDIF0_TX_CLK_SEL>, |
| <&audio_ipg_clk>; |
| clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_4>; |
| clock-output-names = "spdif0_lpcg_tx_clk", |
| "spdif0_lpcg_gclkw"; |
| power-domains = <&pd IMX_SC_R_SPDIF_0>; |
| }; |
| |
| sai0_lpcg: clock-controller@59440000 { |
| compatible = "fsl,imx8qxp-lpcg"; |
| reg = <0x59440000 0x10000>; |
| #clock-cells = <1>; |
| clocks = <&acm IMX_ADMA_ACM_SAI0_MCLK_SEL>, |
| <&audio_ipg_clk>; |
| clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_4>; |
| clock-output-names = "sai0_lpcg_mclk", |
| "sai0_lpcg_ipg_clk"; |
| power-domains = <&pd IMX_SC_R_SAI_0>; |
| }; |
| |
| sai1_lpcg: clock-controller@59450000 { |
| compatible = "fsl,imx8qxp-lpcg"; |
| reg = <0x59450000 0x10000>; |
| #clock-cells = <1>; |
| clocks = <&acm IMX_ADMA_ACM_SAI1_MCLK_SEL>, |
| <&audio_ipg_clk>; |
| clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_4>; |
| clock-output-names = "sai1_lpcg_mclk", |
| "sai1_lpcg_ipg_clk"; |
| power-domains = <&pd IMX_SC_R_SAI_1>; |
| }; |
| |
| sai2_lpcg: clock-controller@59460000 { |
| compatible = "fsl,imx8qxp-lpcg"; |
| reg = <0x59460000 0x10000>; |
| #clock-cells = <1>; |
| clocks = <&acm IMX_ADMA_ACM_SAI2_MCLK_SEL>, |
| <&audio_ipg_clk>; |
| clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_4>; |
| clock-output-names = "sai2_lpcg_mclk", |
| "sai2_lpcg_ipg_clk"; |
| power-domains = <&pd IMX_SC_R_SAI_2>; |
| }; |
| |
| sai3_lpcg: clock-controller@59470000 { |
| compatible = "fsl,imx8qxp-lpcg"; |
| reg = <0x59470000 0x10000>; |
| #clock-cells = <1>; |
| clocks = <&acm IMX_ADMA_ACM_SAI3_MCLK_SEL>, |
| <&audio_ipg_clk>; |
| clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_4>; |
| clock-output-names = "sai3_lpcg_mclk", |
| "sai3_lpcg_ipg_clk"; |
| power-domains = <&pd IMX_SC_R_SAI_3>; |
| }; |
| |
| dsp_lpcg: clock-controller@59580000 { |
| compatible = "fsl,imx8qxp-lpcg"; |
| reg = <0x59580000 0x10000>; |
| #clock-cells = <1>; |
| clocks = <&audio_ipg_clk>, |
| <&audio_ipg_clk>, |
| <&audio_ipg_clk>; |
| clock-indices = <IMX_LPCG_CLK_4>, <IMX_LPCG_CLK_5>, |
| <IMX_LPCG_CLK_7>; |
| clock-output-names = "dsp_lpcg_adb_clk", |
| "dsp_lpcg_ipg_clk", |
| "dsp_lpcg_core_clk"; |
| power-domains = <&pd IMX_SC_R_DSP>; |
| }; |
| |
| dsp_ram_lpcg: clock-controller@59590000 { |
| compatible = "fsl,imx8qxp-lpcg"; |
| reg = <0x59590000 0x10000>; |
| #clock-cells = <1>; |
| clocks = <&audio_ipg_clk>; |
| clock-indices = <IMX_LPCG_CLK_4>; |
| clock-output-names = "dsp_ram_lpcg_ipg_clk"; |
| power-domains = <&pd IMX_SC_R_DSP_RAM>; |
| }; |
| |
| dsp: dsp@596e8000 { |
| compatible = "fsl,imx8qxp-dsp"; |
| reg = <0x596e8000 0x88000>; |
| clocks = <&dsp_lpcg IMX_LPCG_CLK_5>, |
| <&dsp_ram_lpcg IMX_LPCG_CLK_4>, |
| <&dsp_lpcg IMX_LPCG_CLK_7>; |
| clock-names = "ipg", "ocram", "core"; |
| power-domains = <&pd IMX_SC_R_MU_13A>, |
| <&pd IMX_SC_R_MU_13B>, |
| <&pd IMX_SC_R_DSP>, |
| <&pd IMX_SC_R_DSP_RAM>; |
| mbox-names = "txdb0", "txdb1", |
| "rxdb0", "rxdb1"; |
| mboxes = <&lsio_mu13 2 0>, |
| <&lsio_mu13 2 1>, |
| <&lsio_mu13 3 0>, |
| <&lsio_mu13 3 1>; |
| memory-region = <&dsp_reserved>; |
| status = "disabled"; |
| }; |
| |
| asrc1: asrc@59800000 { |
| compatible = "fsl,imx8qm-asrc"; |
| reg = <0x59800000 0x10000>; |
| interrupts = <GIC_SPI 380 IRQ_TYPE_LEVEL_HIGH>; |
| clocks = <&asrc1_lpcg IMX_LPCG_CLK_4>, |
| <&asrc1_lpcg IMX_LPCG_CLK_4>, |
| <&aud_pll_div0_lpcg IMX_LPCG_CLK_0>, |
| <&aud_pll_div1_lpcg IMX_LPCG_CLK_0>, |
| <&acm IMX_ADMA_ACM_AUD_CLK0_SEL>, |
| <&acm IMX_ADMA_ACM_AUD_CLK1_SEL>, |
| <&clk_dummy>, |
| <&clk_dummy>, |
| <&clk_dummy>, |
| <&clk_dummy>, |
| <&clk_dummy>, |
| <&clk_dummy>, |
| <&clk_dummy>, |
| <&clk_dummy>, |
| <&clk_dummy>, |
| <&clk_dummy>, |
| <&clk_dummy>, |
| <&clk_dummy>, |
| <&clk_dummy>; |
| clock-names = "mem", "ipg", |
| "asrck_0", "asrck_1", "asrck_2", "asrck_3", |
| "asrck_4", "asrck_5", "asrck_6", "asrck_7", |
| "asrck_8", "asrck_9", "asrck_a", "asrck_b", |
| "asrck_c", "asrck_d", "asrck_e", "asrck_f", |
| "spba"; |
| dmas = <&edma1 0 0 0>, |
| <&edma1 1 0 0>, |
| <&edma1 2 0 0>, |
| <&edma1 3 0 FSL_EDMA_RX>, |
| <&edma1 4 0 FSL_EDMA_RX>, |
| <&edma1 5 0 FSL_EDMA_RX>; |
| /* tx* is output channel of asrc, it is rx channel for eDMA */ |
| dma-names = "rxa", "rxb", "rxc", "txa", "txb", "txc"; |
| fsl,asrc-rate = <8000>; |
| fsl,asrc-width = <16>; |
| fsl,asrc-clk-map = <1>; |
| power-domains = <&pd IMX_SC_R_ASRC_1>; |
| status = "disabled"; |
| }; |
| |
| sai4: sai@59820000 { |
| compatible = "fsl,imx8qm-sai"; |
| reg = <0x59820000 0x10000>; |
| interrupts = <GIC_SPI 329 IRQ_TYPE_LEVEL_HIGH>; |
| clocks = <&sai4_lpcg IMX_LPCG_CLK_4>, |
| <&clk_dummy>, |
| <&sai4_lpcg IMX_LPCG_CLK_0>, |
| <&clk_dummy>, |
| <&clk_dummy>; |
| clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3"; |
| dmas = <&edma1 8 0 FSL_EDMA_RX>, <&edma1 9 0 0>; |
| dma-names = "rx", "tx"; |
| power-domains = <&pd IMX_SC_R_SAI_4>; |
| status = "disabled"; |
| }; |
| |
| sai5: sai@59830000 { |
| compatible = "fsl,imx8qm-sai"; |
| reg = <0x59830000 0x10000>; |
| interrupts = <GIC_SPI 331 IRQ_TYPE_LEVEL_HIGH>; |
| clocks = <&sai5_lpcg IMX_LPCG_CLK_4>, |
| <&clk_dummy>, |
| <&sai5_lpcg IMX_LPCG_CLK_0>, |
| <&clk_dummy>, |
| <&clk_dummy>; |
| clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3"; |
| dmas = <&edma1 10 0 0>; |
| dma-names = "tx"; |
| power-domains = <&pd IMX_SC_R_SAI_5>; |
| status = "disabled"; |
| }; |
| |
| amix: amix@59840000 { |
| compatible = "fsl,imx8qm-audmix"; |
| reg = <0x59840000 0x10000>; |
| clocks = <&amix_lpcg IMX_LPCG_CLK_0>; |
| clock-names = "ipg"; |
| power-domains = <&pd IMX_SC_R_AMIX>; |
| dais = <&sai4>, <&sai5>; |
| status = "disabled"; |
| }; |
| |
| mqs: mqs@59850000 { |
| compatible = "fsl,imx8qm-mqs"; |
| reg = <0x59850000 0x10000>; |
| clocks = <&mqs0_lpcg IMX_LPCG_CLK_4>, <&mqs0_lpcg IMX_LPCG_CLK_0>; |
| clock-names = "mclk", "core"; |
| power-domains = <&pd IMX_SC_R_MQS_0>; |
| status = "disabled"; |
| }; |
| |
| edma1: dma-controller@599f0000 { |
| compatible = "fsl,imx8qm-edma"; |
| reg = <0x599f0000 0xc0000>; |
| #dma-cells = <3>; |
| dma-channels = <11>; |
| dma-channel-mask = <0xc0>; |
| interrupts = <GIC_SPI 382 IRQ_TYPE_LEVEL_HIGH>, /* 0 asrc 1 */ |
| <GIC_SPI 383 IRQ_TYPE_LEVEL_HIGH>, /* 1 */ |
| <GIC_SPI 384 IRQ_TYPE_LEVEL_HIGH>, /* 2 */ |
| <GIC_SPI 385 IRQ_TYPE_LEVEL_HIGH>, /* 3 */ |
| <GIC_SPI 386 IRQ_TYPE_LEVEL_HIGH>, /* 4 */ |
| <GIC_SPI 387 IRQ_TYPE_LEVEL_HIGH>, /* 5 */ |
| <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, /* 6 unused */ |
| <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, /* 7 unused */ |
| <GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH>, /* sai4 */ |
| <GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SPI 332 IRQ_TYPE_LEVEL_HIGH>; /* sai5 */ |
| power-domains = <&pd IMX_SC_R_DMA_1_CH0>, |
| <&pd IMX_SC_R_DMA_1_CH1>, |
| <&pd IMX_SC_R_DMA_1_CH2>, |
| <&pd IMX_SC_R_DMA_1_CH3>, |
| <&pd IMX_SC_R_DMA_1_CH4>, |
| <&pd IMX_SC_R_DMA_1_CH5>, |
| <&pd IMX_SC_R_DMA_1_CH6>, |
| <&pd IMX_SC_R_DMA_1_CH7>, |
| <&pd IMX_SC_R_DMA_1_CH8>, |
| <&pd IMX_SC_R_DMA_1_CH9>, |
| <&pd IMX_SC_R_DMA_1_CH10>; |
| }; |
| |
| aud_rec0_lpcg: clock-controller@59d00000 { |
| compatible = "fsl,imx8qxp-lpcg"; |
| reg = <0x59d00000 0x10000>; |
| #clock-cells = <1>; |
| clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>; |
| clock-indices = <IMX_LPCG_CLK_0>; |
| clock-output-names = "aud_rec_clk0_lpcg_clk"; |
| power-domains = <&pd IMX_SC_R_AUDIO_PLL_0>; |
| }; |
| |
| aud_rec1_lpcg: clock-controller@59d10000 { |
| compatible = "fsl,imx8qxp-lpcg"; |
| reg = <0x59d10000 0x10000>; |
| #clock-cells = <1>; |
| clocks = <&clk IMX_SC_R_AUDIO_PLL_1 IMX_SC_PM_CLK_MST_BUS>; |
| clock-indices = <IMX_LPCG_CLK_0>; |
| clock-output-names = "aud_rec_clk1_lpcg_clk"; |
| power-domains = <&pd IMX_SC_R_AUDIO_PLL_1>; |
| }; |
| |
| aud_pll_div0_lpcg: clock-controller@59d20000 { |
| compatible = "fsl,imx8qxp-lpcg"; |
| reg = <0x59d20000 0x10000>; |
| #clock-cells = <1>; |
| clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>; |
| clock-indices = <IMX_LPCG_CLK_0>; |
| clock-output-names = "aud_pll_div_clk0_lpcg_clk"; |
| power-domains = <&pd IMX_SC_R_AUDIO_PLL_0>; |
| }; |
| |
| aud_pll_div1_lpcg: clock-controller@59d30000 { |
| compatible = "fsl,imx8qxp-lpcg"; |
| reg = <0x59d30000 0x10000>; |
| #clock-cells = <1>; |
| clocks = <&clk IMX_SC_R_AUDIO_PLL_1 IMX_SC_PM_CLK_SLV_BUS>; |
| clock-indices = <IMX_LPCG_CLK_0>; |
| clock-output-names = "aud_pll_div_clk1_lpcg_clk"; |
| power-domains = <&pd IMX_SC_R_AUDIO_PLL_1>; |
| }; |
| |
| mclkout0_lpcg: clock-controller@59d50000 { |
| compatible = "fsl,imx8qxp-lpcg"; |
| reg = <0x59d50000 0x10000>; |
| #clock-cells = <1>; |
| clocks = <&acm IMX_ADMA_ACM_MCLKOUT0_SEL>; |
| clock-indices = <IMX_LPCG_CLK_0>; |
| clock-output-names = "mclkout0_lpcg_clk"; |
| power-domains = <&pd IMX_SC_R_MCLK_OUT_0>; |
| }; |
| |
| mclkout1_lpcg: clock-controller@59d60000 { |
| compatible = "fsl,imx8qxp-lpcg"; |
| reg = <0x59d60000 0x10000>; |
| #clock-cells = <1>; |
| clocks = <&acm IMX_ADMA_ACM_MCLKOUT1_SEL>; |
| clock-indices = <IMX_LPCG_CLK_0>; |
| clock-output-names = "mclkout1_lpcg_clk"; |
| power-domains = <&pd IMX_SC_R_MCLK_OUT_1>; |
| }; |
| |
| acm: acm@59e00000 { |
| compatible = "fsl,imx8qxp-acm"; |
| reg = <0x59e00000 0x1d0000>; |
| #clock-cells = <1>; |
| power-domains = <&pd IMX_SC_R_AUDIO_CLK_0>, |
| <&pd IMX_SC_R_AUDIO_CLK_1>, |
| <&pd IMX_SC_R_MCLK_OUT_0>, |
| <&pd IMX_SC_R_MCLK_OUT_1>, |
| <&pd IMX_SC_R_AUDIO_PLL_0>, |
| <&pd IMX_SC_R_AUDIO_PLL_1>, |
| <&pd IMX_SC_R_ASRC_0>, |
| <&pd IMX_SC_R_ASRC_1>, |
| <&pd IMX_SC_R_ESAI_0>, |
| <&pd IMX_SC_R_SAI_0>, |
| <&pd IMX_SC_R_SAI_1>, |
| <&pd IMX_SC_R_SAI_2>, |
| <&pd IMX_SC_R_SAI_3>, |
| <&pd IMX_SC_R_SAI_4>, |
| <&pd IMX_SC_R_SAI_5>, |
| <&pd IMX_SC_R_SPDIF_0>, |
| <&pd IMX_SC_R_MQS_0>; |
| clocks = <&aud_rec0_lpcg IMX_LPCG_CLK_0>, |
| <&aud_rec1_lpcg IMX_LPCG_CLK_0>, |
| <&aud_pll_div0_lpcg IMX_LPCG_CLK_0>, |
| <&aud_pll_div1_lpcg IMX_LPCG_CLK_0>, |
| <&clk_ext_aud_mclk0>, |
| <&clk_ext_aud_mclk1>, |
| <&clk_esai0_rx_clk>, |
| <&clk_esai0_rx_hf_clk>, |
| <&clk_esai0_tx_clk>, |
| <&clk_esai0_tx_hf_clk>, |
| <&clk_spdif0_rx>, |
| <&clk_sai0_rx_bclk>, |
| <&clk_sai0_tx_bclk>, |
| <&clk_sai1_rx_bclk>, |
| <&clk_sai1_tx_bclk>, |
| <&clk_sai2_rx_bclk>, |
| <&clk_sai3_rx_bclk>, |
| <&clk_sai4_rx_bclk>; |
| clock-names = "aud_rec_clk0_lpcg_clk", |
| "aud_rec_clk1_lpcg_clk", |
| "aud_pll_div_clk0_lpcg_clk", |
| "aud_pll_div_clk1_lpcg_clk", |
| "ext_aud_mclk0", |
| "ext_aud_mclk1", |
| "esai0_rx_clk", |
| "esai0_rx_hf_clk", |
| "esai0_tx_clk", |
| "esai0_tx_hf_clk", |
| "spdif0_rx", |
| "sai0_rx_bclk", |
| "sai0_tx_bclk", |
| "sai1_rx_bclk", |
| "sai1_tx_bclk", |
| "sai2_rx_bclk", |
| "sai3_rx_bclk", |
| "sai4_rx_bclk"; |
| }; |
| |
| asrc1_lpcg: clock-controller@59c00000 { |
| compatible = "fsl,imx8qxp-lpcg"; |
| reg = <0x59c00000 0x10000>; |
| #clock-cells = <1>; |
| clocks = <&audio_ipg_clk>; |
| clock-indices = <IMX_LPCG_CLK_4>; |
| clock-output-names = "asrc1_lpcg_ipg_clk"; |
| power-domains = <&pd IMX_SC_R_ASRC_1>; |
| }; |
| |
| sai4_lpcg: clock-controller@59c20000 { |
| compatible = "fsl,imx8qxp-lpcg"; |
| reg = <0x59c20000 0x10000>; |
| #clock-cells = <1>; |
| clocks = <&acm IMX_ADMA_ACM_SAI4_MCLK_SEL>, |
| <&audio_ipg_clk>; |
| clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_4>; |
| clock-output-names = "sai4_lpcg_mclk", |
| "sai4_lpcg_ipg_clk"; |
| power-domains = <&pd IMX_SC_R_SAI_4>; |
| }; |
| |
| sai5_lpcg: clock-controller@59c30000 { |
| compatible = "fsl,imx8qxp-lpcg"; |
| reg = <0x59c30000 0x10000>; |
| #clock-cells = <1>; |
| clocks = <&acm IMX_ADMA_ACM_SAI5_MCLK_SEL>, |
| <&audio_ipg_clk>; |
| clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_4>; |
| clock-output-names = "sai5_lpcg_mclk", |
| "sai5_lpcg_ipg_clk"; |
| power-domains = <&pd IMX_SC_R_SAI_5>; |
| }; |
| |
| amix_lpcg: clock-controller@59c40000 { |
| compatible = "fsl,imx8qxp-lpcg"; |
| reg = <0x59c40000 0x10000>; |
| #clock-cells = <1>; |
| clocks = <&audio_ipg_clk>; |
| clock-indices = <IMX_LPCG_CLK_0>; |
| clock-output-names = "amix_lpcg_ipg_clk"; |
| power-domains = <&pd IMX_SC_R_AMIX>; |
| }; |
| |
| mqs0_lpcg: clock-controller@59c50000 { |
| compatible = "fsl,imx8qxp-lpcg"; |
| reg = <0x59c50000 0x10000>; |
| #clock-cells = <1>; |
| clocks = <&acm IMX_ADMA_ACM_MQS_TX_CLK_SEL>, |
| <&audio_ipg_clk>; |
| clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_4>; |
| clock-output-names = "mqs0_lpcg_mclk", |
| "mqs0_lpcg_ipg_clk"; |
| power-domains = <&pd IMX_SC_R_MQS_0>; |
| }; |
| }; |