-
Notifications
You must be signed in to change notification settings - Fork 349
topology: sof-apl-pcm512x: add option for codec master mode and 44.1kHz #2671
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@plbossart There's no ASRC in the media pipeline so I'd assume it should be DMA like it was before the topologies were switched to timer based scheduling. |
lgirdwood
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Both should be DMA, IIRC media is not using ASRC and codec is master.
|
If it's DMA you should also disable the agent as it only works correctly with timer driven pipelines. If not done already. |
?? Are we saying that we need a new firmware with a different config when the topology changes from SOC master to SOC slave? |
|
If the Kconfig documentation is right, then this AGENT is really wrong: If we provide a means to change the behavior with the topology, then somehow the agent should be disabled automatically for pipelines/DAIs that rely on DMA. It doesn't seem right to me to require a new binary be generated. |
@tlauda Any comments on what should be done with this? |
We can easily dynamically turn off the agent as soon as there is any pipeline scheduled on DMA created. It will give us much more flexibility in terms of topology creation. Platforms which are not capable at all to schedule pipelines on timer should have agent disabled in kConfig (which I think is currently done). |
For my education, what does this 'system agent' do, and could it still be used for paths that will always be timer-based (HDA/HDMI + SoundWire + DMIC)? |
It's primary purpose it to detect deadlock or anything that blocks main loop re-entry. i.e. we expect to enter the main loop but FW is stuck somewhere else for too long. It will cause a panic so drivers can attempt an recovery. It really needs a little more intelligence in programming the new timeout to deal with sync and async conditions rather than a disable for use case X. |
|
Cool, the 44100 Hz version works too! Though only with 16 bit content. With 24 bit and 32 bit it triggers an issue with mixer buffer sizes. This is seen in trace: The media PCM has the same issue. It can playback 16 kHz 48 kHz content via SRC so I think configuration should be OK. The SRC likely suffers from insufficient buffers since there's audio discontinuity (few timer per second). I can fix later as well as the mixer buffer so you don't need to deep dive into them. |
singalsu
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unrelated issues but I can fix them later.
|
please don't merge, I have a better one coming |
This patch provides an optional support for codec master mode and uses a macro to change the frame sync as needed. The scheduling is also changes to to DMA instead of TIMER. The user is still required to manually copy the desired topology as sof-tplg/sof-apl-pcm512x.tplg, but a manual configuration of the ACPI initrd overlays and BIOS settings is required as well, so there's no turn-key solution possible anyways. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
21deade to
28e7880
Compare
|
CI known issues |
This changes the SSP configuration and moves the scheduling to DMA instead of TIMER. 44.1 kHz is also supported, a first in the history of SOF I guess :-)