Hi NXP support,
I faced the problem about ALSA sound card detection issue. The reference yocto BSP is imx-yocto-L5.15.32-2.0.0. My board uses iMX6dp and sgtl5000 audio codec.
When I set CONFIG_IMX_SDMA=m or do not set CONFIG_IMX_SDMA the Linux kernel detected sgtl5000 codec, but ALSA device list complained "No soundcards found.". If I make CONFIG_IMX_SDMA=y the sgtl5000 codec is detected, and "ALSA device list" shows "#0: sgtl5000-audio".
On old Yocto BSP version, we set CONFIG_IMX_SDMA=m, and ALSA sound card was detected. I prefer to make CONFIG_IMX_SDMA=m, because we need iMX6 SDMA for the RS-485 communication.
Thanks for the help.
Jerry
The following is the portion of kernel boot messages for your reference.
1. CONFIG_IMX_SDMA=m
...
[ 2.143352] mxc_vpu 2040000.vpu_fsl: VPU initialized
[ 2.151141] sgtl5000 0-000a: sgtl5000 revision 0x11
[ 2.180601] random: fast init done
...
[ 2.535362] fsl-ssi-dai 2028000.ssi: Unbalanced pm_runtime_enable!
[ 2.542383] ALSA device list:
[ 2.545397] No soundcards found.
[ 2.582753] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null). Quota mode: disabled.
[ 2.592948] VFS: Mounted root (ext4 filesystem) on device 179:2.
[ 2.602724] devtmpfs: mounted
...
2. CONFIG_IMX_SDMA=y
...
[ 2.181997] mxc_vpu 2040000.vpu_fsl: VPU initialized
[ 2.189832] sgtl5000 0-000a: sgtl5000 revision 0x11
[ 2.219494] random: fast init done
...
[ 2.555106] hub 2-0:1.0: 1 port detected
[ 2.561200] imx_thermal 20c8000.anatop:tempmon: Industrial CPU temperature grade - max:105C critical:100C passive:95C
[ 2.573154] ALSA device list:
[ 2.576133] #0: sgtl5000-audio
[ 2.608892] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null). Quota mode: disabled.
[ 2.619079] VFS: Mounted root (ext4 filesystem) on device 179:2.
[ 2.628700] devtmpfs: mounted
...
When I set CONFIG_IMX_SDMA as "y" Linux kernel failed to load SDMA firmware. You can see it from the following boot messages.
...
[ 0.292756] mxc_sdc_fb fb@0: registered mxc display driver ldb
[ 0.391028] Console: switching to colour frame buffer device 100x30
[ 0.431837] imx-sdma 20ec000.sdma: Direct firmware load for imx/sdma/sdma-imx6q.bin failed with e2
[ 0.431860] imx-sdma 20ec000.sdma: Falling back to sysfs fallback for: imx/sdma/sdma-imx6q.bin
[ 0.433512] mxs-dma 110000.dma-apbh: initialized
[ 0.438043] 2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 30, base_baud = 5000000) is a IMX
[ 1.397003] printk: console [ttymxc0] enabled
...
My understanding is that the SDMA firmware (sdma-imx6q.bin) is not the part of Linux kernel image. It's why we need to set CONFIG_IMX_SDMA as "m" (kernel module)