SM8750: enable audio over hdmi on the konkr pocket fit elite - #3187
Open
slaide wants to merge 6 commits into
Open
SM8750: enable audio over hdmi on the konkr pocket fit elite#3187slaide wants to merge 6 commits into
slaide wants to merge 6 commits into
Conversation
added 6 commits
August 14, 2026 23:19
The early port start exists because the aw88166/aw88261 amps check their PLL against BCLK at DAPM PRE_PMU, before the PCM trigger. It was applied to every playback lpass dai, DisplayPort included, and there it makes the DSP reject APM_CMD_GRAPH_START: the DP controller only enables its audio path from the codec dai's prepare, which runs after the cpu dai's. Guard it on the MI2S RX dai ids; DisplayPort and codec DMA start at trigger as upstream does.
New patch 0618. msm_dp_audio_prepare() returned -EINVAL when the display is not powered on. Skipping the register programming is right, the error is not: pipewire prepares the PCM of every UCM device while it builds the card, which happens with nothing plugged in, and one failure there makes it discard the whole profile, so the card loses its speaker and headphone sinks too.
The blob gains a DISPLAY_PORT_RX_0 device subgraph plus a MultiMedia4 stream that feeds only it, so DisplayPort is hw:0,3 and the speaker path is untouched. It lives in extra-firmware; this bumps the pointer at it. - New devices/SM8750/audio-topology/ with the m4 source for this board and a README covering the build and verify recipe. - extra-firmware temporarily points at slaide/extra-firmware branch sm8750-konkr-dp-audio, to be repointed once that is merged. - linux package.mk comment corrected: the blob is SEC MI2S on SD1 with the DisplayPort backend, not a QUATERNARY retarget.
sound node gains a dp-dai-link (q6apmbedai DISPLAY_PORT_RX_0 -> &mdss_dp0). That link is also what creates the DP0 Jack control.
It was a device filesystem overlay, the Odin3 profile next to it is an alsa-ucm-conf patch. Same files, same content, one place to look for SM8750 profiles.
The UCM profile gains an HDMI device on hw:,3, so the three outputs are three sinks in one card profile and picking one is a default-sink change. The order comes from JackHWMute, not from PlaybackPriority: wireplumber picks the default sink by node priority and its alsa monitor derives that from the PCM device number alone, so the speakers on hw:,0 outrank everything. Availability it does honour, so headphones mute Speaker and HDMI, and HDMI mutes Speaker, giving headphones > HDMI > speakers in every combination. The verb attaches MultiMedia4 to the DisplayPort backend and leaves it attached: pipewire opens as well as prepares every device's PCM while it builds the card, and DPCM refuses an open with no backend connected.
slaide
force-pushed
the
sm8750-hdmi-audio-konkr
branch
from
August 14, 2026 21:37
5c80009 to
06c1cdf
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Enable HDMI/DisplayPort audio over USB-C on the KONKR Pocket FIT Elite.
Testing
tested on my konkr pocket fit elite with a usb-c to hdmi adapter. if audio would be routed to speakers and hdmi (display output) is connected, audio is routed there instead. headphones override this, so display output + headphones connected -> route to headphones.
Additional Context
requires extra-firmware #8!
odin 3 has the same problem but the code to fix that does not overlap much with the code here, so its not in here.
claude: the code here adds a DISPLAY_PORT_RX_0 graph plus a MultiMedia4 stream to the topology (HDMI becomes hw:0,3), a dp-dai-link in the board DTS, and an HDMI UCM device. Two kernel patch fixes: 0612 was starting every playback LPASS port at .prepare (needed only for the MI2S amps' PLL check), which makes the DSP reject APM_CMD_GRAPH_START on DisplayPort; new 0618 stops msm_dp_audio_prepare() returning -EINVAL with the display off, since pipewire prepares every UCM device's PCM while building the card and one failure discards the whole profile. Also moves the KONKR UCM profile from the device filesystem overlay to an alsa-ucm-conf patch, matching the Odin 3 profile next to it.
AI Usage
While ROCKNIX doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it
helps set the right context for reviewers.
Did you use AI tools to help write this code? YES | PARTIALLY | NO
yes