Good afternoon, dear NXP! I kust received my i.MX6ullevk-14x14 board. I compiled the final 6.1.65 LTS kernel from Linus GIT with the options:
```
make imx_v6_v7_defconfig
make -j32
```
Everything is OK, but Audio codec is not working and I cannot understand why (7.09 sec):
```
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 6.1.65 (at@PCAT) (arm-none-linux-gnueabihf-gcc (Arm GNU Toolchain 13.2.rel1 (Build arm-13.7)) 13.2.1 20231009, GNU ld (Arm GNU Toolchain 13.2.rel1 (Build arm-13.7)) 2.41.0.20231009) #2 SMP Sun Dec 10 17:44:02 MSK 2023
[ 0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
[ 0.000000] CPU: div instructions available: patching division code
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] OF: fdt: Machine model: Freescale i.MX6 UltraLiteLite 14x14 EVK Board
[ 0.000000] Memory policy: Data cache writealloc
[ 0.000000] Zone ranges:
[ 0.000000] Normal [mem 0x0000000080000000-0x000000009fffffff]
[ 0.000000] HighMem empty
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000080000000-0x000000009fffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x000000009fffffff]
[ 0.000000] percpu: Embedded 17 pages/cpu s38004 r8192 d23436 u69632
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 130048
[ 0.000000] Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw
[ 0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
[ 0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off
[ 0.000000] Memory: 490388K/524288K available (14336K kernel code, 2050K rwdata, 4240K rodata, 1024K init, 6653K bss, 33900K reserved, 0K cma-reserved, 0K highmem)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] trace event string verifier disabled
[ 0.000000] Running RCU self tests
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] rcu: RCU event tracing is enabled.
[ 0.000000] rcu: RCU lockdep checking is enabled.
[ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=1.
[ 0.000000] Tracing variant of Tasks RCU enabled.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[ 0.000000] Switching to timer-based delay loop, resolution 41ns
[ 0.000003] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
[ 0.000057] clocksource: mxc_timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[ 0.004948] Console: colour dummy device 80x30
[ 0.005142] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
[ 0.005173] ... MAX_LOCKDEP_SUBCLASSES: 8
[ 0.005203] ... MAX_LOCK_DEPTH: 48
[ 0.005226] ... MAX_LOCKDEP_KEYS: 8192
[ 0.005251] ... CLASSHASH_SIZE: 4096
[ 0.005275] ... MAX_LOCKDEP_ENTRIES: 32768
[ 0.005298] ... MAX_LOCKDEP_CHAINS: 65536
[ 0.005321] ... CHAINHASH_SIZE: 32768
[ 0.005344] memory used by lock dependency info: 4061 kB
[ 0.005368] memory used for stack traces: 2112 kB
[ 0.005391] per task-struct memory footprint: 1536 bytes
[ 0.005612] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=240000)
[ 0.005692] CPU: Testing write buffer coherency: ok
[ 0.006158] pid_max: default: 32768 minimum: 301
[ 0.007655] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.007733] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.021111] CPU0: update cpu_capacity 1024
[ 0.021174] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[ 0.029652] cblist_init_generic: Setting adjustable number of callback queues.
[ 0.029705] cblist_init_generic: Setting shift to 0 and lim to 1.
[ 0.030744] Running RCU-tasks wait API self tests
[ 0.031518] Setting up static identity map for 0x80100000 - 0x80100078
[ 0.033361] Callback from call_rcu_tasks_trace() invoked.
[ 0.034052] rcu: Hierarchical SRCU implementation.
[ 0.034086] rcu: Max phase no-delay instances is 1000.
[ 0.039529] smp: Bringing up secondary CPUs ...
[ 0.039573] smp: Brought up 1 node, 1 CPU
[ 0.039615] SMP: Total of 1 processors activated (48.00 BogoMIPS).
[ 0.039653] CPU: All CPU(s) started in SVC mode.
[ 0.046546] devtmpfs: initialized
[ 0.116931] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5
[ 0.122360] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.122536] futex hash table entries: 256 (order: 2, 16384 bytes, linear)
[ 0.123902] pinctrl core: initialized pinctrl subsystem
[ 0.134773] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[ 0.137685] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.150834] cpuidle: using governor menu
[ 0.151393] CPU identified as i.MX6ULL, silicon rev 1.0
[ 0.186546] platform soc: Fixed dependency cycle(s) with /soc/bus@2000000/gpc@20dc000
[ 0.312960] platform panel: Fixed dependency cycle(s) with /soc/bus@2100000/lcdif@21c8000/port/endpoint
[ 0.319703] No ATAGs?
[ 0.320462] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
[ 0.320576] hw-breakpoint: maximum watchpoint size is 8 bytes.
[ 0.339618] imx6ul-pinctrl 20e0000.pinctrl: initialized IMX pinctrl driver
[ 0.359168] imx6ul-pinctrl 2290000.iomuxc-snvs: no groups defined in /soc/bus@2200000/iomuxc-snvs@2290000
[ 0.359326] imx6ul-pinctrl 2290000.iomuxc-snvs: initialized IMX pinctrl driver
[ 0.467569] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[ 0.684552] SCSI subsystem initialized
[ 0.689443] usbcore: registered new interface driver usbfs
[ 0.690095] usbcore: registered new interface driver hub
[ 0.690469] usbcore: registered new device driver usb
[ 0.703137] mc: Linux media interface: v0.10
[ 0.703734] videodev: Linux video capture interface: v2.00
[ 0.704839] pps_core: LinuxPPS API ver. 1 registered
[ 0.704883] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 0.705043] PTP clock support registered
[ 0.709472] Advanced Linux Sound Architecture Driver Initialized.
[ 0.751774] Bluetooth: Core ver 2.22
[ 0.752178] NET: Registered PF_BLUETOOTH protocol family
[ 0.752400] Bluetooth: HCI device and connection manager initialized
[ 0.752755] Bluetooth: HCI socket layer initialized
[ 0.752837] Bluetooth: L2CAP socket layer initialized
[ 0.753243] Bluetooth: SCO socket layer initialized
[ 0.759820] vgaarb: loaded
[ 0.764781] clocksource: Switched to clocksource mxc_timer1
[ 0.772269] VFS: Disk quotas dquot_6.6.0
[ 0.772680] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[ 0.925860] NET: Registered PF_INET protocol family
[ 0.927888] IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear)
[ 0.956230] tcp_listen_portaddr_hash hash table entries: 256 (order: 1, 10240 bytes, linear)
[ 0.956404] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[ 0.956500] TCP established hash table entries: 4096 (order: 2, 16384 bytes, linear)
[ 0.956932] TCP bind hash table entries: 4096 (order: 6, 327680 bytes, linear)
[ 0.959817] TCP: Hash tables configured (established 4096 bind 4096)
[ 0.960805] UDP hash table entries: 256 (order: 2, 24576 bytes, linear)
[ 0.961175] UDP-Lite hash table entries: 256 (order: 2, 24576 bytes, linear)
[ 0.962477] NET: Registered PF_UNIX/PF_LOCAL protocol family
[ 0.969278] RPC: Registered named UNIX socket transport module.
[ 0.969412] RPC: Registered udp transport module.
[ 0.969447] RPC: Registered tcp transport module.
[ 0.969480] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 0.974007] PCI: CLS 0 bytes, default 64
[ 0.986130] hw perfevents: enabled with armv7_cortex_a7 PMU driver, 5 counters available
[ 1.022934] Initialise system trusted keyrings
[ 1.025982] workingset: timestamp_bits=30 max_order=17 bucket_order=0
[ 1.177200] NFS: Registering the id_resolver key type
[ 1.177617] Key type id_resolver registered
[ 1.177741] Key type id_legacy registered
[ 1.178655] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[ 1.178906] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
[ 1.179374] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
[ 1.183128] fuse: init (API version 7.37)
[ 1.702889] Key type asymmetric registered
[ 1.703236] Asymmetric key parser 'x509' registered
[ 1.704994] io scheduler mq-deadline registered
[ 1.705064] io scheduler kyber registered
[ 1.785317] mxs-dma 1804000.dma-apbh: initialized
[ 1.833293] 2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 197, base_baud = 5000000) is a IMX
[ 3.497358] printk: console [ttymxc0] enabled
[ 3.513092] 21e8000.serial: ttymxc1 at MMIO 0x21e8000 (irq = 198, base_baud = 5000000) is a IMX
[ 3.628162] imx_rngc 2284000.rng: Freescale RNGB registered (HW revision 2.129)
[ 3.637304] random: crng init done
[ 3.848069] brd: module loaded
[ 3.973508] loop: module loaded
[ 4.063069] spi-nor spi4.0: n25q256a (32768 Kbytes)
[ 4.160343] gpio-505 (eth0-phy): hogged as output/high
[ 4.166309] gpio-506 (eth1-phy): hogged as output/high
[ 4.239387] usbcore: registered new interface driver usb-storage
[ 4.292752] input: 20cc000.snvs:snvs-powerkey as /devices/platform/soc/2000000.bus/20cc000.snvs/20cc000.snvs:snvs-powerkey/input/input0
[ 4.351340] snvs_rtc 20cc000.snvs:snvs-rtc-lp: registered as rtc0
[ 4.400160] snvs_rtc 20cc000.snvs:snvs-rtc-lp: setting system clock to 1970-01-01T00:00:00 UTC (0)
[ 4.433101] Bluetooth: HCI UART driver ver 2.3
[ 4.437875] Bluetooth: HCI UART protocol H4 registered
[ 4.465710] Bluetooth: HCI UART protocol LL registered
[ 4.478192] sdhci: Secure Digital Host Controller Interface driver
[ 4.484458] sdhci: Copyright(c) Pierre Ossman
[ 4.489084] sdhci-pltfm: SDHCI platform and OF driver helper
[ 4.599432] usbcore: registered new interface driver usbhid
[ 4.605312] usbhid: USB HID core driver
[ 4.654928] mmc1: SDHCI controller on 2194000.mmc [2194000.mmc] using ADMA
[ 4.740671] NET: Registered PF_INET6 protocol family
[ 4.746271] mmc1: host does not support reading read-only switch, assuming write-enable
[ 4.795248] mmc1: new high speed SDHC card at address 0001
[ 4.810973] Segment Routing with IPv6
[ 4.819497] mmcblk1: mmc1:0001 SD8GB 7.24 GiB
[ 4.825158] In-situ OAM (IOAM) with IPv6
[ 4.829548] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[ 4.857437] NET: Registered PF_PACKET protocol family
[ 4.863100] Key type dns_resolver registered
[ 4.914105] Registering SWP/SWPB emulation handler
[ 4.919460] mmcblk1: p1 p2
[ 4.933409] Loading compiled-in X.509 certificates
[ 5.771024] imx_usb 2184000.usb: No over current polarity defined
[ 5.822578] imx_usb 2184000.usb: No over current polarity defined
[ 5.872906] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 5.922844] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[ 5.950715] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[ 5.960194] platform regulatory.0: Falling back to sysfs fallback for: regulatory.db
[ 7.094334] ALSA device list:
[ 7.103234] No soundcards found.
[ 7.455952] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Quota mode: none.
[ 7.465945] VFS: Mounted root (ext4 filesystem) on device 179:2.
[ 7.477297] devtmpfs: mounted
[ 7.485615] Freeing unused kernel image (initmem) memory: 1024K
[ 7.493249] Run /sbin/init as init process
[ 7.901826] EXT4-fs (mmcblk1p2): re-mounted. Quota mode: none.
[ 7.999718] tmpfs: Unknown parameter 'mode'
mount: mounting tmpfs on /dev/shm[ 8.012003] tmpfs: Unknown parameter 'mode'
failed: Invalid argument
mount: mounting tmpfs on /tmp f[ 8.019840] tmpfs: Unknown parameter 'mode'
ailed: Invalid argument
mount: mounting tmpfs on /run failed: Invalid argument
Seeding 256 bits and crediting
Saving 256 bits of creditable seed for next boot
Starting syslogd: OK
Starting klogd: OK
Running sysctl: OK
Starting network: ifup: interface lo already configured
OK
Starting mpd: OK
Welcome to Buildroot
buildroot login: [ 16.532440] pps pps0: new PPS source ptp0
[ 16.628182] fec 20b4000.ethernet eth0: registered PHC device 0
[ 16.648104] pps pps1: new PPS source ptp1
[ 17.529633] fec 2188000.ethernet eth1: registered PHC device 1
[ 17.540744] imx_usb 2184000.usb: No over current polarity defined
[ 17.595180] ci_hdrc ci_hdrc.1: EHCI Host Controller
[ 17.601645] ci_hdrc ci_hdrc.1: new USB bus registered, assigned bus number 1
[ 17.637831] ci_hdrc ci_hdrc.1: USB 2.0 started, EHCI 1.00
[ 17.650436] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.01
[ 17.659521] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 17.667045] usb usb1: Product: EHCI Host Controller
[ 17.672006] usb usb1: Manufacturer: Linux 6.1.65 ehci_hcd
[ 17.677618] usb usb1: SerialNumber: ci_hdrc.1
[ 17.700837] hub 1-0:1.0: USB hub found
[ 17.706542] hub 1-0:1.0: 1 port detected
[ 17.737539] platform 21c4000.csi: deferred probe pending
[ 17.751374] sdhci-esdhc-imx 2190000.mmc: Got CD GPIO
[ 17.811270] mmc0: SDHCI controller on 2190000.mmc [2190000.mmc] using ADMA
[ 69.620972] cfg80211: failed to load regulatory.db
```
Why could it be and how can I fix this? I need this CPU to be USB audio device (UAC 2.0) and I need to train this, but the only option I need is not working and I cannot understand why
I didn't altered something in the kernel or in the dts files.
I tried Arch Linux and buildroot - but everything is the same, it is kernel side problem.
GCC 13.2 - the latest GNU Cross Toolchain for arm a7.
Yeah, I discovered that Linux Kernel dropped supporting of the vintage audio codecs like Wolfson and the final stable kernel that supports it is 5.15.
Now ALSA is seeing codec but there is no sound in the headphones and I cannot understand how to make some noise.
I tried aplay with wav, tried speaker-test, tried mpd with mcp and there is no sound from in the headphones. Could you tell me how can I get some noise on the headphones out from the imx6ullevk?
How I see in i.MX Linux Reference Manual - there is no option in the final 6.1 kernel from kernel.org from the part 7.1.4.6 Menu Configuration Options
-> 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 wm8962 (or wm8958,
wm8960)
Unfortunately there is no such an option. Maybe I should use another kernel version special for i.MX6ull? If this, where can I find this?