Issue in Imx7d colibri for 6.1.154.* Sources

We are currently working on the i.MX7D Colibri 6.x.y sources and are encountering the following issues during system boot and audio validation:

  • We are observing boot-time errors, and only one codec is detected at a time when tested individually. When both codecs are enabled together, they are not detected simultaneously.

  • During GStreamer pipeline execution, we are not observing MCLK on the TLV320AIC3204 codec hardware pin. However, WCLK and BCLK are being generated and measured correctly on the CRO.
    ERROR:
    Starting Rule-based Manage…for Device Events and Files…

[ OK ] Finished Coldplug All udev Devices.

[ OK ] Mounted /var/volatile.

Starting Wait for udev To …plete Device Initialization…

Starting Load/Save Random Seed…

[ OK ] Reached target Local File Systems.

Starting Create Volatile Files and Directories…

[ OK ] Started Rule-based Manager for Device Events and Files.

[ OK ] Finished Load/Save Random Seed.

[ OK ] Finished Create Volatile Files and Directories.

Starting Network Time Synchronization…

Starting Record System Boot/Shutdown in UTMP…

[ OK ] Created slice Slice /system/systemd-backlight.

Starting Load/Save Screen …ness of backlight:backlight…

[ OK ] Finished Load/Save Screen …htness of backlight:backlight.

[ 9.113275] imx-sdma 30bd0000.dma-controller: loaded firmware 4.6

[ OK ] Found device /dev/ttymxc0.

[ OK ] Finished Record System Boot/Shutdown in UTMP.

[ 9.312604] fsl-sai 308c0000.sai: freq is :67500000

[ 9.406490] sound: card 0 registered: tlv320-primary

[ 9.447802] 8<— cut here —

[ 9.453514] Unable to handle kernel NULL pointer dereference at virtual address 0000000c

[ 9.464428] [0000000c] *pgd=00000000

