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>;
};
kss
November 16, 2018, 12:45pm
4
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 = <®_2p5v>;
VDDIO-supply = <®_3p3v>;
VDDD-supply =<®_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 = <®_2p5v>;
VDDIO-supply = <®_3p3v>;
status = "okay";
};