LF-1299: arm64: dts: imx8mp: Enable SAI/ASRC/WM8960/MICFIL
authorShengjiu Wang <shengjiu.wang@nxp.com>
Wed, 22 Apr 2020 06:02:09 +0000 (14:02 +0800)
committerDong Aisheng <aisheng.dong@nxp.com>
Mon, 14 Dec 2020 03:22:32 +0000 (11:22 +0800)
Enable SAI/ASRC/WM8960/MICFIL.

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
arch/arm64/boot/dts/freescale/imx8mp-evk.dts [changed mode: 0755->0644]
arch/arm64/boot/dts/freescale/imx8mp.dtsi [changed mode: 0755->0644]

old mode 100755 (executable)
new mode 100644 (file)
index 40c05be..1cdbfda
                gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
                enable-active-high;
        };
+
+       reg_audio_pwr: regulator-audio-pwr {
+               compatible = "regulator-fixed";
+               regulator-name = "audio-pwr";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       sound-hdmi {
+               compatible = "fsl,imx-audio-cdnhdmi";
+               model = "audio-hdmi";
+               audio-cpu = <&aud2htx>;
+               hdmi-out;
+               constraint-rate = <44100>,
+                               <88200>,
+                               <176400>,
+                               <32000>,
+                               <48000>,
+                               <96000>,
+                               <192000>;
+               status = "disabled";
+       };
+
+       sound-wm8960 {
+               compatible = "fsl,imx-audio-wm8960";
+               model = "wm8960-audio";
+               audio-cpu = <&sai3>;
+               audio-codec = <&codec>;
+               audio-asrc = <&easrc>;
+               hp-det-gpio = <&gpio4 28 0>;
+               audio-routing =
+                       "Headphone Jack", "HP_L",
+                       "Headphone Jack", "HP_R",
+                       "Ext Spk", "SPK_LP",
+                       "Ext Spk", "SPK_LN",
+                       "Ext Spk", "SPK_RP",
+                       "Ext Spk", "SPK_RN",
+                       "LINPUT1", "Mic Jack",
+                       "LINPUT3", "Mic Jack",
+                       "Mic Jack", "MICB";
+       };
+
+       sound-micfil {
+               compatible = "fsl,imx-audio-micfil";
+               model = "imx-audio-micfil";
+               cpu-dai = <&micfil>;
+       };
 };
 
 &A53_0 {
                gpio-controller;
                #gpio-cells = <2>;
        };
+
+       codec: wm8960@1a {
+               compatible = "wlf,wm8960";
+               reg = <0x1a>;
+               clocks = <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1>;
+               clock-names = "mclk";
+               wlf,shared-lrclk;
+               wlf,hp-cfg = <3 2 3>;
+               wlf,gpio-cfg = <1 3>;
+               SPKVDD1-supply = <&reg_audio_pwr>;
+       };
 };
 
 &lcdif1 {
        status = "okay";
 };
 
+&easrc {
+       fsl,asrc-rate  = <48000>;
+       status = "okay";
+};
+
+&micfil {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pdm>;
+       assigned-clocks = <&clk IMX8MP_CLK_PDM>;
+       assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
+       assigned-clock-rates = <196608000>;
+       status = "okay";
+};
+
+&sai3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai3>;
+       assigned-clocks = <&clk IMX8MP_CLK_SAI3>;
+       assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
+       assigned-clock-rates = <12288000>;
+       clocks = <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SAI3_IPG>, <&clk IMX8MP_CLK_DUMMY>,
+                <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1>, <&clk IMX8MP_CLK_DUMMY>,
+                <&clk IMX8MP_CLK_DUMMY>;
+       clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
+       fsl,sai-mclk-direction-output;
+       status = "okay";
+};
+
+&sdma2 {
+       status = "okay";
+};
+
 &uart2 {
        /* console */
        pinctrl-names = "default";
 };
 
 &iomuxc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hog>;
