Audio failed with " fsl-ssi-dai 2028000.ssi: ASoC: can't open platform 2028000.ssi: -6"

On starting the system the audio driver loads well

[    2.264736] sgtl5000 0-000a: sgtl5000 revision 0x11
[    2.282082] random: fast init done
[    2.306613] fsl-ssi-dai 2028000.ssi: No cache defaults, reading back from HW
[    2.330644] imx-sgtl5000 sound: sgtl5000 <-> 2028000.ssi mapping ok

and creates and Alsa audio device

[    2.568533] ALSA device list:
[    2.573656]   #0: imx6dl-colibri-sgtl5000

On accessing the audio device via Qt applications the following error occurs

 fsl-ssi-dai 2028000.ssi: ASoC: can't open platform 2028000.ssi: -6

I use standard device tree with egalax touch and deactivated hdmi audio

Dear @eschall

For me the audio actually works as expected, with Boot2qt Version 2.7.3 on the Colibri iMX6DL with the Colibri Evaluation Board. I started the Qt Media Player Demo and launched a video. What did you do or how can I reproduce the error?

Where did you take the device tree from and which changes did you apply? Could you provide a git diff of your changes and/or the device tree files? And what is the purpose of your changes?

Best regards
Diego

On behalf of @eschall because there are some issues with the login:

Hi @diego_b.tx,
I downloaded Yocto 2.7.3 from the Qt git archive to build the root file system.
I downloaded Kernel 4.14.159 from the Toradex git archiv and built a new kernel and device tree with the defconfig files of the board. I modified the device tree to integrate the Egalax touch and deactivate HDMI audio as we use no HDMI.
We use a board based on the Viola design. With kernel 3.14 and Angström V2.6.1 everything works fine.
Device tree files in the attachment.

Best regards
Eric

Hi @eschall

I tested your devicetree files from the branch toradex_4.14-2.3.x-imx with Bsp 3.0.4 and it works fine.

Could you provide your kernel config ( zcat /proc/config.gz )?

Thanks and best regards,
Jaski

On behalf of @eschall because there are still some issues with the login:

Hi @jaski.tx
Please see the attached kernel config you asked for.

Best regards
Eric

Dear @eschall

I went through the whole building again with your device tree files, your kernel-configuration and the changes I described above and I am able to play sounds actually. By the way I tested it with Colibri iMX6DL with an Iris carrier board. And to test if audio is working, I quickly installed alsa-utils-aplay with opkg install http://feeds.toradex.com/angstrom/feeds/v2017.12/ipk/glibc/armv7at2hf-neon/base/alsa-utils-aplay_1.1.4-r0.0_armv7at2hf-neon.ipk and executed aplay <my-wav-file> on the target. Could you maybe check again, if you missed something? I also noted all steps I did, you may want to follow them. And I attached the kernel I built which is working fine for me, you may also want to check this.

  • Make sure you open a console and setup the environment properly, to be able to compile the kernel. Check https://developer.toradex.com/knowledge-base/build-u-boot-and-linux-kernel-from-source-code#Toolchain
  • git clone git://git.toradex.com/linux-toradex.git -b toradex_4.14-2.0.x-imx
  • delete imx6dl-colibri-eval-v3.dts, imx6dl.dtsi and imx6qdl-colibri.dtsi in arch/arm/boot/dts/ and replace them with your device tree files
  • Copy your kernel configuration to the root directory of the linux-toradex repository
  • Run make nconfig to change the current kernel configuration
  • Disable “SoC Audio support for i.MX boards with HDMI port” at following location: Device Drivers → Sound card support → Advanced Linux Sound Architecture → ALSA for SoC audio support → SoC Audio for Freescale CPUs
  • I also had to disable the custom Linux boot logo (I guess you created a custom logo). Instead, I selected “Standard black and white Linux logo” at following location: Device Drivers → Graphics support → Bootup logo
  • Exit and save with F9
  • Build the kernel with make -j4
  • Build the kernel modules with make -j4 modules
  • Make a zip of the kernel modules with following commands:

.

mkdir modules
export INSTALL_MOD_PATH=modules
make modules_install
cd modules
tar -czf ../modules.tar.gz .
cd ..
  • Build device tree with make imx6dl-colibri-eval-v3.dtb
  • Install Qt for Device Creation Demo Image from Toradex Easy Installer (Current version with Qt 5.14.2)
  • Now reboot the Colibri iMX6, stop in u-boot and execute ums 0 mmc 0 to mount it to your computer.
  • Open the detected mass-storage BOOT and replace zImage and imx6dl-colibri-eval-v3.dtb with the newly built kernel and devicetree-blob
  • Eject the mass-storage on the computer, stop the u-boot command and reboot the Colibri iMX6
  • Copy the modules.tar.gz to the Colibri iMX6 and execute tar -xzf modules.tar.gz -C / on the Colibri iMX6
  • Reboot the module

(Mounting the Colibri BOOT partition as mass-storage and replacing the kernel and the devicetree-blob is useful for fast testing, but as soon as it is working I would recommend to build a proper image with the correct kernel configuration using Yocto Project instead).

Best regards
Diego

Hi @diego_b.tx ,

we tested on eval board, it works. The missing modules caused the issues.

Thanks for your help
Eric

Hi @eschall

First of all, let me clarify for everyone that the current Boot2Qt (built with zeus) uses the branch toradex_4.14-2.0.x-imx with kernel-version 4.14.159. (FYI @jaski.tx)
Further I was able to reproduce your issue and I think I found the root-cause. As far as I can see you disabled all HDMI options in the device tree properly, but you didn’t disable anything related in your kernel config. Therefore I disabled CONFIG_SND_SOC_IMX_HDMI in the kernel-config. You can find it here: Device Drivers → Sound card support → Advanced Linux Sound Architecture → ALSA for SoC audio support → SoC Audio for Freescale CPUs → SoC Audio support for i.MX boards with HDMI port.

After disabling that option and replacing the kernel (including kernel modules), I was able to play audio files.

Best regards
Diego

Hi @diego.tx

I disabled the according driver in the linux kernel but it has no effect.
To assure that the driver is diabled I enter “zcat /proc/config.gz |grep CONFIG_SND_SOC_IMX_HDMI”, it returns “CONFIG_SND_SOC_IMX_HDMI is not set”.
I disabled the SPIF driver too (in the device tree it has been disabled), same effect.

Best regards
Eric

Perfect that it works. Thanks for the feedback.