diff mbox series

[3/7] arm64: dts: imx95-19x19-evk: Add audio related nodes

Message ID 20240627220001.692875-3-Frank.Li@nxp.com (mailing list archive)
State Superseded
Headers show
Series [1/7] arm64: dts: imx95: add edma[1..3] nodes | expand

Commit Message

Frank Li June 27, 2024, 9:59 p.m. UTC
Add sai1, sai2. Add i2c4 and wm8962 and other dependent nodes.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
 .../boot/dts/freescale/imx95-19x19-evk.dts    | 238 ++++++++++++++++++
 1 file changed, 238 insertions(+)

Comments

Peng Fan June 28, 2024, 12:03 a.m. UTC | #1
> Subject: [PATCH 3/7] arm64: dts: imx95-19x19-evk: Add audio related
> nodes
> 
> Add sai1, sai2. Add i2c4 and wm8962 and other dependent nodes.
> 
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
>  .../boot/dts/freescale/imx95-19x19-evk.dts    | 238
> ++++++++++++++++++
>  1 file changed, 238 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts
> b/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts
> index d14a54ab4fd47..660e623f4f964 100644
> --- a/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts
> +++ b/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts
> @@ -17,6 +17,11 @@ aliases {
>  		serial0 = &lpuart1;
>  	};
> 
> +	bt_sco_codec: audio-codec-bt-sco {
> +		#sound-dai-cells = <1>;
> +		compatible = "linux,bt-sco";
> +	};
> +
>  	chosen {
>  		stdout-path = &lpuart1;
>  	};
> @@ -40,6 +45,34 @@ linux_cma: linux,cma {
>  		};
>  	};
> 
> +	reg_3p3v: regulator-3p3v {
> +		compatible = "regulator-fixed";
> +		regulator-max-microvolt = <3300000>;
> +		regulator-min-microvolt = <3300000>;
> +		regulator-name = "+V3.3_SW";
> +	};
> +
> +	reg_audio_pwr: regulator-audio-pwr {
> +		compatible = "regulator-fixed";
> +		regulator-name = "audio-pwr";
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +		gpio = <&i2c4_gpio_expander_21 1
> GPIO_ACTIVE_HIGH>;
> +		enable-active-high;
> +		regulator-always-on;
> +	};
> +
> +	reg_audio_slot: regulator-audio-slot {
> +		compatible = "regulator-fixed";
> +		regulator-name = "audio-wm8962";
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +		gpio = <&i2c4_gpio_expander_21 7
> GPIO_ACTIVE_HIGH>;
> +		enable-active-high;
> +		regulator-always-on;
> +		status = "disabled";
> +	};
> +
>  	reg_m2_pwr: regulator-m2-pwr {
>  		compatible = "regulator-fixed";
>  		regulator-name = "M.2-power";
> @@ -79,6 +112,97 @@ reg_usdhc2_vmmc: regulator-usdhc2 {
>  		enable-active-high;
>  		off-on-delay-us = <12000>;
>  	};
> +
> +	sound-bt-sco {
> +		compatible = "simple-audio-card";
> +		simple-audio-card,name = "bt-sco-audio";
> +		simple-audio-card,format = "dsp_a";
> +		simple-audio-card,bitclock-inversion;
> +		simple-audio-card,frame-master = <&btcpu>;
> +		simple-audio-card,bitclock-master = <&btcpu>;
> +
> +		btcpu: simple-audio-card,cpu {
> +			sound-dai = <&sai1>;
> +			dai-tdm-slot-num = <2>;
> +			dai-tdm-slot-width = <16>;
> +		};
> +
> +		simple-audio-card,codec {
> +			sound-dai = <&bt_sco_codec 1>;
> +		};
> +	};
> +
> +	sound-micfil {
> +		compatible = "fsl,imx-audio-card";
> +		model = "micfil-audio";
> +
> +		pri-dai-link {
> +			link-name = "micfil hifi";
> +			format = "i2s";
> +			cpu {
> +				sound-dai = <&micfil>;
> +			};
> +		};
> +	};
> +
> +	sound-wm8962 {
> +		compatible = "fsl,imx-audio-wm8962";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_hp>;
> +		model = "wm8962-audio";
> +		audio-cpu = <&sai3>;
> +		audio-codec = <&wm8962>;
> +		hp-det-gpio = <&gpio2 11 GPIO_ACTIVE_HIGH>;
> +		audio-routing = "Headphone Jack", "HPOUTL",
> +				"Headphone Jack", "HPOUTR",
> +				"Ext Spk", "SPKOUTL",
> +				"Ext Spk", "SPKOUTR",
> +				"AMIC", "MICBIAS",
> +				"IN3R", "AMIC",
> +				"IN1R", "AMIC";
> +	};
> +};
> +
> +&lpi2c4 {
> +	clock-frequency = <400000>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_lpi2c4>;
> +	status = "okay";
> +
> +	wm8962: audio-codec@1a {
> +		compatible = "wlf,wm8962";
> +		reg = <0x1a>;
> +		clocks = <&scmi_clk IMX95_CLK_SAI3>;
> +		DCVDD-supply = <&reg_audio_pwr>;
> +		DBVDD-supply = <&reg_audio_pwr>;
> +		AVDD-supply = <&reg_audio_pwr>;
> +		CPVDD-supply = <&reg_audio_pwr>;
> +		MICVDD-supply = <&reg_audio_pwr>;
> +		PLLVDD-supply = <&reg_audio_pwr>;
> +		SPKVDD1-supply = <&reg_audio_pwr>;
> +		SPKVDD2-supply = <&reg_audio_pwr>;
> +		gpio-cfg = < 0x0000 /* 0:Default */
> +			     0x0000 /* 1:Default */
> +			     0x0000 /* 2:FN_DMICCLK */
> +			     0x0000 /* 3:Default */
> +			     0x0000 /* 4:FN_DMICCDAT */
> +			     0x0000 /* 5:Default */
> +			   >;
> +	};
> +
> +	i2c4_gpio_expander_21: gpio@21 {

Use gpio-expander@21?
It is easy to duplicate the node if other i2c bus also
has one.

Regards,
Peng.

> +		compatible = "nxp,pcal6408";
> +		reg = <0x21>;
> +		#gpio-cells = <2>;
> +		gpio-controller;
> +		interrupt-controller;
> +		#interrupt-cells = <2>;
> +		interrupt-parent = <&gpio2>;
> +		interrupts = <18 IRQ_TYPE_LEVEL_LOW>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_i2c4_pcal6408>;
> +		vcc-supply = <&reg_3p3v>;
> +	};
>  };
> 
>  &lpi2c7 {
> @@ -108,6 +232,23 @@ &lpuart1 {
>  	status = "okay";
>  };
> 
> +&micfil {
> +	#sound-dai-cells = <0>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_pdm>;
> +	assigned-clocks = <&scmi_clk IMX95_CLK_AUDIOPLL1_VCO>,
> +			  <&scmi_clk IMX95_CLK_AUDIOPLL2_VCO>,
> +			  <&scmi_clk IMX95_CLK_AUDIOPLL1>,
> +			  <&scmi_clk IMX95_CLK_AUDIOPLL2>,
> +			  <&scmi_clk IMX95_CLK_PDM>;
> +	assigned-clock-parents = <0>, <0>, <0>, <0>,
> +				 <&scmi_clk
> IMX95_CLK_AUDIOPLL1>;
> +	assigned-clock-rates = <3932160000>,
> +			       <3612672000>, <393216000>,
> +			       <361267200>, <49152000>;
> +	status = "okay";
> +};
> +
>  &mu7 {
>  	status = "okay";
>  };
> @@ -128,6 +269,42 @@ &pcie1 {
>  	status = "okay";
>  };
> 
> +&sai1 {
> +	#sound-dai-cells = <0>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_sai1>;
> +	assigned-clocks = <&scmi_clk IMX95_CLK_AUDIOPLL1_VCO>,
> +			  <&scmi_clk IMX95_CLK_AUDIOPLL2_VCO>,
> +			  <&scmi_clk IMX95_CLK_AUDIOPLL1>,
> +			  <&scmi_clk IMX95_CLK_AUDIOPLL2>,
> +			  <&scmi_clk IMX95_CLK_SAI1>;
> +	assigned-clock-parents = <0>, <0>, <0>, <0>,
> +				 <&scmi_clk
> IMX95_CLK_AUDIOPLL1>;
> +	assigned-clock-rates = <3932160000>,
> +			       <3612672000>, <393216000>,
> +			       <361267200>, <12288000>;
> +	fsl,sai-mclk-direction-output;
> +	status = "okay";
> +};
> +
> +&sai3 {
> +	#sound-dai-cells = <0>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_sai3>;
> +	assigned-clocks = <&scmi_clk IMX95_CLK_AUDIOPLL1_VCO>,
> +			  <&scmi_clk IMX95_CLK_AUDIOPLL2_VCO>,
> +			  <&scmi_clk IMX95_CLK_AUDIOPLL1>,
> +			  <&scmi_clk IMX95_CLK_AUDIOPLL2>,
> +			  <&scmi_clk IMX95_CLK_SAI3>;
> +	assigned-clock-parents = <0>, <0>, <0>, <0>,
> +				 <&scmi_clk
> IMX95_CLK_AUDIOPLL1>;
> +	assigned-clock-rates = <3932160000>,
> +			       <3612672000>, <393216000>,
> +			       <361267200>, <12288000>;
> +	fsl,sai-mclk-direction-output;
> +	status = "okay";
> +};
> +
>  &usdhc1 {
>  	pinctrl-names = "default", "state_100mhz", "state_200mhz",
> "sleep";
>  	pinctrl-0 = <&pinctrl_usdhc1>;
> @@ -159,12 +336,31 @@ &wdog3 {
>  };
> 
>  &scmi_iomuxc {
> +	pinctrl_hp: hpgrp {
> +		fsl,pins = <
> +			IMX95_PAD_GPIO_IO11__GPIO2_IO_BIT11
> 		0x31e
> +		>;
> +	};
> +
> +	pinctrl_i2c4_pcal6408: i2c4pcal6498grp {
> +		fsl,pins = <
> +			IMX95_PAD_GPIO_IO18__GPIO2_IO_BIT18
> 			0x31e
> +		>;
> +	};
> +
>  	pinctrl_i2c7_pcal6524: i2c7pcal6524grp {
>  		fsl,pins = <
>  			IMX95_PAD_GPIO_IO36__GPIO5_IO_BIT16
> 			0x31e
>  		>;
>  	};
> 
> +	pinctrl_lpi2c4: lpi2c4grp {
> +		fsl,pins = <
> +			IMX95_PAD_GPIO_IO30__LPI2C4_SDA
> 		0x40000b9e
> +			IMX95_PAD_GPIO_IO31__LPI2C4_SCL
> 		0x40000b9e
> +		>;
> +	};
> +
>  	pinctrl_lpi2c7: lpi2c7grp {
>  		fsl,pins = <
>  			IMX95_PAD_GPIO_IO08__LPI2C7_SDA
> 		0x40000b9e
> @@ -184,6 +380,48 @@
> IMX95_PAD_GPIO_IO35__HSIOMIX_TOP_PCIE2_CLKREQ_B
> 	0x4000031e
>  		>;
>  	};
> 
> +	pinctrl_pdm: pdmgrp {
> +		fsl,pins = <
> +
> 	IMX95_PAD_PDM_CLK__AONMIX_TOP_PDM_CLK
> 		0x31e
> +
> 	IMX95_PAD_PDM_BIT_STREAM0__AONMIX_TOP_PDM_BIT_S
> TREAM_BIT0	0x31e
> +		>;
> +	};
> +
> +	pinctrl_sai1: sai1grp {
> +		fsl,pins = <
> +
> 	IMX95_PAD_SAI1_RXD0__AONMIX_TOP_SAI1_RX_DATA_BIT0
> 0x31e
> +
> 	IMX95_PAD_SAI1_TXC__AONMIX_TOP_SAI1_TX_BCLK
> 0x31e
> +
> 	IMX95_PAD_SAI1_TXFS__AONMIX_TOP_SAI1_TX_SYNC
> 0x31e
> +
> 	IMX95_PAD_SAI1_TXD0__AONMIX_TOP_SAI1_TX_DATA_BIT0
> 0x31e
> +		>;
> +	};
> +
> +	pinctrl_sai2: sai2grp {
> +		fsl,pins = <
> +
> 	IMX95_PAD_ENET2_MDIO__NETCMIX_TOP_SAI2_RX_BCLK
> 			0x31e
> +
> 	IMX95_PAD_ENET2_MDC__NETCMIX_TOP_SAI2_RX_SYNC
> 		0x31e
> +
> 	IMX95_PAD_ENET2_TD3__NETCMIX_TOP_SAI2_RX_DATA_BIT
> 0		0x31e
> +
> 	IMX95_PAD_ENET2_TD2__NETCMIX_TOP_SAI2_RX_DATA_BIT
> 1		0x31e
> +
> 	IMX95_PAD_ENET2_TXC__NETCMIX_TOP_SAI2_TX_BCLK
> 		0x31e
> +
> 	IMX95_PAD_ENET2_TX_CTL__NETCMIX_TOP_SAI2_TX_SYNC
> 		0x31e
> +
> 	IMX95_PAD_ENET2_RX_CTL__NETCMIX_TOP_SAI2_TX_DATA_
> BIT0		0x31e
> +
> 	IMX95_PAD_ENET2_RXC__NETCMIX_TOP_SAI2_TX_DATA_BIT1
> 		0x31e
> +
> 	IMX95_PAD_ENET2_RD0__NETCMIX_TOP_SAI2_TX_DATA_BIT
> 2		0x31e
> +
> 	IMX95_PAD_ENET2_RD1__NETCMIX_TOP_SAI2_TX_DATA_BIT
> 3		0x31e
> +
> 	IMX95_PAD_ENET2_RD2__NETCMIX_TOP_SAI2_MCLK
> 		0x31e
> +		>;
> +	};
> +
> +	pinctrl_sai3: sai3grp {
> +		fsl,pins = <
> +			IMX95_PAD_GPIO_IO17__SAI3_MCLK
> 			0x31e
> +			IMX95_PAD_GPIO_IO16__SAI3_TX_BCLK
> 		0x31e
> +			IMX95_PAD_GPIO_IO26__SAI3_TX_SYNC
> 		0x31e
> +
> 	IMX95_PAD_GPIO_IO20__SAI3_RX_DATA_BIT0
> 	0x31e
> +
> 	IMX95_PAD_GPIO_IO21__SAI3_TX_DATA_BIT0
> 	0x31e
> +		>;
> +	};
> +
>  	pinctrl_uart1: uart1grp {
>  		fsl,pins = <
> 
> 	IMX95_PAD_UART1_RXD__AONMIX_TOP_LPUART1_RX
> 0x31e
> --
> 2.34.1
>
Frank Li July 1, 2024, 3:45 p.m. UTC | #2
On Fri, Jun 28, 2024 at 12:03:27AM +0000, Peng Fan wrote:
> > Subject: [PATCH 3/7] arm64: dts: imx95-19x19-evk: Add audio related
> > nodes
> > 
> > Add sai1, sai2. Add i2c4 and wm8962 and other dependent nodes.
> > 
> > Signed-off-by: Frank Li <Frank.Li@nxp.com>
> > ---
> >  .../boot/dts/freescale/imx95-19x19-evk.dts    | 238
> > ++++++++++++++++++
> >  1 file changed, 238 insertions(+)
> > 
> > diff --git a/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts
> > b/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts
> > index d14a54ab4fd47..660e623f4f964 100644
> > --- a/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts
> > +++ b/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts
> > @@ -17,6 +17,11 @@ aliases {
> >  		serial0 = &lpuart1;
> >  	};
> > 
...
> > +			     0x0000 /* 4:FN_DMICCDAT */
> > +			     0x0000 /* 5:Default */
> > +			   >;
> > +	};
> > +
> > +	i2c4_gpio_expander_21: gpio@21 {
> 
> Use gpio-expander@21?
> It is easy to duplicate the node if other i2c bus also
> has one.

It should be fine, parent node is difference. gpio-expander@21 can't
resolve your problem. 

i2c2
{
	gpio-expander@21 {};
}

i2c3
{
	gpio-expander@21 {};
}

It should be same situation as gpio@21.

DT should allow the same name under difference parent.

Frank

> 
> Regards,
> Peng.
>
Peng Fan July 2, 2024, 12:02 a.m. UTC | #3
> Subject: Re: [PATCH 3/7] arm64: dts: imx95-19x19-evk: Add audio
> related nodes
> 
> On Fri, Jun 28, 2024 at 12:03:27AM +0000, Peng Fan wrote:
> > > Subject: [PATCH 3/7] arm64: dts: imx95-19x19-evk: Add audio
> related
> > > nodes
> > >
> > > Add sai1, sai2. Add i2c4 and wm8962 and other dependent nodes.
> > >
> > > Signed-off-by: Frank Li <Frank.Li@nxp.com>
> > > ---
> > >  .../boot/dts/freescale/imx95-19x19-evk.dts    | 238
> > > ++++++++++++++++++
> > >  1 file changed, 238 insertions(+)
> > >
> > > diff --git a/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts
> > > b/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts
> > > index d14a54ab4fd47..660e623f4f964 100644
> > > --- a/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts
> > > +++ b/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts
> > > @@ -17,6 +17,11 @@ aliases {
> > >  		serial0 = &lpuart1;
> > >  	};
> > >
> ...
> > > +			     0x0000 /* 4:FN_DMICCDAT */
> > > +			     0x0000 /* 5:Default */
> > > +			   >;
> > > +	};
> > > +
> > > +	i2c4_gpio_expander_21: gpio@21 {
> >
> > Use gpio-expander@21?
> > It is easy to duplicate the node if other i2c bus also has one.
> 
> It should be fine, parent node is difference. gpio-expander@21 can't
> resolve your problem.
> 
> i2c2
> {
> 	gpio-expander@21 {};
> }
> 
> i2c3
> {
> 	gpio-expander@21 {};
> }
> 
> It should be same situation as gpio@21.
> 
> DT should allow the same name under difference parent.

As I recall, there is build error of duplicated node.

Regards,
Peng.

> 
> Frank
> 
> >
> > Regards,
> > Peng.
> >
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts b/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts
index d14a54ab4fd47..660e623f4f964 100644
--- a/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts
+++ b/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts
@@ -17,6 +17,11 @@  aliases {
 		serial0 = &lpuart1;
 	};
 
+	bt_sco_codec: audio-codec-bt-sco {
+		#sound-dai-cells = <1>;
+		compatible = "linux,bt-sco";
+	};
+
 	chosen {
 		stdout-path = &lpuart1;
 	};
@@ -40,6 +45,34 @@  linux_cma: linux,cma {
 		};
 	};
 
+	reg_3p3v: regulator-3p3v {
+		compatible = "regulator-fixed";
+		regulator-max-microvolt = <3300000>;
+		regulator-min-microvolt = <3300000>;
+		regulator-name = "+V3.3_SW";
+	};
+
+	reg_audio_pwr: regulator-audio-pwr {
+		compatible = "regulator-fixed";
+		regulator-name = "audio-pwr";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		gpio = <&i2c4_gpio_expander_21 1 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+		regulator-always-on;
+	};
+
+	reg_audio_slot: regulator-audio-slot {
+		compatible = "regulator-fixed";
+		regulator-name = "audio-wm8962";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		gpio = <&i2c4_gpio_expander_21 7 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+		regulator-always-on;
+		status = "disabled";
+	};
+
 	reg_m2_pwr: regulator-m2-pwr {
 		compatible = "regulator-fixed";
 		regulator-name = "M.2-power";
@@ -79,6 +112,97 @@  reg_usdhc2_vmmc: regulator-usdhc2 {
 		enable-active-high;
 		off-on-delay-us = <12000>;
 	};
+
+	sound-bt-sco {
+		compatible = "simple-audio-card";
+		simple-audio-card,name = "bt-sco-audio";
+		simple-audio-card,format = "dsp_a";
+		simple-audio-card,bitclock-inversion;
+		simple-audio-card,frame-master = <&btcpu>;
+		simple-audio-card,bitclock-master = <&btcpu>;
+
+		btcpu: simple-audio-card,cpu {
+			sound-dai = <&sai1>;
+			dai-tdm-slot-num = <2>;
+			dai-tdm-slot-width = <16>;
+		};
+
+		simple-audio-card,codec {
+			sound-dai = <&bt_sco_codec 1>;
+		};
+	};
+
+	sound-micfil {
+		compatible = "fsl,imx-audio-card";
+		model = "micfil-audio";
+
+		pri-dai-link {
+			link-name = "micfil hifi";
+			format = "i2s";
+			cpu {
+				sound-dai = <&micfil>;
+			};
+		};
+	};
+
+	sound-wm8962 {
+		compatible = "fsl,imx-audio-wm8962";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_hp>;
+		model = "wm8962-audio";
+		audio-cpu = <&sai3>;
+		audio-codec = <&wm8962>;
+		hp-det-gpio = <&gpio2 11 GPIO_ACTIVE_HIGH>;
+		audio-routing = "Headphone Jack", "HPOUTL",
+				"Headphone Jack", "HPOUTR",
+				"Ext Spk", "SPKOUTL",
+				"Ext Spk", "SPKOUTR",
+				"AMIC", "MICBIAS",
+				"IN3R", "AMIC",
+				"IN1R", "AMIC";
+	};
+};
+
+&lpi2c4 {
+	clock-frequency = <400000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_lpi2c4>;
+	status = "okay";
+
+	wm8962: audio-codec@1a {
+		compatible = "wlf,wm8962";
+		reg = <0x1a>;
+		clocks = <&scmi_clk IMX95_CLK_SAI3>;
+		DCVDD-supply = <&reg_audio_pwr>;
+		DBVDD-supply = <&reg_audio_pwr>;
+		AVDD-supply = <&reg_audio_pwr>;
+		CPVDD-supply = <&reg_audio_pwr>;
+		MICVDD-supply = <&reg_audio_pwr>;
+		PLLVDD-supply = <&reg_audio_pwr>;
+		SPKVDD1-supply = <&reg_audio_pwr>;
+		SPKVDD2-supply = <&reg_audio_pwr>;
+		gpio-cfg = < 0x0000 /* 0:Default */
+			     0x0000 /* 1:Default */
+			     0x0000 /* 2:FN_DMICCLK */
+			     0x0000 /* 3:Default */
+			     0x0000 /* 4:FN_DMICCDAT */
+			     0x0000 /* 5:Default */
+			   >;
+	};
+
+	i2c4_gpio_expander_21: gpio@21 {
+		compatible = "nxp,pcal6408";
+		reg = <0x21>;
+		#gpio-cells = <2>;
+		gpio-controller;
+		interrupt-controller;
+		#interrupt-cells = <2>;
+		interrupt-parent = <&gpio2>;
+		interrupts = <18 IRQ_TYPE_LEVEL_LOW>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_i2c4_pcal6408>;
+		vcc-supply = <&reg_3p3v>;
+	};
 };
 
 &lpi2c7 {
@@ -108,6 +232,23 @@  &lpuart1 {
 	status = "okay";
 };
 
+&micfil {
+	#sound-dai-cells = <0>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pdm>;
+	assigned-clocks = <&scmi_clk IMX95_CLK_AUDIOPLL1_VCO>,
+			  <&scmi_clk IMX95_CLK_AUDIOPLL2_VCO>,
+			  <&scmi_clk IMX95_CLK_AUDIOPLL1>,
+			  <&scmi_clk IMX95_CLK_AUDIOPLL2>,
+			  <&scmi_clk IMX95_CLK_PDM>;
+	assigned-clock-parents = <0>, <0>, <0>, <0>,
+				 <&scmi_clk IMX95_CLK_AUDIOPLL1>;
+	assigned-clock-rates = <3932160000>,
+			       <3612672000>, <393216000>,
+			       <361267200>, <49152000>;
+	status = "okay";
+};
+
 &mu7 {
 	status = "okay";
 };
@@ -128,6 +269,42 @@  &pcie1 {
 	status = "okay";
 };
 
+&sai1 {
+	#sound-dai-cells = <0>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_sai1>;
+	assigned-clocks = <&scmi_clk IMX95_CLK_AUDIOPLL1_VCO>,
+			  <&scmi_clk IMX95_CLK_AUDIOPLL2_VCO>,
+			  <&scmi_clk IMX95_CLK_AUDIOPLL1>,
+			  <&scmi_clk IMX95_CLK_AUDIOPLL2>,
+			  <&scmi_clk IMX95_CLK_SAI1>;
+	assigned-clock-parents = <0>, <0>, <0>, <0>,
+				 <&scmi_clk IMX95_CLK_AUDIOPLL1>;
+	assigned-clock-rates = <3932160000>,
+			       <3612672000>, <393216000>,
+			       <361267200>, <12288000>;
+	fsl,sai-mclk-direction-output;
+	status = "okay";
+};
+
+&sai3 {
+	#sound-dai-cells = <0>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_sai3>;
+	assigned-clocks = <&scmi_clk IMX95_CLK_AUDIOPLL1_VCO>,
+			  <&scmi_clk IMX95_CLK_AUDIOPLL2_VCO>,
+			  <&scmi_clk IMX95_CLK_AUDIOPLL1>,
+			  <&scmi_clk IMX95_CLK_AUDIOPLL2>,
+			  <&scmi_clk IMX95_CLK_SAI3>;
+	assigned-clock-parents = <0>, <0>, <0>, <0>,
+				 <&scmi_clk IMX95_CLK_AUDIOPLL1>;
+	assigned-clock-rates = <3932160000>,
+			       <3612672000>, <393216000>,
+			       <361267200>, <12288000>;
+	fsl,sai-mclk-direction-output;
+	status = "okay";
+};
+
 &usdhc1 {
 	pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
 	pinctrl-0 = <&pinctrl_usdhc1>;
@@ -159,12 +336,31 @@  &wdog3 {
 };
 
 &scmi_iomuxc {
+	pinctrl_hp: hpgrp {
+		fsl,pins = <
+			IMX95_PAD_GPIO_IO11__GPIO2_IO_BIT11		0x31e
+		>;
+	};
+
+	pinctrl_i2c4_pcal6408: i2c4pcal6498grp {
+		fsl,pins = <
+			IMX95_PAD_GPIO_IO18__GPIO2_IO_BIT18			0x31e
+		>;
+	};
+
 	pinctrl_i2c7_pcal6524: i2c7pcal6524grp {
 		fsl,pins = <
 			IMX95_PAD_GPIO_IO36__GPIO5_IO_BIT16			0x31e
 		>;
 	};
 
+	pinctrl_lpi2c4: lpi2c4grp {
+		fsl,pins = <
+			IMX95_PAD_GPIO_IO30__LPI2C4_SDA			0x40000b9e
+			IMX95_PAD_GPIO_IO31__LPI2C4_SCL			0x40000b9e
+		>;
+	};
+
 	pinctrl_lpi2c7: lpi2c7grp {
 		fsl,pins = <
 			IMX95_PAD_GPIO_IO08__LPI2C7_SDA			0x40000b9e
@@ -184,6 +380,48 @@  IMX95_PAD_GPIO_IO35__HSIOMIX_TOP_PCIE2_CLKREQ_B		0x4000031e
 		>;
 	};
 
+	pinctrl_pdm: pdmgrp {
+		fsl,pins = <
+			IMX95_PAD_PDM_CLK__AONMIX_TOP_PDM_CLK				0x31e
+			IMX95_PAD_PDM_BIT_STREAM0__AONMIX_TOP_PDM_BIT_STREAM_BIT0	0x31e
+		>;
+	};
+
+	pinctrl_sai1: sai1grp {
+		fsl,pins = <
+			IMX95_PAD_SAI1_RXD0__AONMIX_TOP_SAI1_RX_DATA_BIT0    0x31e
+			IMX95_PAD_SAI1_TXC__AONMIX_TOP_SAI1_TX_BCLK      0x31e
+			IMX95_PAD_SAI1_TXFS__AONMIX_TOP_SAI1_TX_SYNC     0x31e
+			IMX95_PAD_SAI1_TXD0__AONMIX_TOP_SAI1_TX_DATA_BIT0    0x31e
+		>;
+	};
+
+	pinctrl_sai2: sai2grp {
+		fsl,pins = <
+			IMX95_PAD_ENET2_MDIO__NETCMIX_TOP_SAI2_RX_BCLK			0x31e
+			IMX95_PAD_ENET2_MDC__NETCMIX_TOP_SAI2_RX_SYNC			0x31e
+			IMX95_PAD_ENET2_TD3__NETCMIX_TOP_SAI2_RX_DATA_BIT0		0x31e
+			IMX95_PAD_ENET2_TD2__NETCMIX_TOP_SAI2_RX_DATA_BIT1		0x31e
+			IMX95_PAD_ENET2_TXC__NETCMIX_TOP_SAI2_TX_BCLK			0x31e
+			IMX95_PAD_ENET2_TX_CTL__NETCMIX_TOP_SAI2_TX_SYNC		0x31e
+			IMX95_PAD_ENET2_RX_CTL__NETCMIX_TOP_SAI2_TX_DATA_BIT0		0x31e
+			IMX95_PAD_ENET2_RXC__NETCMIX_TOP_SAI2_TX_DATA_BIT1		0x31e
+			IMX95_PAD_ENET2_RD0__NETCMIX_TOP_SAI2_TX_DATA_BIT2		0x31e
+			IMX95_PAD_ENET2_RD1__NETCMIX_TOP_SAI2_TX_DATA_BIT3		0x31e
+			IMX95_PAD_ENET2_RD2__NETCMIX_TOP_SAI2_MCLK			0x31e
+		>;
+	};
+
+	pinctrl_sai3: sai3grp {
+		fsl,pins = <
+			IMX95_PAD_GPIO_IO17__SAI3_MCLK				0x31e
+			IMX95_PAD_GPIO_IO16__SAI3_TX_BCLK			0x31e
+			IMX95_PAD_GPIO_IO26__SAI3_TX_SYNC			0x31e
+			IMX95_PAD_GPIO_IO20__SAI3_RX_DATA_BIT0			0x31e
+			IMX95_PAD_GPIO_IO21__SAI3_TX_DATA_BIT0			0x31e
+		>;
+	};
+
 	pinctrl_uart1: uart1grp {
 		fsl,pins = <
 			IMX95_PAD_UART1_RXD__AONMIX_TOP_LPUART1_RX      0x31e