+
+       pinctrl_hog: hoggrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_HDMI_DDC_SCL__HDMIMIX_EARC_SCL     0x400001c3
+                       MX8MP_IOMUXC_HDMI_DDC_SDA__HDMIMIX_EARC_SDA     0x400001c3
+                       MX8MP_IOMUXC_HDMI_HPD__HDMIMIX_EARC_DC_HPD      0x40000019
+                       MX8MP_IOMUXC_HDMI_CEC__HDMIMIX_EARC_CEC         0x40000019
+               >;
+       };
+
        pinctrl_eqos: eqosgrp {
                fsl,pins = <
                        MX8MP_IOMUXC_ENET_MDC__ENET_QOS_MDC             0x3
                >;
        };
 
+       pinctrl_pdm: pdmgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI5_RXC__AUDIOMIX_CLK             0xd6
+                       MX8MP_IOMUXC_SAI5_RXD0__AUDIOMIX_BIT_STREAM00   0xd6
+                       MX8MP_IOMUXC_SAI5_RXD1__AUDIOMIX_BIT_STREAM01   0xd6
+                       MX8MP_IOMUXC_SAI5_RXD2__AUDIOMIX_BIT_STREAM02   0xd6
+                       MX8MP_IOMUXC_SAI5_RXD3__AUDIOMIX_BIT_STREAM03   0xd6
+               >;
+       };
+
+       pinctrl_sai3: sai3grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI3_TXFS__AUDIOMIX_SAI3_TX_SYNC   0xd6
+                       MX8MP_IOMUXC_SAI3_TXC__AUDIOMIX_SAI3_TX_BCLK    0xd6
+                       MX8MP_IOMUXC_SAI3_RXD__AUDIOMIX_SAI3_RX_DATA00  0xd6
+                       MX8MP_IOMUXC_SAI3_TXD__AUDIOMIX_SAI3_TX_DATA00  0xd6
+                       MX8MP_IOMUXC_SAI3_MCLK__AUDIOMIX_SAI3_MCLK      0xd6
+                       MX8MP_IOMUXC_SAI3_RXFS__GPIO4_IO28              0xd6
+                       MX8MP_IOMUXC_SAI3_RXC__GPIO4_IO29               0xd6
+               >;
+       };
+
        pinctrl_uart2: uart2grp {
                fsl,pins = <
                        MX8MP_IOMUXC_UART2_RXD__UART2_DCE_RX    0x49
old mode 100755 (executable)
new mode 100644 (file)
index fa96e07..6fab633
                };
        };
 
