Commit 04a0b7b8 authored by Marek Vasut's avatar Marek Vasut Committed by Shawn Guo
Browse files

arm64: dts: imx8mp: Enable SAI audio on MX8MP DHCOM PDK2 and PDK3



Add SAI I2S and audio bindings on MX8MP DHCOM PDK2 and PDK3.

The VDDA is supplied from on-carrier-board regulator, the VDDIO
is supplied from always-on on-SoM regulator. Except for different
I2C bus used to connect the codec, the implementation is virtually
identical on both carrier boards.

Align regulator-avdd name to regulator-3p3vdd on PDK3, since this
is the VDDA supply and it is the same on both carrier boards.

Signed-off-by: default avatarMarek Vasut <marex@denx.de>
Signed-off-by: default avatarShawn Guo <shawnguo@kernel.org>
parent 4d4ed48f
Loading
Loading
Loading
Loading
+54 −0
Original line number Diff line number Diff line
@@ -23,6 +23,12 @@ chosen {
		stdout-path = &uart1;
	};

	clk_ext_audio_codec: clock-codec {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <24000000>;
	};

	gpio-keys {
		compatible = "gpio-keys";

@@ -102,6 +108,43 @@ led-3 {
			pinctrl-names = "default";
		};
	};

	reg_3p3vdd: regulator-3p3vdd {	/* 3.3VDD */
		compatible = "regulator-fixed";
		regulator-always-on;
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-name = "3P3VDD";
	};

	sound {
		compatible = "simple-audio-card";
		simple-audio-card,name = "SGTL5000-Card";
		simple-audio-card,format = "i2s";
		simple-audio-card,bitclock-master = <&codec_dai>;
		simple-audio-card,frame-master = <&codec_dai>;
		simple-audio-card,widgets = "Headphone", "Headphone Jack";
		simple-audio-card,routing = "Headphone Jack", "HP_OUT";

		cpu_dai: simple-audio-card,cpu {
			sound-dai = <&sai3>;
		};

		codec_dai: simple-audio-card,codec {
			sound-dai = <&sgtl5000>;
		};
	};
};

&i2c5 {
	sgtl5000: codec@a {
		compatible = "fsl,sgtl5000";
		reg = <0x0a>;
		#sound-dai-cells = <0>;
		clocks = <&clk_ext_audio_codec>;
		VDDA-supply = <&reg_3p3vdd>;
		VDDIO-supply = <&reg_vdd_3p3v_awo>;
	};
};

&fec {	/* Second ethernet */
@@ -155,6 +198,17 @@ &pcie {
	status = "okay";
};

&sai3 {
	#sound-dai-cells = <0>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_sai3>;
	assigned-clocks = <&clk IMX8MP_CLK_SAI3>;
	assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
	assigned-clock-rates = <12288000>;
	fsl,sai-mclk-direction-output;
	status = "okay";
};

&usb3_1 {
	fsl,over-current-active-low;
};
+45 −2
Original line number Diff line number Diff line
@@ -23,6 +23,12 @@ chosen {
		stdout-path = &uart1;
	};

	clk_ext_audio_codec: clock-codec {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <24000000>;
	};

	clk_xtal25: clock-xtal25 {
		compatible = "fixed-clock";
		#clock-cells = <0>;
@@ -140,12 +146,30 @@ led-3 {
		};
	};

	reg_avdd: regulator-avdd {	/* AUDIO_VDD */
	reg_3p3vdd: regulator-3p3vdd {	/* 3.3VDD */
		compatible = "regulator-fixed";
		regulator-always-on;
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-name = "AUDIO_VDD";
		regulator-name = "3P3VDD";
	};

	sound {
		compatible = "simple-audio-card";
		simple-audio-card,name = "SGTL5000-Card";
		simple-audio-card,format = "i2s";
		simple-audio-card,bitclock-master = <&codec_dai>;
		simple-audio-card,frame-master = <&codec_dai>;
		simple-audio-card,widgets = "Headphone", "Headphone Jack";
		simple-audio-card,routing = "Headphone Jack", "HP_OUT";

		cpu_dai: simple-audio-card,cpu {
			sound-dai = <&sai3>;
		};

		codec_dai: simple-audio-card,codec {
			sound-dai = <&sgtl5000>;
		};
	};
};

@@ -161,6 +185,15 @@ i2cmuxed0: i2c@0 {
			#size-cells = <0>;
			reg = <0>;

			sgtl5000: codec@a {
				compatible = "fsl,sgtl5000";
				reg = <0x0a>;
				#sound-dai-cells = <0>;
				clocks = <&clk_ext_audio_codec>;
				VDDA-supply = <&reg_3p3vdd>;
				VDDIO-supply = <&reg_vdd_3p3v_awo>;
			};

			typec@3d {
				compatible = "nxp,ptn5150";
				reg = <0x3d>;
@@ -263,6 +296,16 @@ &pcie {
	status = "okay";
};

&sai3 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_sai3>;
	assigned-clocks = <&clk IMX8MP_CLK_SAI3>;
	assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
	assigned-clock-rates = <12288000>;
	fsl,sai-mclk-direction-output;
	status = "okay";
};

&usb_dwc3_0 {
	usb-role-switch;

+17 −0
Original line number Diff line number Diff line
@@ -49,6 +49,14 @@ reg_usdhc2_vmmc: regulator-usdhc2-vmmc {
		startup-delay-us = <100>;
		vin-supply = <&buck4>;
	};

	reg_vdd_3p3v_awo: regulator-vdd-3p3v-awo {	/* VDD_3V3_AWO */
		compatible = "regulator-fixed";
		regulator-always-on;
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-name = "VDD_3P3V_AWO";
	};
};

&A53_0 {
@@ -918,6 +926,15 @@ MX8MP_IOMUXC_SAI5_RXD0__GPIO3_IO21 0x141
		>;
	};

	pinctrl_sai3: dhcom-sai3-grp {
		fsl,pins = <
			MX8MP_IOMUXC_SAI3_TXFS__AUDIOMIX_SAI3_TX_SYNC	0xd6
			MX8MP_IOMUXC_SAI3_TXC__AUDIOMIX_SAI3_TX_BCLK	0xd6
			MX8MP_IOMUXC_SAI3_RXD__AUDIOMIX_SAI3_RX_DATA00	0xd6
			MX8MP_IOMUXC_SAI3_TXD__AUDIOMIX_SAI3_TX_DATA00	0xd6
		>;
	};

	pinctrl_touch: dhcom-touch-grp {
		fsl,pins = <
			/* #TOUCH_INT */