arm64: dts: imx8dxl-evk: add audio nodes
authorFrank Li <Frank.Li@nxp.com>
Thu, 25 Apr 2024 15:34:43 +0000 (11:34 -0400)
committerShawn Guo <shawnguo@kernel.org>
Mon, 3 Jun 2024 01:14:19 +0000 (09:14 +0800)
Add audio nodes for imx8dxl-evk boards.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm64/boot/dts/freescale/imx8dxl-evk.dts

index 2412ab145c0661300ecf57a725e1881d5556061d..4ac96a0586294394abbd25ceb52472602ab1ff90 100644 (file)
                enable-active-high;
                regulator-always-on;
        };
+
+       bt_sco_codec: audio-codec-bt {
+               compatible = "linux,bt-sco";
+               #sound-dai-cells = <1>;
+       };
+
+       sound-bt-sco {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "bt-sco-audio";
+               simple-audio-card,format = "dsp_a";
+               simple-audio-card,bitclock-inversion;
+               simple-audio-card,frame-master = <&btcpu>;
+               simple-audio-card,bitclock-master = <&btcpu>;
+
+               btcpu: simple-audio-card,cpu {
+                       sound-dai = <&sai0>;
+                       dai-tdm-slot-num = <2>;
+                       dai-tdm-slot-width = <16>;
+               };
+
+               simple-audio-card,codec {
+                       sound-dai = <&bt_sco_codec 1>;
+               };
+       };
+
+       sound-wm8960-1 {
+               compatible = "fsl,imx-audio-wm8960";
+               model = "wm8960-audio";
+               audio-cpu = <&sai1>;
+               audio-codec = <&wm8960_1>;
+               audio-asrc = <&asrc0>;
+               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",
+                               "Mic Jack", "MICB";
+       };
+
+       sound-wm8960-2 {
+               compatible = "fsl,imx-audio-wm8960";
+               model = "wm8960-audio-2";
+               audio-cpu = <&sai2>;
+               audio-codec = <&wm8960_2>;
+               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",
+                               "Mic Jack", "MICB";
+       };
+
+       sound-wm8960-3 {
+               compatible = "fsl,imx-audio-wm8960";
+               model = "wm8960-audio-3";
+               audio-cpu = <&sai3>;
+               audio-codec = <&wm8960_3>;
+               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",
+                               "Mic Jack", "MICB";
+       };
 };
 
 &adc0 {
        status = "okay";
 };
 
+&asrc0 {
+       fsl,asrc-rate = <48000>;
+       status = "okay";
+};
+
 &eqos {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_eqos>;
                        };
                };
 
+               i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x1>;
+
+                       wm8960_1: audio-codec@1a {
+                               compatible = "wlf,wm8960";
+                               reg = <0x1a>;
+                               clocks = <&mclkout1_lpcg IMX_LPCG_CLK_0>;
+                               clock-names = "mclk";
+                               assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>,
+                                                 <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>,
+                                                 <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>,
+                                                 <&mclkout1_lpcg IMX_LPCG_CLK_0>;
+                               assigned-clock-rates = <786432000>,
+                                                      <49152000>,
+                                                      <12288000>,
+                                                      <12288000>;
+                               wlf,shared-lrclk;
+                               wlf,hp-cfg = <2 2 3>;
+                               wlf,gpio-cfg = <1 3>;
+                       };
+               };
+
+               i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x2>;
+
+                       wm8960_2: audio-codec@1a {
+                               compatible = "wlf,wm8960";
+                               reg = <0x1a>;
+                               clocks = <&mclkout1_lpcg IMX_LPCG_CLK_0>;
+                               clock-names = "mclk";
+                               assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>,
+                                                 <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>,
+                                                 <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>,
+                                                 <&mclkout1_lpcg IMX_LPCG_CLK_0>;
+                               assigned-clock-rates = <786432000>,
+                                                      <49152000>,
+                                                      <12288000>,
+                                                      <12288000>;
+                               wlf,shared-lrclk;
+                               wlf,hp-cfg = <2 2 3>;
+                               wlf,gpio-cfg = <1 3>;
+                       };
+               };
+
+               i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x3>;
+
+                       wm8960_3: audio-codec@1a {
+                               compatible = "wlf,wm8960";
+                               reg = <0x1a>;
+                               clocks = <&mclkout1_lpcg IMX_LPCG_CLK_0>;
+                               clock-names = "mclk";
+                               assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>,
+                                                 <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>,
+                                                 <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>,
+                                                 <&mclkout1_lpcg IMX_LPCG_CLK_0>;
+                               assigned-clock-rates = <786432000>,
+                                                      <49152000>,
+                                                      <12288000>,
+                                                      <12288000>;
+                               wlf,shared-lrclk;
+                               wlf,hp-cfg = <2 2 3>;
+                               wlf,gpio-cfg = <1 3>;
+                       };
+               };
+
                i2c@4 {
                        #address-cells = <1>;
                        #size-cells = <0>;
        status = "okay";
 };
 