+       memory@40000000 {
+               device_type = "memory";
+               reg = <0x0 0x40000000 0 0x80000000>;
+       };
+
+       resmem: reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+/*
+ *             Memory reserved for optee usage. Please do not use.
+ *             This will be automaticky added to dtb if OP-TEE is installed.
+ *             optee@56000000 {
+ *                     reg = <0 0x56000000 0 0x2000000>;
+ *                     no-map;
+ *             };
+ */
+               /* global autoconfigured region for contiguous allocations */
+               linux,cma {
+                       compatible = "shared-dma-pool";
+                       reusable;
+                       size = <0 0x3c000000>;
+                       alloc-ranges = <0 0x40000000 0 0xC0000000>;
+                       linux,cma-default;
+               };
+
+               dsp_reserved: dsp@92400000 {
+                       no-map;
+                       reg = <0 0x92400000 0 0x2000000>;
+               };
+       };
+
        osc_32k: clock-osc-32k {
                compatible = "fixed-clock";
                #clock-cells = <0>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
+
+                       spba-bus@30c00000 {
+                               compatible = "fsl,spba-bus", "simple-bus";
+                               reg = <0x30c00000 0x100000>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               ranges;
+
+                               sai1: sai@30c10000 {
+                                       compatible = "fsl,imx8mq-sai", "fsl,imx6sx-sai";
+                                       reg = <0x30c10000 0x10000>;
+                                       interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
+                                       clocks = <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SAI1_IPG>, <&clk IMX8MP_CLK_DUMMY>,
+                                                <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SAI1_MCLK1>, <&clk IMX8MP_CLK_DUMMY>,
+                                                <&clk IMX8MP_CLK_DUMMY>;
+                                       clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
+                                       dmas = <&sdma2 0 2 0>, <&sdma2 1 2 0>;
+                                       dma-names = "rx", "tx";
+                                       fsl,shared-interrupt;
+                                       fsl,dataline = <0 0xff 0xff>;
+                                       power-domains = <&audiomix_pd>;
+                                       status = "disabled";
+                               };
+
+                               sai2: sai@30c20000 {
+                                       compatible = "fsl,imx8mq-sai", "fsl,imx6sx-sai";
+                                       reg = <0x30c20000 0x10000>;
+                                       interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
+                                       clocks = <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SAI2_IPG>, <&clk IMX8MP_CLK_DUMMY>,
+                                                <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SAI2_MCLK1>, <&clk IMX8MP_CLK_DUMMY>,
+                                                <&clk IMX8MP_CLK_DUMMY>;
+                                       clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
+                                       dmas = <&sdma2 2 2 0>, <&sdma2 3 2 0>;
+                                       dma-names = "rx", "tx";
+                                       fsl,shared-interrupt;
+                                       fsl,dataline = <0 0xf 0xf>;
+                                       power-domains = <&audiomix_pd>;
+                                       status = "disabled";
+                               };
+
+                               sai3: sai@30c30000 {
+                                       compatible = "fsl,imx8mq-sai", "fsl,imx6sx-sai";
+                                       reg = <0x30c30000 0x10000>;
+                                       interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
+                                       clocks = <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SAI3_IPG>, <&clk IMX8MP_CLK_DUMMY>,
+                                                <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1>, <&clk IMX8MP_CLK_DUMMY>,
+                                                <&clk IMX8MP_CLK_DUMMY>;
+                                       clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
+                                       dmas = <&sdma2 4 2 0>, <&sdma2 5 2 0>;
+                                       dma-names = "rx", "tx";
+                                       fsl,shared-interrupt;
+                                       fsl,dataline = <0 0x3 0x3>;
+                                       power-domains = <&audiomix_pd>;
+                                       status = "disabled";
+                               };
+
+                               sai5: sai@30c50000 {
+                                       compatible = "fsl,imx8mq-sai", "fsl,imx6sx-sai";
+                                       reg = <0x30c50000 0x10000>;
+                                       interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
+                                       clocks = <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SAI5_IPG>, <&clk IMX8MP_CLK_DUMMY>,
+                                                <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SAI5_MCLK1>, <&clk IMX8MP_CLK_DUMMY>,
+                                                <&clk IMX8MP_CLK_DUMMY>;
+                                       clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
+                                       dmas = <&sdma2 8 2 0>, <&sdma2 9 2 0>;
+                                       dma-names = "rx", "tx";
+                                       fsl,shared-interrupt;
+                                       fsl,dataline = <0 0xf 0xf>;
+                                       power-domains = <&audiomix_pd>;
+                                       status = "disabled";
+                               };
+
+                               sai6: sai@30c60000 {
+                                       compatible = "fsl,imx8mq-sai", "fsl,imx6sx-sai";
+                                       reg = <0x30c60000 0x10000>;
+                                       interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
+                                       clocks = <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SAI6_IPG>,
+                                                <&clk IMX8MP_CLK_DUMMY>,
+                                                <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SAI6_MCLK1>,
+                                                <&clk IMX8MP_CLK_DUMMY>,
+                                                <&clk IMX8MP_CLK_DUMMY>;
+                                       clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
+                                       dmas = <&sdma2 10 2 0>, <&sdma2 11 2 0>;
+                                       dma-names = "rx", "tx";
+                                       fsl,shared-interrupt;
+                                       power-domains = <&audiomix_pd>;
+                                       status = "disabled";
+                               };
+
+                               sai7: sai@30c80000 {
+                                       compatible = "fsl,imx8mq-sai", "fsl,imx6sx-sai";
+                                       reg = <0x30c80000 0x10000>;
+                                       interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
+                                       clocks = <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SAI7_IPG>, <&clk IMX8MP_CLK_DUMMY>,
+                                                <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SAI7_MCLK1>, <&clk IMX8MP_CLK_DUMMY>,
+                                                <&clk IMX8MP_CLK_DUMMY>;
+                                       clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
+                                       dmas = <&sdma2 12 2 0>, <&sdma2 13 2 0>;
+                                       dma-names = "rx", "tx";
+                                       fsl,shared-interrupt;
+                                       power-domains = <&audiomix_pd>;
+                                       status = "disabled";
+                               };
+
+                               easrc: easrc@30c90000 {
+                                       compatible = "fsl,imx8mn-easrc";
+                                       reg = <0x30c90000 0x10000>;
+                                       interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
+                                       clocks = <&audiomix_clk IMX8MP_CLK_AUDIOMIX_ASRC_IPG>;
+                                       clock-names = "mem";
+                                       dmas = <&sdma2 16 23 0> , <&sdma2 17 23 0>,
+                                              <&sdma2 18 23 0> , <&sdma2 19 23 0>,
+                                              <&sdma2 20 23 0> , <&sdma2 21 23 0>,
+                                              <&sdma2 22 23 0> , <&sdma2 23 23 0>;
+                                       dma-names = "ctx0_rx", "ctx0_tx",
+                                                   "ctx1_rx", "ctx1_tx",
+                                                   "ctx2_rx", "ctx2_tx",
+                                                   "ctx3_rx", "ctx3_tx";
+                                       fsl,easrc-ram-script-name = "imx/easrc/easrc-imx8mn.bin";
+                                       fsl,asrc-rate  = <8000>;
+                                       fsl,asrc-width = <16>;
+                                       power-domains = <&audiomix_pd>;
+                                       status = "disabled";
+                               };
+
+                               micfil: micfil@30ca0000 {
+                                       compatible = "fsl,imx8mp-micfil";
+                                       reg = <0x30ca0000 0x10000>;
+                                       interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
+                                       clocks = <&audiomix_clk IMX8MP_CLK_AUDIOMIX_PDM_IPG>,
+                                                <&audiomix_clk IMX8MP_CLK_AUDIOMIX_PDM_ROOT>,
+                                                <&clk IMX8MP_AUDIO_PLL1_OUT>,
+                                                <&clk IMX8MP_AUDIO_PLL2_OUT>,
+                                                <&clk IMX8MP_CLK_EXT3>;
+                                       clock-names = "ipg_clk", "ipg_clk_app",
+                                                     "pll8k", "pll11k", "clkext3";
+                                       dmas = <&sdma2 24 25 0x80000000>;
+                                       dma-names = "rx";
+                                       power-domains = <&audiomix_pd>;
+                                       status = "disabled";
+                               };
+
+                               aud2htx: aud2htx@30cb0000 {
+                                       compatible = "fsl,imx8mp-aud2htx";
+                                       reg = <0x30cb0000 0x10000>;
+                                       interrupts = <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>;
+                                       clocks = <&audiomix_clk IMX8MP_CLK_AUDIOMIX_AUD2HTX_IPG>;
+                                       clock-names = "bus";
+                                       dmas = <&sdma2 26 2 0>;
+                                       dma-names = "tx";
+                                       power-domains = <&audiomix_pd>;
+                                       status = "disabled";
+                               };
+
+                               xcvr: xcvr@30cc0000 {
+                                       compatible = "fsl,imx8mp-xcvr";
+                                       reg = <0x30cc0000 0x10000>;
+                                       interrupts = /* XCVR IRQ 0 */
+                                                    <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>,
+                                                    /* XCVR IRQ 1 */
+                                                    <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>,
+                                                    /* XCVR PHY - SPDIF wakeup IRQ */
+                                                    <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
+                                       clocks = <&audiomix_clk IMX8MP_CLK_AUDIOMIX_EARC_IPG>,
+                                                <&audiomix_clk IMX8MP_CLK_AUDIOMIX_EARC_PHY>,
+                                                <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SPBA2_ROOT>;
+                                       clock-names = "ipg", "phy", "spba";
+                                       dmas = <&sdma2 30 2 0>, <&sdma2 31 2 0>;
+                                       dma-names = "rx", "tx";
+                                       fsl,xcvr-fw = "imx/xcvr/xcvr-imx8mp.bin";
+                                       resets = <&audiomix_reset 0>;
+                                       power-domains = <&audiomix_pd>;
+                                       status = "disabled";
+                               };
+                       };
+
+                       sdma3: dma-controller@30e00000 {
+                               compatible = "fsl,imx8mp-sdma", "fsl,imx7d-sdma";
+                               reg = <0x30e00000 0x10000>;
+                               interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SDMA3_ROOT>,
+                                        <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SDMA3_ROOT>;
+                               clock-names = "ipg", "ahb";
+                               #dma-cells = <3>;
+                               fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
+                               fsl,ratio-1-1;
+                               power-domains = <&audiomix_pd>;
+                               status = "disabled";
+                       };
+
+                       sdma2: dma-controller@30e10000 {
+                               compatible = "fsl,imx8mp-sdma", "fsl,imx7d-sdma";
+                               reg = <0x30e10000 0x10000>;
+                               interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SDMA2_ROOT>,
+                                        <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SDMA2_ROOT>;
+                               clock-names = "ipg", "ahb";
+                               #dma-cells = <3>;
+                               fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
+                               fsl,ratio-1-1;
+                               power-domains = <&audiomix_pd>;
+                               status = "disabled";
+                       };
+
+                       mu2: mu2@30e60000 {
+                               compatible = "fsl,imx8-mu-dsp", "fsl,imx6sx-mu";
+                               reg = <0x30E60000 0x10000>;
+                               interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
+                               fsl,dsp_ap_mu_id = <2>;
+                                #mbox-cells = <2>;
+                               clocks = <&audiomix_clk IMX8MP_CLK_AUDIOMIX_MU2_ROOT>;
+                               status = "okay";
+                       };
                };
 
                gic: interrupt-controller@38800000 {
                assigned-clock-rates = <400000000>, <600000000>;
                status = "disabled";
        };
+
+       dsp: dsp@3b6e8000 {
+               compatible = "fsl,imx8mp-dsp-v1";
+               memory-region = <&dsp_reserved>;
+               reg = <0x0 0x3B6E8000 0x0 0x88000>;
+               clocks = <&audiomix_clk IMX8MP_CLK_AUDIOMIX_OCRAMA_IPG>,
+                        <&audiomix_clk IMX8MP_CLK_AUDIOMIX_DSP_ROOT>,
+                        <&audiomix_clk IMX8MP_CLK_AUDIOMIX_DSPDBG_ROOT>,
+                        <&audiomix_clk IMX8MP_CLK_AUDIOMIX_MU2_ROOT>;
+               clock-names = "ocram", "core", "debug", "mu2";
+               fsl,dsp-firmware = "imx/dsp/hifi4.bin";
+               power-domains = <&audiomix_pd>;
+               mbox-names = "txdb0", "txdb1", "rxdb0", "rxdb1";
+               mboxes = <&mu2 2 0>,
+                       <&mu2 2 1>,
+                       <&mu2 3 0>,
+                       <&mu2 3 1>;
+               status = "disabled";
+       };
 };