[RESEND,2/3] ARM: dts: imx28-amarula-rmm: add I2S audio

Message ID 20250924130749.3012071-2-dario.binacchi@amarulasolutions.com
State New
Headers show
Series
  • [RESEND,1/3] ASoC: mxs-saif: support usage with simple-audio-card
Related show

Commit Message

Dario Binacchi Sept. 24, 2025, 1:07 p.m. UTC
Add support for I2S audio on Amarula rmm board. Audio codec
TLV320AIC3X is connected as slave to SAIF0, which provides
bitclock, frame and MCLK.

Co-developed-by: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
---

 .../boot/dts/nxp/mxs/imx28-amarula-rmm.dts    | 51 +++++++++++++++++++
 1 file changed, 51 insertions(+)

Comments

Shawn Guo Oct. 27, 2025, 12:49 a.m. UTC | #1
On Wed, Sep 24, 2025 at 03:07:45PM +0200, Dario Binacchi wrote:
> Add support for I2S audio on Amarula rmm board. Audio codec
> TLV320AIC3X is connected as slave to SAIF0, which provides
> bitclock, frame and MCLK.
> 
> Co-developed-by: Michael Trimarchi <michael@amarulasolutions.com>
> Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
> Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
> ---
> 
>  .../boot/dts/nxp/mxs/imx28-amarula-rmm.dts    | 51 +++++++++++++++++++
>  1 file changed, 51 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/nxp/mxs/imx28-amarula-rmm.dts b/arch/arm/boot/dts/nxp/mxs/imx28-amarula-rmm.dts
> index af59211842fb..0c5b52f67178 100644
> --- a/arch/arm/boot/dts/nxp/mxs/imx28-amarula-rmm.dts
> +++ b/arch/arm/boot/dts/nxp/mxs/imx28-amarula-rmm.dts
> @@ -112,6 +112,29 @@ reg_usb1_vbus: regulator-usb1-vbus {
>  		enable-active-high;
>  		regulator-always-on;
>  	};
> +
> +	sound {
> +		compatible = "simple-audio-card";
> +		simple-audio-card,name = "imx28-mrmmi-tlv320aic3x-audio";
> +		simple-audio-card,format = "i2s";
> +		simple-audio-card,bitclock-master = <&cpu_dai>;
> +		simple-audio-card,frame-master = <&cpu_dai>;
> +		simple-audio-card,widgets =
> +			"Headphone", "Headphone Jack";
> +		simple-audio-card,routing =
> +			"Headphone Jack", "HPROUT",
> +			"Headphone Jack", "HPRCOM";
> +		simple-audio-card,mclk-fs = <512>;
> +
> +		cpu_dai: simple-audio-card,cpu {
> +			sound-dai = <&saif0>;
> +			clocks = <&saif0>;
> +		};
> +
> +		codec_dai: simple-audio-card,codec {
> +			sound-dai = <&tlv320aic3x>;
> +		};
> +	};
>  };
>  
>  &auart0 {
> @@ -154,6 +177,20 @@ &i2c0 {
>  	pinctrl-0 = <&i2c0_pins_a>;
>  	status = "okay";
>  
> +	tlv320aic3x: tlv320aic3x@18 {

Can we use a generic node name?

> +		compatible = "ti,tlv320aic3x";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&tlv320aic3x_pins>;
> +		reg = <0x18>;
> +		reset-gpios = <&gpio2 4 GPIO_ACTIVE_LOW>;
> +		#sound-dai-cells = <0>;
> +

Nitpick: unnecessary newline

Shawn

> +		DVDD-supply = <&reg_1v8>;
> +		IOVDD-supply = <&reg_3v3>;
> +		AVDD-supply = <&reg_3v3>;
> +		DRVDD-supply = <&reg_3v3>;
> +	};
> +
>  	touchscreen: touchscreen@38 {
>  		compatible = "edt,edt-ft5306";
>  		reg = <0x38>;
> @@ -246,6 +283,14 @@ MX28_PAD_PWM1__GPIO_3_17
>  		fsl,voltage = <MXS_VOLTAGE_HIGH>;
>  	};
>  
> +	tlv320aic3x_pins: tlv320aic3x-pins@0 {
> +		reg = <0>;
> +		fsl,pinmux-ids = <MX28_PAD_SSP0_DATA4__GPIO_2_4>;
> +		fsl,drive-strength = <MXS_DRIVE_4mA>;
> +		fsl,pull-up = <MXS_PULL_ENABLE>;
> +		fsl,voltage = <MXS_VOLTAGE_HIGH>;
> +	};
> +
>  	usb0_vbus_enable_pin: usb0-vbus-enable@0 {
>  		reg = <0>;
>  		fsl,pinmux-ids = <MX28_PAD_SSP0_DATA5__GPIO_2_5>;
> @@ -269,6 +314,12 @@ &pwm {
>  	status = "okay";
>  };
>  
> +&saif0 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&saif0_pins_a>;
> +	status = "okay";
> +};
> +
>  /* microSD */
>  &ssp0 {
>  	compatible = "fsl,imx28-mmc";
> -- 
> 2.43.0
> 
> base-commit: cec1e6e5d1ab33403b809f79cd20d6aff124ccfe
> branch: microgea-rmm-audio

To unsubscribe from this group and stop receiving emails from it, send an email to linux-amarula+unsubscribe@amarulasolutions.com.

Patch

diff --git a/arch/arm/boot/dts/nxp/mxs/imx28-amarula-rmm.dts b/arch/arm/boot/dts/nxp/mxs/imx28-amarula-rmm.dts
index af59211842fb..0c5b52f67178 100644
--- a/arch/arm/boot/dts/nxp/mxs/imx28-amarula-rmm.dts
+++ b/arch/arm/boot/dts/nxp/mxs/imx28-amarula-rmm.dts
@@ -112,6 +112,29 @@  reg_usb1_vbus: regulator-usb1-vbus {
 		enable-active-high;
 		regulator-always-on;
 	};
+
+	sound {
+		compatible = "simple-audio-card";
+		simple-audio-card,name = "imx28-mrmmi-tlv320aic3x-audio";
+		simple-audio-card,format = "i2s";
+		simple-audio-card,bitclock-master = <&cpu_dai>;
+		simple-audio-card,frame-master = <&cpu_dai>;
+		simple-audio-card,widgets =
+			"Headphone", "Headphone Jack";
+		simple-audio-card,routing =
+			"Headphone Jack", "HPROUT",
+			"Headphone Jack", "HPRCOM";
+		simple-audio-card,mclk-fs = <512>;
+
+		cpu_dai: simple-audio-card,cpu {
+			sound-dai = <&saif0>;
+			clocks = <&saif0>;
+		};
+
+		codec_dai: simple-audio-card,codec {
+			sound-dai = <&tlv320aic3x>;
+		};
+	};
 };
 
 &auart0 {
@@ -154,6 +177,20 @@  &i2c0 {
 	pinctrl-0 = <&i2c0_pins_a>;
 	status = "okay";
 
+	tlv320aic3x: tlv320aic3x@18 {
+		compatible = "ti,tlv320aic3x";
+		pinctrl-names = "default";
+		pinctrl-0 = <&tlv320aic3x_pins>;
+		reg = <0x18>;
+		reset-gpios = <&gpio2 4 GPIO_ACTIVE_LOW>;
+		#sound-dai-cells = <0>;
+
+		DVDD-supply = <&reg_1v8>;
+		IOVDD-supply = <&reg_3v3>;
+		AVDD-supply = <&reg_3v3>;
+		DRVDD-supply = <&reg_3v3>;
+	};
+
 	touchscreen: touchscreen@38 {
 		compatible = "edt,edt-ft5306";
 		reg = <0x38>;
@@ -246,6 +283,14 @@  MX28_PAD_PWM1__GPIO_3_17
 		fsl,voltage = <MXS_VOLTAGE_HIGH>;
 	};
 
+	tlv320aic3x_pins: tlv320aic3x-pins@0 {
+		reg = <0>;
+		fsl,pinmux-ids = <MX28_PAD_SSP0_DATA4__GPIO_2_4>;
+		fsl,drive-strength = <MXS_DRIVE_4mA>;
+		fsl,pull-up = <MXS_PULL_ENABLE>;
+		fsl,voltage = <MXS_VOLTAGE_HIGH>;
+	};
+
 	usb0_vbus_enable_pin: usb0-vbus-enable@0 {
 		reg = <0>;
 		fsl,pinmux-ids = <MX28_PAD_SSP0_DATA5__GPIO_2_5>;
@@ -269,6 +314,12 @@  &pwm {
 	status = "okay";
 };
 
+&saif0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&saif0_pins_a>;
+	status = "okay";
+};
+
 /* microSD */
 &ssp0 {
 	compatible = "fsl,imx28-mmc";