arm64: dts: freescale: imx93-phyboard-segin: Add I2S audio

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>
This commit is contained in:
Primoz Fiser 2025-04-22 12:56:42 +02:00 committed by Shawn Guo
parent b7fed5065b
commit c3f6c388d3

View File

@ -35,6 +35,20 @@ flexcan1_tc: can-phy0 {
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;
@ -45,6 +59,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 */
@ -62,6 +104,17 @@ &lpi2c2 {
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";
@ -80,6 +133,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;
@ -148,6 +212,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