I2S output on Apalis i.MX6

I am trying to test I2S output on Apalis i.MX6 with Linux using snd-soc-dummy driver according to this page.
Also add configuration to device tree.

sound-dumy {
		compatible = "linux,snd-soc-dummy";
		model = "snd-soc-dummy";
		cpu-dai = <&ssi2>;
		mux-int-port = <2>;
		mux-ext-port = <5>;

	};

&ssi2 {
	fsl,mode = "i2s-slave";
	status = "okay";
};


pinctrl_audmux: audmuxgrp {
			fsl,pins = <
				MX6QDL_PAD_DISP0_DAT20__AUD4_TXC  0x130b0
				MX6QDL_PAD_DISP0_DAT21__AUD4_TXD  0x130b0
				MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS 0x130b0
				MX6QDL_PAD_DISP0_DAT23__AUD4_RXD  0x130b0
				/* I2S OUTPUT AUD5*/
				MX6QDL_PAD_DISP0_DAT19__AUD5_RXD  0x130b0
				MX6QDL_PAD_DISP0_DAT17__AUD5_TXD  0x130b0
				MX6QDL_PAD_DISP0_DAT18__AUD5_TXFS 0x130b0
				MX6QDL_PAD_DISP0_DAT16__AUD5_TXC  0x130b0
				/* I2S OUTPUT AUD5*/
			>;
		};

AUD5 pins are removed from pinctrl_ipu2_1 configuration.
After flashing device tree and uImage, this dummy sound device is not available

root@apalis-imx6:/proc/asound# cat cards 
 0 [imx6qapalissgtl]: imx6q-apalis-sg - imx6q-apalis-sgtl5000
                      imx6q-apalis-sgtl5000
 1 [imxspdif       ]: imx-spdif - imx-spdif
                      imx-spdif
 2 [imxhdmisoc     ]: imx-hdmi-soc - imx-hdmi-soc
                      imx-hdmi-soc

Did you also enable “Dummy soundcard” under Device Drivers → Sound Card support → Advanced Linux Architecture → Generic sound devices.?

root@apalis-imx6:~# cat /proc/asound/cards 
 0 [Dummy          ]: Dummy - Dummy
                      Dummy 1
 1 [imx6qapalissgtl]: imx6q-apalis-sg - imx6q-apalis-sgtl5000
                      imx6q-apalis-sgtl5000
 2 [imxspdif       ]: imx-spdif - imx-spdif
                      imx-spdif

You can check if the dummy soundcard is enabled in the kernel you are presently running with

root@apalis-imx6:~# zcat /proc/config.gz | grep -i "dummy"
# CONFIG_DUMMY_IRQ is not set
# CONFIG_DUMMY is not set
# CONFIG_DVB_DUMMY_FE is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_SND_DUMMY=y
# CONFIG_USB_DUMMY_HCD is not set
# CONFIG_IIO_SIMPLE_DUMMY is not set

Hi Sanchayan, I enable dummy soundcard in kernel, and add clock to dummy sound card in device tree. But there is still no output on MXM3_196 of Apalis i.MX6.

sound-dumy {
		compatible = "linux,snd-soc-dummy";
		model = "snd-soc-dummy";
		cpu-dai = <&ssi2>;
		clocks = <&clks IMX6QDL_CLK_SSI2>;
		mux-int-port = <2>;
		mux-ext-port = <5>;

	};

Hi @benjamin.tx,

Did you get any solution for this?
I am also facing this issue.

Thanks.

This is what I change in device tree imx6qdl-apalis.dtsi for external sgtl5000, the one on module itself is disabled.

	/*sound {
		compatible = "fsl,imx6q-apalis-sgtl5000",
			     "fsl,imx-audio-sgtl5000";
		model = "imx6q-apalis-sgtl5000";
		cpu-dai = <&ssi1>;
		audio-codec = <&codec>;
		audio-routing =
			"LINE_IN", "Line In Jack",
			"MIC_IN", "Mic Jack",
			"Mic Jack", "Mic Bias",
			"Headphone Jack", "HP_OUT";
		mux-int-port = <1>;
		mux-ext-port = <4>;
	};*/

	sound {
		compatible = "fsl,imx6q-apalis-sgtl5000",
			     "fsl,imx-audio-sgtl5000";
		model = "imx6q-external-sgtl5000";
		cpu-dai = <&ssi1>;
		audio-codec = <&codec_external>;
		audio-routing =
			"LINE_IN", "Line In Jack",
			"MIC_IN", "Mic Jack",
			"Mic Jack", "Mic Bias",
			"Headphone Jack", "HP_OUT";
		mux-int-port = <1>;
		mux-ext-port = <5>;  /*mux-ext-port = <5>;*/
	};


	/*
	codec: sgtl5000@0a {
		compatible = "fsl,sgtl5000";
		reg = <0x0a>;
		clocks = <&clks 201>;
		VDDA-supply = <&reg_2p5v>;
		VDDIO-supply = <&reg_3p3v>;
		VDDD-supply =<&reg_1p8v>;
	};
	*/

	/* pins used on module */
	imx6q-apalis {
		pinctrl_audmux: audmuxgrp {
			fsl,pins = <
				/*MX6QDL_PAD_DISP0_DAT20__AUD4_TXC  0x130b0
				MX6QDL_PAD_DISP0_DAT21__AUD4_TXD  0x130b0
				MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS 0x130b0
				MX6QDL_PAD_DISP0_DAT23__AUD4_RXD  0x130b0
				AUD4 for on-board sgtl 5000*/

				/*AUD5 for external sgtl5000*/
				MX6QDL_PAD_DISP0_DAT19__AUD5_RXD  0x130b0
				MX6QDL_PAD_DISP0_DAT18__AUD5_TXFS 0x130b0
				MX6QDL_PAD_DISP0_DAT16__AUD5_TXC  0x130b0
				MX6QDL_PAD_DISP0_DAT17__AUD5_TXD 0x130b0
				/*MX6QDL_PAD_EIM_D24__AUD5_RXFS		0x130b0
				MX6QDL_PAD_EIM_D25__AUD5_RXC		0x130b0*/
			>;
		};

		pinctrl_audmux_mclk: audmux_mclk {
			fsl,pins = <
				/*MX6QDL_PAD_GPIO_5__CCM_CLKO1		0x000b0		 SGTL5000 sys_mclk */
				MX6QDL_PAD_GPIO_19__CCM_CLKO1     0x000b0		/* external SGTL5000 sys_mclk   */
			>;
		};

another i2c node for external audio codec is added to i2c3 node at imx6qdl-apalis-eval.dtsi

	codec_external: sgtl5000@0a {
		compatible = "fsl,sgtl5000";
		reg = <0x0a>;
		clocks = <&clks 201>;
		VDDA-supply = <&reg_2p5v>;
		VDDIO-supply = <&reg_3p3v>;
		status = "okay";
	};