ipc: ipc4: dai: do not set the direction bit for UAOL - #11087
Open
ujfalusi wants to merge 1 commit into
Open
Conversation
The link_config computed here is handed to the UAOL driver as the stream channel map and written to UAOLxPCMSyCM. On ACE 2.x and later that register only defines the lchan, hchan and strm fields, its two upper bits are reserved, and union hdalink_cfg keeps the direction in the topmost of them. Setting the direction therefore wrote a reserved bit for every capture stream, after which the link transferred no data at all and reported no error. Playback was unaffected because its direction is zero. The link does not need to be told the direction: transmit and receive streams have separate indices, so the stream already implies it. Fixes: ddd5c64 ("dai: uaol: add support for Intel UAOL") Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
ujfalusi
requested review from
serhiy-katsyuba-intel
and
a lite review from Copilot
August 13, 2026 08:31
ujfalusi
requested review from
dbaluta,
kv2019i,
lbetlej,
lgirdwood,
mmaka1 and
plbossart
as code owners
August 13, 2026 08:31
Contributor
There was a problem hiding this comment.
Pull request overview
Removes programming of the dir (direction) bit in the UAOL HD-A link configuration built by dai_set_link_hda_config() (IPC4 path), because on ACE 2.x+ the UAOLxPCMSyCM register reserves the upper bits and the stream index already implies direction. This prevents capture streams from silently failing due to writing a reserved bit.
Changes:
- Stop setting
link_cfg.part.dirforSOF_DAI_INTEL_UAOLlink config (leave it at 0 vialink_cfg.full = 0). - Add an in-code comment clarifying that UAOLxPCMSyCM has no direction bit and the stream selects direction.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
serhiy-katsyuba-intel
approved these changes
Aug 13, 2026
kv2019i
approved these changes
Aug 13, 2026
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.
The link_config computed here is handed to the UAOL driver as the stream channel map and written to UAOLxPCMSyCM. On ACE 2.x and later that register only defines the lchan, hchan and strm fields, its two upper bits are reserved, and union hdalink_cfg keeps the direction in the topmost of them.
Setting the direction therefore wrote a reserved bit for every capture stream, after which the link transferred no data at all and reported no error. Playback was unaffected because its direction is zero.
The link does not need to be told the direction: transmit and receive streams have separate indices, so the stream already implies it.
Fixes: ddd5c64 ("dai: uaol: add support for Intel UAOL")