[ 9.470638] Internal error: Oops: 5 [#1] SMP ARM

[ 9.477859] Modules linked in: imx_sdma fuse

[ 9.484562] CPU: 1 PID: 9 Comm: kworker/u4:0 Not tainted 6.1.154-6.8.4-devel+git.7b34dc04e4ff #1

[ 9.495835] Hardware name: Freescale i.MX7 Dual (Device Tree)

[ 9.504180] Workqueue: events_unbound deferred_probe_work_func

[ 9.512555] PC is at clk_hw_create_clk+0x6c/0x118

[ 9.519946] LR is at clk_hw_create_clk+0x54/0x118

[ 9.527229] pc : [] lr : [] psr: 80000013

[ 9.536104] sp : f0885cc8 ip : c2d733c0 fp : 00000000

[ 9.544386] r10: c13112c8 r9 : 00000000 r8 : 00000000

[ 9.552423] r7 : c22c0c20 r6 : c0f5d398 r5 : c2382400 r4 : c2d73380

[ 9.561602] r3 : ffffffff r2 : 00000000 r1 : 00000cc0 r0 : c0f5d398

[ 9.570758] Flags: Nzcv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none

[ 9.580515] Control: 10c5387d Table: 832b006a DAC: 00000051

[ 9.588840] Register r0 information: non-slab/vmalloc memory

[ 9.597122] Register r1 information: non-paged memory

[ 9.604797] Register r2 information: NULL pointer

[ 9.612057] Register r3 information: non-paged memory

[ 9.619644] Register r4 information: slab kmalloc-64 start c2d73380 pointer offset 0 size 64

[ 9.630735] Register r5 information: slab kmalloc-64 start c2382400 pointer offset 0 size 64

[ 9.641772] Register r6 information: non-slab/vmalloc memory

[ 9.649976] Register r7 information: slab kmalloc-1k start c22c0c00 pointer offset 32 size 1024

[ 9.661296] Register r8 information: NULL pointer

[ 9.668563] Register r9 information: NULL pointer

[ 9.675795] Register r10 information: non-slab/vmalloc memory

[ 9.684022] Register r11 information: NULL pointer

[ 9.691227] Register r12 information: slab kmalloc-64 start c2d733c0 pointer offset 0 size 64

[ 9.702271] Process kworker/u4:0 (pid: 9, stack limit = 0x38328b03)

[ 9.711280] Stack: (0xf0885cc8 to 0xf0886000)

[ 9.718187] 5cc0: 00000001 00000004 c13112c0 c22c0c20 00000000 c05a6fb4

[ 9.729094] 5ce0: c32886c0 c279ae40 00000004 c13112c0 c22c0c20 c278c8a8 c278c878 c05a6868

[ 9.739810] 5d00: c0edb908 00000000 c278c840 c279ae40 c278c838 c2fe9440 c20dc600 c09829a0

[ 9.750775] 5d20: c0982984 c278c840 c278c838 c2fe9440 c20dc600 c0975e04 00000000 abd826fc

[ 9.761569] 5d40: 00000000 00000000 c278c840 c096ac9c 00000000 c2fe0840 00000000 abd826fc

[ 9.772303] 5d60: c2fe9584 00000001 c219561c c2195040 00000000 00000000 c2fe9500 c0f5a5f8

[ 9.782996] 5d80: c2fe9440 c096b2bc 00000000 c2fe947c ffffffff c0293478 ef7f4b98 00000002

[ 9.793665] 5da0: 00000044 c097c54c c2fe9484 c2fe9584 c098d940 c098df44 c098e1e0 c02645d4

[ 9.804545] 5dc0: c2fe9500 c098d940 c2137410 c3288440 c2e80040 c2fe9440 c2137410 c098d940

[ 9.815550] 5de0: c098df44 c098e1e0 c098d6e4 c097c55c c0f5becc c2e80040 c2fe9440 00000000

[ 9.826358] 5e00: c2e80040 c2fe9440 c2137410 c098ddc0 c098db74 00000000 c2137410 c1313d04

[ 9.837380] 5e20: 00000000 c13244c8 c20dc600 c2008005 00000080 c06933b0 00000000 c2137410

[ 9.848420] 5e40: c1313d04 00000000 c13244c8 c06907e0 00000000 00000013 c2137410 c1313d04

[ 9.859491] 5e60: c2137410 00000013 c0ef7054 c0690bac 60000013 c20dc600 c139c20c c1313d04

[ 9.870580] 5e80: c2137410 00000013 c0ef7054 c0690d34 00000001 c1313d04 f0885eec c2137410

[ 9.881440] 5ea0: c0ef7054 c06913fc 00000000 f0885eec c20dc600 c0691358 c0ef7054 c068e7f8

[ 9.892502] 5ec0: c2137454 c200fa6c c279e7b8 abd826fc 00000080 c2137410 00000001 c20dc600

[ 9.903507] 5ee0: c2137454 c0690ff8 00000001 c2137410 00000001 abd826fc 00000000 c2137410

[ 9.914623] 5f00: c2137410 c12f0fd8 c13244c8 c068f908 c2137410 c12f0d2c c12f0d40 c068fdf8

[ 9.925914] 5f20: c12f0d64 c2048700 c2006200 c2008000 00000000 c013e768 c2006200 c2006200

[ 9.936956] 5f40: c200621c c2048700 c2006200 c2048718 c200621c c1203d40 00000088 c20dc600

[ 9.948472] 5f60: c2006200 c013e9b0 00000000 c204e400 c20dc600 c013e974 c2048700 c204e940

[ 9.959609] 5f80: f0825e8c 00000000 00000000 c01468f0 c204e400 c0146828 00000000 00000000

[ 9.970668] 5fa0: 00000000 00000000 00000000 c010016c 00000000 00000000 00000000 00000000

[ 9.981964] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

[ 9.993043] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000

[ 10.004036] clk_hw_create_clk from __clk_bulk_get+0x60/0xec

[ 10.012506] __clk_bulk_get from devm_clk_bulk_get+0x48/0x94

[ 10.021298] devm_clk_bulk_get from aic32x4_component_probe+0x1c/0x184

[ 10.030719] aic32x4_component_probe from snd_soc_component_probe+0x20/0x6c

[ 10.040511] snd_soc_component_probe from soc_probe_component+0x1b4/0x36c

[ 10.050092] soc_probe_component from snd_soc_bind_card+0x468/0xd24

[ 10.059337] snd_soc_bind_card from devm_snd_soc_register_card+0x3c/0x84

[ 10.068827] devm_snd_soc_register_card from asoc_simple_probe+0x24c/0x3d0

[ 10.078492] asoc_simple_probe from platform_probe+0x58/0xbc

[ 10.087245] platform_probe from really_probe+0xd8/0x410

[ 10.095331] really_probe from __driver_probe_device+0x94/0x1f0

[ 10.103973] __driver_probe_device from driver_probe_device+0x2c/0xc4

[ 10.113530] driver_probe_device from __device_attach_driver+0xa4/0x11c

[ 10.122922] __device_attach_driver from bus_for_each_drv+0x7c/0xc0

[ 10.132226] bus_for_each_drv from __device_attach+0xa4/0x204

[ 10.140719] __device_attach from bus_probe_device+0x84/0x8c

[ 10.149301] bus_probe_device from deferred_probe_work_func+0x88/0xd0

[ 10.158656] deferred_probe_work_func from process_one_work+0x1dc/0x3e8

[ 10.168213] process_one_work from worker_thread+0x3c/0x538

[ 10.176469] worker_thread from kthread+0xc8/0xe8

[ 10.184060] kthread from ret_from_fork+0x14/0x28

[ 10.191463] Exception stack(0xf0885fb0 to 0xf0885ff8)

[ 10.199272] 5fa0: 00000000 00000000 00000000 00000000

[ 10.210296] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

[ 10.221340] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000

[ 10.230685] Code: e5843014 e584000c 8a000019 e5847004 (e598000c)

[ 10.239644] —[ end trace 0000000000000000 ]—

Starting Load Kernel Module efi_pstore…

[ OK ] Started Network Time Synchronization.

[ OK ] Finished Load Kernel Module efi_pstore.

[ OK ] Created slice Slice /system/systemd-fsck.

[ OK ] Reached target System Time Set.

[ OK ] Listening on Load/Save RF …itch Status /dev/rfkill Watch.

Starting Load Kernel Module efi_pstore…

Starting File System Check on /dev/mmcblk1…

[ OK ] Finished Load Kernel Module efi_pstore.

[ OK ] Finished File System Check on /dev/mmcblk1.

Mounting /media/mmcblk3-mmcblk1…

[ 12.839045] EXT4-fs (mmcblk1): mounted filesystem with ordered data mode. Quota mode: none.

[ OK ] Mounted /media/mmcblk3-mmcblk1.

[ OK ] Found device /dev/mmcblk2p1.

Starting File System Check on /dev/mmcblk2p1…

[ OK ] Finished File System Check on /dev/mmcblk2p1.

Mounting /media/BOOT-mmcblk2p1…

[ OK ] Mounted /media/BOOT-mmcblk2p1.

Mounting /boot…

[ OK ] Mounted /boot.

[FAILED] Failed to start Wait for u…omplete Device Initialization.

See ‘systemctl status systemd-udev-settle.service’ for details.

[ OK ] Started Hardware RNG Entropy Gatherer Daemon.

[ OK ] Reached target System Initialization.

[ OK ] Started Daily Cleanup of Temporary Directories.

[ OK ] Reached target Timer Units.

[ OK ] Listening on Avahi mDNS/DNS-SD Stack Activation Socket.

[ OK ] Listening on D-Bus System Message Bus Socket.

[ OK ] Listening on dropbear.socket.

[ OK ] Listening on GPS (Global P…ioning System) Daemon Sockets.

Starting Weston socket…

[ OK ] Listening on Weston socket.

[ OK ] Reached target Socket Units.

[ OK ] Reached target Basic System.

Starting Save/Restore Sound Card State…

[ OK ] Started Kernel Logging Service.

[ OK ] Started System Logging Service.

Starting D-Bus System Message Bus…

Starting IPv6 Packet Filtering Framework…

Starting IPv4 Packet Filtering Framework…

Starting Telephony service…

Starting User Login Management…

[ OK ] Started Timestamping service.

Starting Load default USB gadget schema g1.schema…

[ OK ] Started Watchdog toggle s…a in the background for Pecu..

[ OK ] Started 129.213303] using random self ethernet address

