arm64: dts: imx8qm-mek: add sai and wm8960 support
authorFrank Li <Frank.Li@nxp.com>
Thu, 25 Apr 2024 20:24:39 +0000 (16:24 -0400)
committerShawn Guo <shawnguo@kernel.org>
Mon, 3 Jun 2024 01:16:45 +0000 (09:16 +0800)
Add sai[0,1,6,7], wm8960 and asrc0 support.

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

index 5c6b39c6933fc4f108e20c98b0f9a03706e583f6..6bdda248179f9fe5d9d33a864973b86a0089d430 100644 (file)
                regulator-min-microvolt = <1800000>;
                regulator-max-microvolt = <1800000>;
        };
+
+       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 {
+               compatible = "fsl,imx-audio-wm8960";
+               model = "wm8960-audio";
+               audio-cpu = <&sai1>;
+               audio-codec = <&wm8960>;
+               hp-det-gpio = <&lsio_gpio0 31 GPIO_ACTIVE_HIGH>;
+               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";
 };
 
+&amix {
+       status = "okay";
+};
+
+&asrc0 {
+       fsl,asrc-rate = <48000>;
+       status = "okay";
+};
+
 &i2c1 {
        #address-cells = <1>;
        #size-cells = <0>;
        scl-gpios = <&lsio_gpio0 14 GPIO_ACTIVE_HIGH>;
        sda-gpios = <&lsio_gpio0 15 GPIO_ACTIVE_HIGH>;
        status = "okay";
+
+       wm8960: audio-codec@1a {
+               compatible = "wlf,wm8960";
+               reg = <0x1a>;
+               clocks = <&mclkout0_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>,
+                                 <&mclkout0_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>;
+       };
 };
 
 &lpuart0 {
        status = "okay";
 };
 
+&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_4>;
+       assigned-clock-rates = <786432000>, <49152000>, <12288000>, <49152000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai0>;
+       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_4>;
+       assigned-clock-rates = <786432000>, <49152000>, <12288000>, <49152000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai1>;
+       status = "okay";
+};
+
+&sai6 {
+       assigned-clocks = <&acm IMX_ADMA_ACM_SAI6_MCLK_SEL>,
+                         <&clk IMX_SC_R_AUDIO_PLL_1 IMX_SC_PM_CLK_PLL>,
+                         <&clk IMX_SC_R_AUDIO_PLL_1 IMX_SC_PM_CLK_SLV_BUS>,
+                         <&clk IMX_SC_R_AUDIO_PLL_1 IMX_SC_PM_CLK_MST_BUS>,
+                         <&sai6_lpcg IMX_LPCG_CLK_4>;
+       assigned-clock-parents = <&aud_pll_div1_lpcg IMX_LPCG_CLK_0>;
+       assigned-clock-rates = <0>, <786432000>, <98304000>, <12288000>, <98304000>;
+       fsl,sai-asynchronous;
+       status = "okay";
+};
+
+&sai7 {
+       assigned-clocks = <&acm IMX_ADMA_ACM_SAI7_MCLK_SEL>,
+                         <&clk IMX_SC_R_AUDIO_PLL_1 IMX_SC_PM_CLK_PLL>,
+                         <&clk IMX_SC_R_AUDIO_PLL_1 IMX_SC_PM_CLK_SLV_BUS>,
+                         <&clk IMX_SC_R_AUDIO_PLL_1 IMX_SC_PM_CLK_MST_BUS>,
+                         <&sai7_lpcg IMX_LPCG_CLK_4>;
+       assigned-clock-parents = <&aud_pll_div1_lpcg IMX_LPCG_CLK_0>;
+       assigned-clock-rates = <0>, <786432000>, <98304000>, <12288000>, <98304000>;
+       fsl,sai-asynchronous;
+       status = "okay";
+};
+
 &iomuxc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hog>;
+
+       pinctrl_hog: hoggrp {
+               fsl,pins = <
+                       IMX8QM_MCLK_OUT0_AUD_ACM_MCLK_OUT0                      0x0600004c
+                       IMX8QM_SCU_GPIO0_03_LSIO_GPIO0_IO31                     0x0600004c
+               >;
+       };
+
        pinctrl_i2c1: i2c1grp {
                fsl,pins = <
                        IMX8QM_GPT0_CLK_DMA_I2C1_SCL 0x0600004c
                >;
        };
 
+       pinctrl_sai0: sai0grp {
+               fsl,pins = <
+                       IMX8QM_SPI0_CS1_AUD_SAI0_TXC                            0x0600004c
+                       IMX8QM_SPI2_CS1_AUD_SAI0_TXFS                           0x0600004c
+                       IMX8QM_SAI1_RXFS_AUD_SAI0_RXD                           0x0600004c
+                       IMX8QM_SAI1_RXC_AUD_SAI0_TXD                            0x0600006c
+               >;
+       };
+
+       pinctrl_sai1: sai1grp {
+               fsl,pins = <
+                       IMX8QM_SAI1_RXD_AUD_SAI1_RXD                            0x06000040
+                       IMX8QM_SAI1_TXFS_AUD_SAI1_TXFS                          0x06000040
+                       IMX8QM_SAI1_TXD_AUD_SAI1_TXD                            0x06000060
+                       IMX8QM_SAI1_TXC_AUD_SAI1_TXC                            0x06000040
+               >;
+       };
+
        pinctrl_usdhc1: usdhc1grp {
                fsl,pins = <
                        IMX8QM_EMMC0_CLK_CONN_EMMC0_CLK                         0x06000041