在内核中,添加AC108声卡的代码,并选中asoc simple sound card的驱动,编译都通过了。但是启动的时候无任何输出。只有最终内核启动结束时报platform sound: deferred probe pending。
附上设备树
sound {
compatible = "simple-audio-card";
#address-cells = <1>;
#size-cells = <0>;
simple-audio-card,format = "i2s";
simple-audio-card,name = "8CH_MIC";
state="okay";
simple-audio-card,cpu{
sound-dai = <&i2s1>;
};
simple-audio-card,codec {
sound-dai = <&ac108>;
};
};
&i2c1 {
pinctrl-0 = <&i2c1_pg8_pins>;
pinctrl-names = "default";
status = "okay";
ac108:
ac108@3b{
#sound-dai-cells = <0>;
compatible = "Allwinnertech,MicArray_0";
device_type ="MicArray_0";
reg = <0x3B>;
power_voltage = <3300000>;
regulator_name = "vcc-3v3";
power_gpio_used = <0x0>;
reset_gpio_used = <0x0>;
twi_bus = <0x1>;
pga_gain = <0x14>;
slot_width = <0x20>;
lrck_period = <0x100>;
ref_pga_used = <0x1>;
ref_pga_gain = <0x10>;
ref_channel = <0x3>;
debug_mode = <0x0>;
status ="okay";
};
ac108@35{
#sound-dai-cells = <0>;
compatible = "Allwinnertech,MicArray_1";
device_type ="MicArray_1";
reg = <0x35>;
power_voltage = <3300000>;
regulator_name = "vcc-3v3";
power_gpio_used = <0x0>;
reset_gpio_used = <0x0>;
twi_bus = <0x1>;
pga_gain = <0x14>;
slot_width = <0x20>;
lrck_period = <0x100>;
ref_pga_used = <0x1>;
ref_pga_gain = <0x10>;
ref_channel = <0x3>;
debug_mode = <0x0>;
status ="okay";
};
};
&i2s1 {
state="okay";
pinctrl-0 = <&i2s1_pg11_pins>,<&i2s1_din_pg14_pins>;
pinctrl-names = "default";
};
再附上启动log
[I] Allwinner T113 starting...
[W] SMHC: error 0x100 status 0x0
[W] SMHC: cmd timeout
[W] SMHC: error 0x100 status 0x0
[W] SMHC: cmd timeout
[I] SPI-NAND: W25N01GV detected
[I] SPI-NAND: read dt blob of size 24763 at 43.00MB/S
[I] SPI-NAND: read Image of size 5359640 at 49.00MB/S
[I] booting linux...
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 6.0.1-gd7d8c971c9c5-dirty (rtqq@DESKTOP-JHGQ7D4) (arm-linux-gnueabihf-gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0, GNU ld (GNU Binutils for Ubuntu) 2.30) #50 SMP Sat May 6 11:22:20 CST 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: MangoPi MQ-Dual
[ 0.000000] Memory policy: Data cache writealloc
[ 0.000000] cma: Reserved 16 MiB at 0x47000000
[ 0.000000] Zone ranges:
[ 0.000000] Normal [mem 0x0000000040000000-0x0000000047ffffff]
[ 0.000000] HighMem empty
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000040000000-0x0000000047ffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x0000000047ffffff]
[ 0.000000] percpu: Embedded 11 pages/cpu s15508 r8192 d21356 u45056
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 32512
[ 0.000000] Kernel command line: mem=128M ubi.mtd=3 rootfstype=ubifs root=ubi0:rootfs rw rootwait console=ttyS0,115200
[ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear)
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] Memory: 99792K/131072K available (8192K kernel code, 951K rwdata, 2196K rodata, 1024K init, 270K bss, 14896K reserved, 16384K cma-reserved, 0K highmem)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=2.
[ 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=2
[ 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] arch_timer: cp15 timer(s) running at 24.00MHz (phys).
[ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x588fe9dc0, max_idle_ns: 440795202592 ns
[ 0.000001] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns
[ 0.000012] Switching to timer-based delay loop, resolution 41ns
[ 0.000198] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[ 0.000706] Console: colour dummy device 80x30
[ 0.000749] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=240000)
[ 0.000764] pid_max: default: 32768 minimum: 301
[ 0.000926] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.000942] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.001488] CPU: Testing write buffer coherency: ok
[ 0.001797] /cpus/cpu@0 missing clock-frequency property
[ 0.001828] /cpus/cpu@1 missing clock-frequency property
[ 0.001838] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[ 0.002599] Setting up static identity map for 0x40100000 - 0x40100060
[ 0.002739] rcu: Hierarchical SRCU implementation.
[ 0.002745] rcu: Max phase no-delay instances is 1000.
[ 0.003279] smp: Bringing up secondary CPUs ...
[ 0.003968] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[ 0.004096] smp: Brought up 1 node, 2 CPUs
[ 0.004108] SMP: Total of 2 processors activated (96.00 BogoMIPS).
[ 0.004115] CPU: All CPU(s) started in SVC mode.
[ 0.004631] devtmpfs: initialized
[ 0.009008] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5
[ 0.009208] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.009234] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
[ 0.009837] pinctrl core: initialized pinctrl subsystem
[ 0.011206] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[ 0.012299] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.013136] thermal_sys: Registered thermal governor 'step_wise'
[ 0.013442] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
[ 0.013456] hw-breakpoint: maximum watchpoint size is 8 bytes.
[ 0.021646] platform 5460000.tcon-top: Fixing up cyclic dependency with 5200000.mixer
[ 0.021719] platform 5460000.tcon-top: Fixing up cyclic dependency with 5100000.mixer
[ 0.021981] platform 5461000.lcd-controller: Fixing up cyclic dependency with 5460000.tcon-top
[ 0.022357] platform 5470000.lcd-controller: Fixing up cyclic dependency with 5604000.tv-encoder
[ 0.022413] platform 5470000.lcd-controller: Fixing up cyclic dependency with 5460000.tcon-top
[ 0.023187] platform 7090000.rtc: Fixing up cyclic dependency with 7010000.clock-controller
[ 0.033708] SCSI subsystem initialized
[ 0.034213] usbcore: registered new interface driver usbfs
[ 0.034252] usbcore: registered new interface driver hub
[ 0.034288] usbcore: registered new device driver usb
[ 0.034496] mc: Linux media interface: v0.10
[ 0.034539] videodev: Linux video capture interface: v2.00
[ 0.034610] pps_core: LinuxPPS API ver. 1 registered
[ 0.034616] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 0.034638] PTP clock support registered
[ 0.035078] Advanced Linux Sound Architecture Driver Initialized.
[ 0.035992] clocksource: Switched to clocksource arch_sys_counter
[ 0.043278] NET: Registered PF_INET protocol family
[ 0.043475] IP idents hash table entries: 2048 (order: 2, 16384 bytes, linear)
[ 0.044017] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
[ 0.044047] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[ 0.044060] TCP established hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.044079] TCP bind hash table entries: 1024 (order: 1, 8192 bytes, linear)
[ 0.044099] TCP: Hash tables configured (established 1024 bind 1024)
[ 0.044187] UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
[ 0.044223] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
[ 0.044395] NET: Registered PF_UNIX/PF_LOCAL protocol family
[ 0.045097] RPC: Registered named UNIX socket transport module.
[ 0.045110] RPC: Registered udp transport module.
[ 0.045114] RPC: Registered tcp transport module.
[ 0.045118] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 0.046437] workingset: timestamp_bits=30 max_order=15 bucket_order=0
[ 0.051369] NFS: Registering the id_resolver key type
[ 0.051469] Key type id_resolver registered
[ 0.051475] Key type id_legacy registered
[ 0.051628] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
[ 0.051638] io scheduler mq-deadline registered
[ 0.051644] io scheduler kyber registered
[ 0.110014] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled
[ 0.120208] CAN device driver interface
[ 0.120958] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 0.120966] ehci-platform: EHCI generic platform driver
[ 0.121103] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 0.121120] ohci-platform: OHCI generic platform driver
[ 0.123587] sun6i-rtc 7090000.rtc: registered as rtc0
[ 0.123714] sun6i-rtc 7090000.rtc: setting system clock to 1970-01-02T00:00:36 UTC (86436)
[ 0.123839] sun6i-rtc 7090000.rtc: RTC enabled
[ 0.124182] i2c_dev: i2c /dev entries driver
[ 0.126071] sunxi-wdt 20500a0.watchdog: Watchdog enabled (timeout=16 sec, nowayout=0)
[ 0.127337] sun8i-ce 3040000.crypto: Set mod clock to 300000000 (300 Mhz) from 400000000 (400 Mhz)
[ 0.127671] sun8i-ce 3040000.crypto: will run requests pump with realtime priority
[ 0.128005] sun8i-ce 3040000.crypto: will run requests pump with realtime priority
[ 0.128230] sun8i-ce 3040000.crypto: will run requests pump with realtime priority
[ 0.128418] sun8i-ce 3040000.crypto: will run requests pump with realtime priority
[ 0.128556] sun8i-ce 3040000.crypto: Register cbc(aes)
[ 0.128584] sun8i-ce 3040000.crypto: Register ecb(aes)
[ 0.128594] sun8i-ce 3040000.crypto: Register cbc(des3_ede)
[ 0.128603] sun8i-ce 3040000.crypto: Register ecb(des3_ede)
[ 0.128633] sun8i-ce 3040000.crypto: CryptoEngine Die ID 0
[ 0.129527] usbcore: registered new interface driver usbhid
[ 0.129537] usbhid: USB HID core driver
[ 0.132540] NET: Registered PF_PACKET protocol family
[ 0.132571] can: controller area network core
[ 0.132645] NET: Registered PF_CAN protocol family
[ 0.132652] can: raw protocol
[ 0.132659] can: broadcast manager protocol
[ 0.132668] can: netlink gateway - max_hops=1
[ 0.132779] Key type dns_resolver registered
[ 0.132919] Registering SWP/SWPB emulation handler
[ 0.153478] sun20i-d1-pinctrl 2000000.pinctrl: initialized sunXi PIO driver
[ 0.154717] printk: console [ttyS0] disabled
[ 0.175051] 2500000.serial: ttyS0 at MMIO 0x2500000 (irq = 231, base_baud = 1500000) is a 16550A
[ 1.001471] printk: console [ttyS0] enabled
[ 1.027528] 2500c00.serial: ttyS3 at MMIO 0x2500c00 (irq = 232, base_baud = 1500000) is a 16550A
[ 1.038588] spi-nand spi0.0: Winbond SPI NAND was found.
[ 1.043919] spi-nand spi0.0: 128 MiB, block size: 128 KiB, page size: 2048, OOB size: 64
[ 1.052720] 4 fixed-partitions partitions found on MTD device spi0.0
[ 1.059115] Creating 4 MTD partitions on "spi0.0":
[ 1.063911] 0x000000000000-0x000000040000 : "awboot"
[ 1.069687] 0x000000040000-0x0000000c0000 : "dtb"
[ 1.075329] 0x000000080000-0x000000880000 : "kernel"
[ 1.089037] 0x000000800000-0x000008800000 : "rootfs"
[ 1.094008] mtd: partition "rootfs" extends beyond the end of device "spi0.0" -- size truncated to 0x7800000
[ 1.236696] usb_phy_generic usb_phy_generic.1.auto: dummy supplies not allowed for exclusive requests
[ 1.246543] musb-hdrc musb-hdrc.2.auto: MUSB HDRC host driver
[ 1.252314] musb-hdrc musb-hdrc.2.auto: new USB bus registered, assigned bus number 1
[ 1.260971] hub 1-0:1.0: USB hub found
[ 1.264765] hub 1-0:1.0: 1 port detected
[ 1.272840] ac108 0-003b: get regulator_used failed.
[ 1.278755] ehci-platform 4200000.usb: EHCI Host Controller
[ 1.279860] ohci-platform 4200400.usb: Generic Platform OHCI controller
[ 1.284372] ehci-platform 4200000.usb: new USB bus registered, assigned bus number 2
[ 1.291029] ohci-platform 4200400.usb: new USB bus registered, assigned bus number 3
[ 1.306859] ohci-platform 4200400.usb: irq 239, io mem 0x04200400
[ 1.313130] ehci-platform 4200000.usb: irq 237, io mem 0x04200000
[ 1.326114] ac108 0-003b: ref_cfg.ref_channel:0x3, set ref_pga_gain:16
[ 1.345999] ehci-platform 4200000.usb: USB 2.0 started, EHCI 1.00
[ 1.352824] hub 2-0:1.0: USB hub found
[ 1.356660] hub 2-0:1.0: 1 port detected
[ 1.380615] hub 3-0:1.0: USB hub found
[ 1.384418] hub 3-0:1.0: 1 port detected
[ 1.397463] ac108 0-003b: i2c probe succeed.
[ 1.402000] ac108 0-0035: get regulator_used failed.
[ 1.415306] ac108 0-0035: ref_cfg.ref_channel:0x3, set ref_pga_gain:16
[ 1.487445] ac108 0-0035: i2c probe succeed.
[ 1.498816] ubi0: attaching mtd3
[ 1.502801] sunxi-mmc 4021000.mmc: allocated mmc-pwrseq
[ 1.523910] sunxi-mmc 4020000.mmc: initialized, max. request size: 2048 KB, uses new timings mode
[ 1.528873] sunxi-mmc 4021000.mmc: initialized, max. request size: 2048 KB, uses new timings mode
[ 1.590645] mmc0: new high speed SDXC card at address 5048
[ 1.597102] mmcblk0: mmc0:5048 SD128 119 GiB
[ 1.604443] mmcblk0: p1
[ 1.656017] usb 2-1: new high-speed USB device number 2 using ehci-platform
[ 1.735923] random: crng init done
[ 1.857320] hub 2-1:1.0: USB hub found
[ 1.861298] hub 2-1:1.0: 4 ports detected
[ 2.186001] usb 2-1.3: new high-speed USB device number 3 using ehci-platform
[ 2.303815] ubi0: scanning is finished
[ 2.318088] ubi0: attached mtd3 (name "rootfs", size 120 MiB)
[ 2.323854] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
[ 2.326101] phy phy-4100400.phy.0: Changing dr_mode to 1
[ 2.330753] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
[ 2.336075] ehci-platform 4101000.usb: EHCI Host Controller
[ 2.342819] ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
[ 2.348418] ehci-platform 4101000.usb: new USB bus registered, assigned bus number 4
[ 2.355337] ubi0: good PEBs: 960, bad PEBs: 0, corrupted PEBs: 0
[ 2.369109] ubi0: user volume: 1, internal volumes: 1, max. volumes count: 128
[ 2.376358] ubi0: max/mean erase counter: 2/0, WL threshold: 4096, image sequence number: 409911256
[ 2.385405] ubi0: available PEBs: 0, total reserved PEBs: 960, PEBs reserved for bad PEB handling: 20
[ 2.394654] ubi0: background thread "ubi_bgt0d" started, PID 86
[ 2.394985] ALSA device list:
[ 2.403586] No soundcards found.
[ 2.407756] ehci-platform 4101000.usb: irq 236, io mem 0x04101000
[ 2.436024] ehci-platform 4101000.usb: USB 2.0 started, EHCI 1.00
[ 2.442816] hub 4-0:1.0: USB hub found
[ 2.446653] hub 4-0:1.0: 1 port detected
[ 2.576088] ohci-platform 4101400.usb: Generic Platform OHCI controller
[ 2.582744] ohci-platform 4101400.usb: new USB bus registered, assigned bus number 5
[ 2.590727] ohci-platform 4101400.usb: irq 238, io mem 0x04101400
[ 2.670690] hub 5-0:1.0: USB hub found
[ 2.674484] hub 5-0:1.0: 1 port detected
[ 2.680339] UBIFS (ubi0:0): Mounting in unauthenticated mode
[ 2.686550] UBIFS (ubi0:0): background thread "ubifs_bgt0_0" started, PID 87
[ 2.741007] UBIFS (ubi0:0): recovery needed
[ 2.876515] UBIFS (ubi0:0): recovery completed
[ 2.881078] UBIFS (ubi0:0): UBIFS: mounted UBI device 0, volume 0, name "rootfs"
[ 2.888501] UBIFS (ubi0:0): LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2048 bytes
[ 2.898438] UBIFS (ubi0:0): FS size: 117452800 bytes (112 MiB, 925 LEBs), max 1024 LEBs, journal size 9023488 bytes (8 MiB, 72 LEBs)
[ 2.910367] UBIFS (ubi0:0): reserved for root: 0 bytes (0 KiB)
[ 2.916217] UBIFS (ubi0:0): media format: w4/r0 (latest is w5/r0), UUID 20022C72-77B7-4F94-B2C2-1BBAEFF21E98, small LPT model
[ 2.930325] VFS: Mounted root (ubifs filesystem) on device 0:13.
[ 2.938478] devtmpfs: mounted
[ 2.942402] Freeing unused kernel image (initmem) memory: 1024K
[ 2.948522] Run /sbin/init as init process
Starting syslogd: OK
Starting klogd: OK
Running sysctl: OK
Starting mdev... OK
modprobe: can't change directory to '/lib/modules': No such file or directory
Initializing random number generator: OK
Saving random seed: OK
Starting network: OK
Starting ntpd: OK
Starting dropbear sshd: OK
Starting sshd: OK
Starting vsftpd: OK
Welcome to Buildroot
buildroot login: [ 12.007818] platform sound: deferred probe pending