Audio: needs two new drivers #23
Labels
No labels
blocked-physical
cleanup
hardware
infra
kernel
P1-critical
P2-high
P3-normal
P4-later
reliability
security
upstream
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
tiagoagueda/a80#23
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Resolved for the part that matters, 2026-08-28. Full write-up:
43-audio-and-dma.md.
This issue was wrong in both directions, and the corrections are more interesting than the
original text.
The blocker was not an audio driver — the A80 had no DMA engine at all
sun6i-dma.chad no sun9i compatible,drivers/dma/had no sun9i anything, andsun9i-a80.dtsihad no DMA controller node. Every ASoC playback path is dmaengine-based, sono amount of codec work could ever have produced a sound. Now working: 114 420 transfers on
one channel, 0 failures, 74 MB/s, and 83 200 across all 53 virtual channels.
The one non-obvious part: the A80 numbers its DRAM DRQ endpoint 0, not 1, and mainline
hardcodes
DRQ_SDRAM 1. Against the wrong port every transfer simply never completes.S/PDIF needed no new driver
Only a variant entry in
sun4i-spdif. The BSP groups sun9i with the A83T and H3 for everyregister-layout difference, and mainline's A80 CCU already had
CLK_SPDIF,CLK_BUS_SPDIFand
RST_BUS_SPDIF— nobody had pointed a node at them. The card registers andspeaker-testplays a full period;pll-audiomoves to 122.88 MHz and the spdif clock toexactly 24.576 MHz.
I2S is off the table
[s_i2s1]in the fex looks live (daudio_used = 1) but is an unedited reference-designblock: its pin list is verbatim the manual's default, and its PM04 is
bt_wake— whichworking Bluetooth proves. R_DAUDIO1 is not routed on this board.
Correction to this issue's own text
Mainline's AC100 MFD does instantiate an
ac100-codeccell withof_compatible = "x-powers,ac100-codec". Nothing binds to it, which is why the outcome is"RTC only" — but a codec driver would have a device waiting for it, and no MFD change is
needed.
What is left
Split out rather than left vague here:
⚠️ Nothing has been submitted upstream. See 42-upstreaming.md.