Re: [PATCH 12/13] arm64: dts: freescale: imx93-phyboard-segin: Add I2S audio

Frank Li
2025-04-10T15:27:56Z

On Thu, Apr 10, 2025 at 11:02:50AM +0200, Primoz Fiser wrote:
> 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>
> ---
> .../dts/freescale/imx93-phyboard-segin.dts | 75 +++++++++++++++++++
> 1 file changed, 75 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/freescale/imx93-phyboard-segin.dts b/arch/arm64/boot/dts/freescale/imx93-phyboard-segin.dts
> index faad3c3e627c..08574b146400 100644
> --- a/arch/arm64/boot/dts/freescale/imx93-phyboard-segin.dts
> +++ b/arch/arm64/boot/dts/freescale/imx93-phyboard-segin.dts
> @@ -37,6 +37,20 @@ reg_flexcan1_en: regulator-flexcan1-en {
> regulator-name = "CAN1_EN";
> };
>
> + 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;
> @@ -47,6 +61,34 @@ reg_usdhc2_vmmc: regulator-usdhc2 {
> 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 */
> @@ -64,6 +106,18 @@ &lpi2c2 {
> pinctrl-0 = <&pinctrl_lpi2c2>;
> status = "okay";
>
> + /* Codec */
> + audio_codec: audio-codec@18 {
> + compatible = "ti,tlv320aic3007";
> + reg = <0x18>;
> + #sound-dai-cells = <0>;
> +

needn't empty line here.

Reviewed-by: Frank Li <Frank.Li@nxp.com>

> + 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";
> @@ -82,6 +136,17 @@ &lpuart1 {
> 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;
> @@ -150,6 +215,16 @@ MX93_PAD_ENET2_RD2__GPIO4_IO26 0x31e
> >;
> };
>
> + 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
> --
> 2.34.1
>