// SPDX-License-Identifier: GPL-2.0+ /* * Copyright 2018-2019 NXP * Dong Aisheng */ #include #include #include 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>; sai0: sai@59040000 { compatible = "fsl,imx8qm-sai"; reg = <0x59040000 0x10000>; interrupts = ; clocks = <&sai0_lpcg 1>, <&clk_dummy>, <&sai0_lpcg 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 = ; clocks = <&sai1_lpcg 1>, <&clk_dummy>, <&sai1_lpcg 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 = ; clocks = <&sai2_lpcg 1>, <&clk_dummy>, <&sai2_lpcg 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 = ; clocks = <&sai3_lpcg 1>, <&clk_dummy>, <&sai3_lpcg 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 = , /* 0 asrc 0 */ , /* 1 */ , /* 2 */ , /* 3 */ , /* 4 */ , /* 5 */ , /* 6 esai0 */ , /* 7 */ , /* 8 spdif0 */ , /* 9 */ , /* 10 unused */ , /* 11 unused */ , /* 12 sai0 */ , /* 13 */ , /* 14 sai1 */ , /* 15 */ , /* 16 sai2 */ , /* 17 sai3 */ , /* 18 unused */ , /* 19 unused */ , /* 20 unused */ , /* 21 */ , /* 22 unused */ ; /* 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>; }; 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 = , ; 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 = , ; 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 = , ; 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 = , ; 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 = , , ; 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 = ; 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"; }; edma1: dma-controller@599f0000 { compatible = "fsl,imx8qm-edma"; reg = <0x599f0000 0xc0000>; #dma-cells = <3>; dma-channels = <11>; dma-channel-mask = <0xc0>; interrupts = , /* 0 asrc 1 */ , /* 1 */ , /* 2 */ , /* 3 */ , /* 4 */ , /* 5 */ , /* 6 unused */ , /* 7 unused */ , /* sai4 */ , ; /* 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 = ; 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 = ; 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 = ; 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 = ; 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 = ; 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 = ; 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"; }; };