]> www.infradead.org Git - users/willy/xarray.git/commitdiff
arm64: dts: freescale: imx93-phyboard-segin: Add I2S audio
authorPrimoz Fiser <primoz.fiser@norik.com>
Tue, 22 Apr 2025 10:56:42 +0000 (12:56 +0200)
committerShawn Guo <shawnguo@kernel.org>
Fri, 9 May 2025 10:10:06 +0000 (18:10 +0800)
Add support for I2S audio found on phyBOARD-Segin-i.MX93. Audio codec
TLV320AIC3007 is connected to SAI1 interface as a DAI master. MCLK is
provided from the SAI's internal audio PLL (19.2 MHz).

Signed-off-by: Primoz Fiser <primoz.fiser@norik.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm64/boot/dts/freescale/imx93-phyboard-segin.dts

index e4f959f665b24c65d67f307a169841c4dda59702..54e084e69706e8b25a1ac1aff350d9b03eb65171 100644 (file)
                enable-gpios = <&gpio4 16 GPIO_ACTIVE_HIGH>;
        };
 
+       reg_sound_1v8: regulator-sound-1v8 {
+               compatible = "regulator-fixed";
+               regulator-max-microvolt = <1800000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-name = "VCC1V8_AUDIO";
+       };
+
+       reg_sound_3v3: regulator-sound-3v3 {
+               compatible = "regulator-fixed";
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "VCC3V3_ANALOG";
+       };
+
        reg_usdhc2_vmmc: regulator-usdhc2 {
                compatible = "regulator-fixed";
                enable-active-high;
                regulator-max-microvolt = <3300000>;
                regulator-name = "VCC_SD";
        };
+
+       sound: sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "phyBOARD-Segin-TLV320AIC3007";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,bitclock-master = <&dailink_master>;
+               simple-audio-card,frame-master = <&dailink_master>;
+               simple-audio-card,widgets =
+                       "Line", "Line In",
+                       "Line", "Line Out",
+                       "Speaker", "Speaker";
+               simple-audio-card,routing =
+                       "Line Out", "LLOUT",
+                       "Line Out", "RLOUT",
+                       "Speaker", "SPOP",
+                       "Speaker", "SPOM",
+                       "LINE1L", "Line In",
+                       "LINE1R", "Line In";
+
+               simple-audio-card,cpu {
+                       sound-dai = <&sai1>;
+               };
+
+               dailink_master: simple-audio-card,codec {
+                       sound-dai = <&audio_codec>;
+                       clocks = <&clk IMX93_CLK_SAI1>;
+               };
+       };
 };
 
 /* CAN */
        pinctrl-0 = <&pinctrl_lpi2c2>;
        status = "okay";
 
+       /* Codec */
+       audio_codec: audio-codec@18 {
+               compatible = "ti,tlv320aic3007";
+               reg = <0x18>;
+               #sound-dai-cells = <0>;
+               AVDD-supply = <&reg_sound_3v3>;
+               IOVDD-supply = <&reg_sound_3v3>;
+               DRVDD-supply = <&reg_sound_3v3>;
+               DVDD-supply = <&reg_sound_1v8>;
+       };
+
        /* RTC */
        i2c_rtc: rtc@68 {
                compatible = "microcrystal,rv4162";
        status = "okay";
 };
 
+/* Audio */
+&sai1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai1>;
+       assigned-clocks = <&clk IMX93_CLK_SAI1>;
+       assigned-clock-parents = <&clk IMX93_CLK_AUDIO_PLL>;
+       assigned-clock-rates = <19200000>;
+       fsl,sai-mclk-direction-output;
+       status = "okay";
+};
+
 /* USB  */
 &usbotg1 {
        disable-over-current;
                >;
        };
 
+       pinctrl_sai1: sai1grp {
+               fsl,pins = <
+                       MX93_PAD_UART2_RXD__SAI1_MCLK           0x1202
+                       MX93_PAD_SAI1_TXFS__SAI1_TX_SYNC        0x1202
+                       MX93_PAD_SAI1_TXC__SAI1_TX_BCLK         0x1202
+                       MX93_PAD_SAI1_TXD0__SAI1_TX_DATA00      0x1402
+                       MX93_PAD_SAI1_RXD0__SAI1_RX_DATA00      0x1402
+               >;
+       };
+
        pinctrl_usdhc2_cd: usdhc2cdgrp {
                fsl,pins = <
                        MX93_PAD_SD2_CD_B__GPIO3_IO00           0x31e