Commit 73214bc9 authored by João Paulo Gonçalves's avatar João Paulo Gonçalves Committed by Shawn Guo
Browse files

arm64: dts: imx8-apalis: Add audio support



Add audio support to Apalis-iMX8QM and its carrier boards. These includes:
* On SOM i2s sound card
* On SOM spdif sound card
* Enabling Audiomix and Asynchronous Sample Rate Converter

Signed-off-by: default avatarJoão Paulo Gonçalves <joao.goncalves@toradex.com>
Signed-off-by: default avatarFrancesco Dolcini <francesco.dolcini@toradex.com>
Signed-off-by: default avatarShawn Guo <shawnguo@kernel.org>
parent 54304f99
Loading
Loading
Loading
Loading
+21 −5
Original line number Diff line number Diff line
@@ -22,9 +22,13 @@ &adc1 {
	status = "okay";
};

/* TODO: Audio Mixer */
&amix {
	status = "okay";
};

/* TODO: Asynchronous Sample Rate Converter (ASRC) */
&asrc0 {
	status = "okay";
};

/* TODO: Display Controller */

@@ -104,13 +108,25 @@ &lsio_pwm3 {

/* TODO: Apalis BKL1_PWM */

/* TODO: Apalis DAP1 */
/* Apalis DAP1 */
&sai1 {
	status = "okay";
};

/* TODO: Apalis Analogue Audio */
&sai5 {
	status = "okay";
};

&sai5_lpcg {
	status = "okay";
};

/* TODO: Apalis SATA1 */

/* TODO: Apalis SPDIF1 */
/* Apalis SPDIF1 */
&spdif0 {
	status = "okay";
};

/* TODO: Apalis USBH2, Apalis USBH3 and on-module Wi-Fi via on-module HSIC Hub */

+21 −5
Original line number Diff line number Diff line
@@ -62,9 +62,13 @@ &adc1 {
	status = "okay";
};

/* TODO: Audio Mixer */
&amix {
	status = "okay";
};

/* TODO: Asynchronous Sample Rate Converter (ASRC) */
&asrc0 {
	status = "okay";
};

/* TODO: Display Controller */

@@ -191,13 +195,25 @@ &lsio_pwm3 {

/* TODO: Apalis BKL1_PWM */

/* TODO: Apalis DAP1 */
/* Apalis DAP1 */
&sai1 {
	status = "okay";
};

/* TODO: Apalis Analogue Audio */
&sai5 {
	status = "okay";
};

&sai5_lpcg {
	status = "okay";
};

/* TODO: Apalis SATA1 */

/* TODO: Apalis SPDIF1 */
/* Apalis SPDIF1 */
&spdif0 {
	status = "okay";
};

/* TODO: Apalis USBH2, Apalis USBH3 and on-module Wi-Fi via on-module HSIC Hub */

+21 −5
Original line number Diff line number Diff line
@@ -94,9 +94,13 @@ &adc1 {
	status = "okay";
};

/* TODO: Audio Mixer */
&amix {
	status = "okay";
};

/* TODO: Asynchronous Sample Rate Converter (ASRC) */
&asrc0 {
	status = "okay";
};

/* TODO: Display Controller */

@@ -240,13 +244,25 @@ &lsio_pwm3 {

/* TODO: Apalis BKL1_PWM */

/* TODO: Apalis DAP1 */
/* Apalis DAP1 */
&sai1 {
	status = "okay";
};

/* TODO: Apalis Analogue Audio */
&sai5 {
	status = "okay";
};

&sai5_lpcg {
	status = "okay";
};

/* TODO: Apalis SATA1 */

/* TODO: Apalis SPDIF1 */
/* Apalis SPDIF1 */
&spdif0 {
	status = "okay";
};

/* TODO: Apalis USBH2, Apalis USBH3 and on-module Wi-Fi via on-module HSIC Hub */

+74 −8
Original line number Diff line number Diff line
@@ -126,6 +126,13 @@ reg_usb_phy: regulator-usb-hsic1 {
		regulator-name = "usb-phy-dummy";
	};

	reg_vref_1v8: regulator-vref-1v8 {
		compatible = "regulator-fixed";
		regulator-name = "+V1.8";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
	};

	reserved-memory {
		#address-cells = <2>;
		#size-cells = <2>;
@@ -198,11 +205,32 @@ linux,cma {
		};
	};

	/* TODO: Apalis Analogue Audio */
	sound {
		compatible = "simple-audio-card";
		simple-audio-card,bitclock-master = <&dailink_master>;
		simple-audio-card,format = "i2s";
		simple-audio-card,frame-master = <&dailink_master>;
		simple-audio-card,name = "apalis-imx8qm";

		simple-audio-card,cpu {
			sound-dai = <&sai1>;
		};

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

	/* TODO: HDMI Audio */

	/* TODO: Apalis SPDIF1 */
	/* Apalis SPDIF1 */
	sound-spdif {
		compatible = "fsl,imx-audio-spdif";
		model = "imx-spdif";
		spdif-controller = <&spdif0>;
		spdif-in;
		spdif-out;
	};

	touchscreen: touchscreen {
		compatible = "toradex,vf50-touchscreen";
@@ -227,6 +255,10 @@ touchscreen: touchscreen {

};

&asrc0 {
	fsl,asrc-rate  = <48000>;
};

&adc0 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_adc0>;
@@ -334,8 +366,6 @@ &i2c1 {
	clock-frequency = <100000>;
	status = "okay";

	/* TODO: Audio Codec */

	/* USB3503A */
	usb-hub@8 {
		compatible = "smsc,usb3503a";
@@ -348,6 +378,24 @@ usb-hub@8 {
		refclk-frequency = <25000000>;
		reset-gpios = <&lsio_gpio1 2 GPIO_ACTIVE_LOW>;
	};
	
	/* On Module Audio Codec */
	sgtl5000: audio-codec@a {
		compatible = "fsl,sgtl5000";
		reg = <0x0a>;
		assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>,
				  <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>,
				  <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>,
				  <&mclkout0_lpcg IMX_LPCG_CLK_0>;
		assigned-clock-rates = <786432000>, <49152000>, <12288000>, <12288000>;
		clocks = <&mclkout0_lpcg IMX_LPCG_CLK_0>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_sgtl5000>;
		#sound-dai-cells = <0>;
		VDDA-supply = <&reg_module_3v3_avdd>;
		VDDD-supply = <&reg_vref_1v8>;
		VDDIO-supply = <&reg_module_3v3>;
	};
};

/* Apalis I2C1 */
@@ -729,13 +777,31 @@ &mu2_m0 {

/* TODO: Apalis BKL1_PWM */

/* TODO: Apalis DAP1 */

/* TODO: Analogue Audio */
/* Apalis DAP1 */
&sai1 {
	assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>,
			  <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>,
			  <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>,
			  <&sai1_lpcg IMX_LPCG_CLK_0>;
	assigned-clock-rates = <786432000>, <49152000>, <12288000>, <49152000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_sai1>;
	#sound-dai-cells = <0>;
	status = "okay";
};

/* TODO: Apalis SATA1 */

/* TODO: Apalis SPDIF1 */
/* Apalis SPDIF1 */
&spdif0 {
	assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>,
			  <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>,
			  <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>;
	assigned-clock-rates = <786432000>, <49152000>, <12288000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_spdif0>;
	status = "okay";
};

/* TODO: Thermal Zones */