+&sai0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai0>;
+       #sound-dai-cells = <0>;
+       assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>,
+                         <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>,
+                         <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>,
+                         <&sai0_lpcg IMX_LPCG_CLK_0>;
+       assigned-clock-rates = <786432000>, <49152000>, <12288000>, <49152000>;
+       status = "okay";
+};
+
+&sai1 {
+       assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>,
+                         <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>,
+                         <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>,
+                         <&sai1_lpcg IMX_LPCG_CLK_0>;
+       assigned-clock-rates = <786432000>, <49152000>, <12288000>, <49152000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai1>;
+       status = "okay";
+};
+
+&sai2 {
+       assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>,
+                         <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>,
+                         <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>,
+                         <&sai2_lpcg IMX_LPCG_CLK_0>;
+       assigned-clock-rates = <786432000>, <49152000>, <12288000>, <49152000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai2>;
+       fsl,sai-asynchronous;
+       status = "okay";
+};
+
+&sai3 {
+       assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>,
+                         <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>,
+                         <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>,
+                         <&sai3_lpcg IMX_LPCG_CLK_0>;
+       assigned-clock-rates = <786432000>, <49152000>, <12288000>, <49152000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai3>;
+       fsl,sai-asynchronous;
+       status = "okay";
+};
+
 &thermal_zones {
        pmic-thermal {
                polling-delay-passive = <250>;
                >;
        };
 
+       pinctrl_sai0: sai0grp {
+               fsl,pins = <
+                       IMX8DXL_SPI0_CS0_ADMA_SAI0_RXD          0x06000060
+                       IMX8DXL_SPI0_CS1_ADMA_SAI0_RXC          0x06000040
+                       IMX8DXL_SPI0_SCK_ADMA_SAI0_TXC          0x06000060
+                       IMX8DXL_SPI0_SDI_ADMA_SAI0_TXD          0x06000060
+                       IMX8DXL_SPI0_SDO_ADMA_SAI0_TXFS         0x06000040
+               >;
+       };
+
+       pinctrl_sai1: sai1grp {
+               fsl,pins = <
+                       IMX8DXL_FLEXCAN0_RX_ADMA_SAI1_TXC       0x06000040
+                       IMX8DXL_FLEXCAN0_TX_ADMA_SAI1_TXFS      0x06000040
+                       IMX8DXL_FLEXCAN1_RX_ADMA_SAI1_TXD       0x06000060
+                       IMX8DXL_FLEXCAN1_TX_ADMA_SAI1_RXD       0x06000060
+               >;
+       };
+
+       pinctrl_sai2: sai2grp {
+               fsl,pins = <
+                       IMX8DXL_SNVS_TAMPER_OUT3_ADMA_SAI2_RXC  0x06000040
+                       IMX8DXL_SNVS_TAMPER_IN0_ADMA_SAI2_RXFS  0x06000040
+                       IMX8DXL_SNVS_TAMPER_OUT4_ADMA_SAI2_RXD  0x06000060
+               >;
+       };
+
+       pinctrl_sai3: sai3grp {
+               fsl,pins = <
+                       IMX8DXL_SNVS_TAMPER_IN1_ADMA_SAI3_RXC   0x06000040
+                       IMX8DXL_SNVS_TAMPER_IN3_ADMA_SAI3_RXFS  0x06000040
+                       IMX8DXL_SNVS_TAMPER_IN2_ADMA_SAI3_RXD   0x06000060
+               >;
+       };
+
        pinctrl_usdhc1: usdhc1grp {
                fsl,pins = <
                        IMX8DXL_EMMC0_CLK_CONN_EMMC0_CLK        0x06000041