;39mD-Bus System Message Bus.

[ 129.221776] using random host ethernet address

[ OK ] Finished Save/Restore Sound Card State.

[ OK ] Finished IPv6 Packet Filtering Framework.

[ OK ] Finished IPv4 Packet Filtering Framework.

[ OK ] Started Telephony service.

[ OK ] Reached target Preparation for Network.

[ OK ] Reached target Sound Card.

Starting Connection service…

[ 129.631770] systemd-journald[191]: Data hash table of /run/log/journal/a17198777b4b4838bb88a410f8b9f282/system.journal has a fill level at 75.1 (2735 of 3640 items, 2097152 file size, 766 bytes per ha.

Starting Network Configuration…

[ 129.661626] systemd-journald[191]: /run/log/journal/a17198777b4b4838bb88a410f8b9f282/system.journal: Journal header limits reached or header out-of-date, rotating.

[ OK ] Started User Login Management.

[ OK ] Started Connection service.

Starting Avahi [ 129.831056] usb0: HOST MAC c2:15:c4:02:3f:98

mDNS/DNS-SD Stack…

[ 129.840753] usb0: MAC 1e:83:da:43:99:ac

[ OK ] Finished Load default USB gadget schema g1.schema.

[ 129.909215] Micrel KSZ8041 30be0000.ethernet-1:00: attached PHY driver (mii_bus:phy_addr=30be0000.ethernet-1:00, irq=POLL)

[ OK ] Started Avahi mDNS/DNS-SD Stack.

[ OK ] Reached target Hardware activated USB gadget.

[ 130.061435] Micrel KSZ8081 or KSZ8091 30bf0000.ethernet-2:03: attached PHY driver (mii_bus:phy_addr=30bf0000.ethernet-2:03, irq=POLL)

[ 130.090295] cfg80211: Loading compiled-in X.509 certificates for regulatory database

Starting Hostname Service…

[ 130.128584] cfg80211: Loaded X.509 cert ‘sforshee: 00b28ddf47aef9cea7’

Starting WPA

Hi, I’m the Toradex AI Assistant.

I might make mistakes or occasionally get you wrong. Our support team will step in if needed.


I’d be glad to help troubleshoot your i.MX7D Colibri audio issues! To provide the most accurate guidance, could you let me know:

  • Which exact version of the BSP are you running? (e.g., BSP 6.8.4, BSP 7.0.0)
  • Which carrier board are you using with the Colibri iMX7D?

This information is important because audio configuration varies significantly between BSP versions and carrier board implementations.

You can get this information by running the tdx-info command on your device. More details about this utility can be found at: Getting Device Information with Tdx-Info | Toradex Developer Center

Initial Analysis

Based on the kernel crash log you’ve shared, there appears to be a NULL pointer dereference in the clock framework (clk_hw_create_clk) during the TLV320AIC3204 codec probe. This suggests a clock configuration issue in your device tree or driver setup (1).

Common Audio Setup Requirements

For i.MX7D-based modules, the audio subsystem typically requires proper configuration of:

  • Hardware platforms: Colibri iMX7D, Colibri iMX7S
  • Audio interfaces: SAI (Synchronous Audio Interface)
  • Clock management: MCLK, BCLK, WCLK configuration
  • Device tree overlays: For external codec integration

Once you provide the specific BSP version and hardware details, I can give you targeted troubleshooting steps for your TLV320AIC3204 codec configuration and the MCLK generation issue you’re experiencing.

Best regards,
Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

root@colibri-imx7-emmc-mcp-14844037:~# tdx-info

Software summary

Bootloader: U-Boot
Kernel version: 6.1.154-6.8.4-devel+git.7b34dc04e4ff #1 SMP Mon May 11 09:28:47 UTC 2026
Kernel command line: root=PARTUUID=97072021-02 ro rootwait console=tty1 console=ttymxc0,115200n8 consoleblank=0 video=mxsfb:640x480M-16@60
Distro name: NAME=“TDX Wayland with XWayland Upstream”
Distro version: VERSION_ID=6.8.5-devel-20260330114452-build.0
Distro variant: -
Hostname: colibri-imx7-emmc-mcp-14844037

Hardware info

HW model: Toradex Colibri iMX7D 1GB (eMMC) on Colibri Evaluation Board V3
Toradex version: 0039 V1.1B
Serial number: 14844037
Processor arch: armv7l

Let me help you troubleshoot this i.MX7D Colibri audio issue. Based on your system information, you’re running BSP 6.8.4-devel with kernel 6.1.154 on a Colibri iMX7D 1GB with the Colibri Evaluation Board V3.

Analysis of the Kernel Crash

The NULL pointer dereference in clk_hw_create_clk during the TLV320AIC3204 codec probe indicates a clock configuration issue (1). The crash occurs specifically when the audio codec driver tries to acquire clocks, suggesting the clock references in your device tree may be incorrect or missing.

Recommended Troubleshooting Steps

1. Verify Kernel Configuration

Since you’re building from source, ensure your kernel configuration includes the necessary audio drivers (1). For i.MX7D, you need:

  • SAI (Synchronous Audio Interface) driver
  • TLV320AIC3204 codec driver
  • ALSA SoC framework

2. Check Device Tree Clock References

The crash suggests clock configuration issues. In your device tree overlay or custom device tree, verify that:

  • Clock references for the TLV320AIC3204 codec are properly defined
  • MCLK source is correctly configured
  • Clock domains and parents are properly set up

3. Build Process Verification

When building the kernel from source for i.MX7, you may encounter linking issues with the gold linker (1). Use the bfd linker instead:

$ make -j$(nproc) zImage LD=${CROSS_COMPILE}ld.bfd | tee build.log

(1)

4. Module Dependencies

Ensure you’re building and deploying kernel modules correctly (1). The kernel modules must match your custom kernel version exactly:

$ make -j$(nproc) modules
$ make modules_install INSTALL_MOD_PATH=modules

(1)

MCLK Generation Issue

The missing MCLK while BCLK and WCLK are present suggests:

  1. Clock tree configuration: The SAI module may not be properly configured to output MCLK
  2. Codec driver issue: The TLV320AIC3204 driver crash prevents proper MCLK setup
  3. Device tree pinmux: MCLK pin may not be properly configured in your device tree

Next Steps

  1. Fix the kernel crash first by addressing the clock configuration in your device tree
  2. Verify your custom device tree includes proper clock references for both codecs
  3. Check codec detection - the fact that only one codec is detected at a time suggests resource conflicts or improper device tree configuration

Since you mentioned this is a custom kernel build, you may want to compare your device tree configuration with the reference implementation and ensure all clock domains are properly defined for your dual-codec setup.

Best regards,
Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.