]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
arm64: dts: imx8mp-msc-sm2s: Add sound card
authorLuca Ceresoli <luca.ceresoli@bootlin.com>
Mon, 29 May 2023 09:57:28 +0000 (11:57 +0200)
committerShawn Guo <shawnguo@kernel.org>
Sun, 4 Jun 2023 12:41:05 +0000 (20:41 +0800)
The MSC SM2-MB-EP1 carrier board for the SM2S-IMX8PLUS SMARC module has an
NXP SGTL5000 audio codec connected to I2S-0 (sai2).

This requires to:

 * add the power supplies (always on)
 * enable sai2 with pinmuxes
 * reparent the CLKOUT1 clock that feeds the codec SYS_MCLK to
   IMX8MP_CLK_24M in order it to generate an accurate 24 MHz rate

Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm64/boot/dts/freescale/imx8mp-msc-sm2s-ep1.dts

index 470ff8e31e3274bfd461149e30031fe06db36ec8..64d522c71a44869429e49c29600e67bb931f1b09 100644 (file)
        compatible = "avnet,sm2s-imx8mp-14N0600E-ep1",
                     "avnet,sm2s-imx8mp-14N0600E", "avnet,sm2s-imx8mp",
                     "fsl,imx8mp";
+
+       reg_vcc_3v3_audio: 3v3-audio-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "VCC_3V3_AUD";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       reg_vcc_1v8_audio: 1v8-audio-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "VCC_1V8_AUD";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "sgtl5000-audio";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,frame-master = <&codec_dai>;
+               simple-audio-card,bitclock-master = <&codec_dai>;
+
+               simple-audio-card,cpu {
+                       sound-dai = <&sai2>;
+               };
+
+               codec_dai: simple-audio-card,codec {
+                       sound-dai = <&sgtl5000>;
+               };
+       };
+};
+
+&i2c1 {
+       sgtl5000: audio-codec@a {
+               compatible = "fsl,sgtl5000";
+               reg = <0x0a>;
+
+               assigned-clocks = <&clk IMX8MP_CLK_CLKOUT1_SEL>;
+               assigned-clock-parents = <&clk IMX8MP_CLK_24M>;
+               assigned-clock-rates = <24000000>;
+               clocks = <&clk IMX8MP_CLK_CLKOUT1>;
+               clock-names = "mclk";
+               #sound-dai-cells = <0>;
+
+               VDDA-supply  = <&reg_vcc_3v3_audio>;
+               VDDD-supply  = <&reg_vcc_1v8_audio>;
+               VDDIO-supply = <&reg_vcc_1v8_audio>;
+       };
+};
+
+/* I2S-0 = sai2 */
+&sai2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai2>;
+
+       assigned-clocks = <&clk IMX8MP_CLK_SAI2>;
+       assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
+       assigned-clock-rates = <12288000>;
+
+       fsl,sai-mclk-direction-output;
+       status = "okay";
 };
 
 &flexcan1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_smarc_gpio>;
 
+       pinctrl_sai2: sai2grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI2_TXFS__AUDIOMIX_SAI2_TX_SYNC   0xd6
+                       MX8MP_IOMUXC_SAI2_TXC__AUDIOMIX_SAI2_TX_BCLK    0xd6
+                       MX8MP_IOMUXC_SAI2_RXD0__AUDIOMIX_SAI2_RX_DATA00 0xd6
+                       MX8MP_IOMUXC_SAI2_TXD0__AUDIOMIX_SAI2_TX_DATA00 0xd6
+               >;
+       };
+
        pinctrl_smarc_gpio: smarcgpiosgrp {
                fsl,pins =
                        <MX8MP_IOMUXC_GPIO1_IO11__GPIO1_IO11    0x19>, /* GPIO0 */