~canonical-hwe-team/hwe-next/+git/sof:cavs2.5-tmp-mergeback0222

Last commit made on 2023-02-22
Get this branch:
git clone -b cavs2.5-tmp-mergeback0222 https://git.launchpad.net/~canonical-hwe-team/hwe-next/+git/sof

Branch merges

Branch information

Name:
cavs2.5-tmp-mergeback0222
Repository:
lp:~canonical-hwe-team/hwe-next/+git/sof

Recent commits

ad1c720... by Long Wang <email address hidden>

smart_amp: eliminat pops when switch device between speaker and headphone.

There are two pops caused by SOF Firmware.

Pop occurs when switch from headphone to speaker:
When switch to headphone, audio playback data still remains in
DSM internal processing buffer and not consumed by DMA.
So when switch back to speaker, the DSM processing buffer is not clean,
then pop noise occurs. We can clean and reset the point for
DSM internal processing buffer by called this function 'smart_amp_init'
in function 'smart_amp_prepare'.

Pop occurs when switch from speaker to headphone:
The feedback and feed-forward buffer processing should be independent.
But the number of frames processed by DSM feedforward is corrupted by
feedback buffer calculation. When capture pipeline exists,
the number of frames for feedforward is always same as feedback.
And the number of frames for feedback is zero at the first time
when the capture pipeline setup. Then the number of frames processed
by DSM feed forward is also zero though there are many frames in
playback buffer. So the available frames will become larger.
It is easy to exceed the limit size of DSM input.
Then it will cause the buffer overflow and we could hear obvious pop
noise from speaker. We fix it by calculating the number of frames
for feedforward and feedback respectively.

Signed-off-by: Long Wang <email address hidden>
(cherry picked from commit 8a1798e4e843a2a3c8f29387c091e105b4bc4810)

a2c6e43... by Guennadi Liakhovetski <email address hidden>

smart_amp: fix buffer acquisition

Instead of acquiring and releasing buffers locally multiple times,
do that once for .copy(), .trigger() and .prepare() methods.

Signed-off-by: Guennadi Liakhovetski <email address hidden>
(cherry picked from commit 6c94904f3d130bae67f4f4897a4a7e2a9196c4b5)

3d8ac15... by Pin-chih Lin <email address hidden>

topology1: add PDM1 version for sof-adl-max98360a-rt5682-2way

Adds new topology build based on sof-adl-max98360a-rt5682-2way
with appending arg `-DDMIC_DAI_LINK_16k_PDM=STEREO_PDM1` for existing
ADL-P projects.

Signed-off-by: Pin-chih Lin <email address hidden>
(cherry picked from commit feeb51f216d3f26a4e00eb1047f2583cd59b16bf)

7a5ab6a... by Pin-chih Lin <email address hidden>

module_adapter: waves: fix unfreed rballoc memory block

There is a rballoc() call during module_init() lacking the
correspondent rfree() on module_free(). Replace it with
module_allocate_memory() to ensure the memory to be freed
by module_adapter.

Signed-off-by: Pin-chih Lin <email address hidden>
(cherry picked from commit eedd76ae375e69f1845b57a34cab0ae5d5f41509)

aed2915... by Guennadi Liakhovetski <email address hidden>

pipeline: let selector terminate the pipeline when stopping

Usually when processing COMP_TRIGGER_PAUSE or COMP_TRIGGER_STOP if a
component returns PPL_STATUS_PATH_STOP it means, that the trigger
propagation should stop and the pipeline should be kept alive.
However, in some cases propagation should be stopped, but the
pipeline should be terminated. This is the case with the selector
component, when used in a keyword detection pipeline. Add a new
PPL_STATUS_PATH_TERMINATE return value for such cases.

BugLink: https://github.com/thesofproject/sof/issues/5398
Signed-off-by: Guennadi Liakhovetski <email address hidden>

dc03b84... by Seppo Ingalsuo <email address hidden>

Tools: Topology1: Add three demuxed PCMs for DMIC capture example

The topology sof-hda-generic-2ch-demux-3pcm.tplg uses a single demux
to duplicate three times the same DMIC DAI capture.

The topology sof-hda-generic-2ch-demux-demux-3pcm.tplg uses two demux
components to provide to PCMs raw DMIC capture, processing after PGA12.0,
and processing after PGA12.0 and PGA14.0.

The patch adds to pipeline.m4 a modified version of macro W_PIPELINE()
called W_PIPELINE_TOP() that can be used to add from top level
topology pipeline widgets to pipelines those are missing it. It
avoids topology load error.

Added pipelines pipe-dai-demux-capture.m4 and pipe-volume-demux.m4
are needed in these two example topologies.

Signed-off-by: Seppo Ingalsuo <email address hidden>

3df76bc... by Pin-chih Lin <email address hidden>

topology1: set Speakers PPL running on C1 by default

For Intel platforms, C0 is on by default for processes necessary to
run in low power cases, while C1..3 for processes with higher loads.
This commit moves the default core to C1 for Speakers pipeline.

At the same time, we found this commit can resolve the DSP panic
issue on builds with 3P post-processing solutions running on Speakers
pipeline.

Signed-off-by: Pin-chih Lin <email address hidden>
(cherry picked from commit 7f80908f28b3535787d885adc4750f266fdf4b93)

361c472... by Pin-chih Lin <email address hidden>

topology1: define SPK_PLAYBACK_CORE for Speakers running core

Defines the target core ID for Speakers and Echo Reference pipelines
explicitly. When GOOGLE_RTC_PROCESSING is defined, it will be set to
the same ID as DMIC48K pipeline.

Signed-off-by: Pin-chih Lin <email address hidden>
(cherry picked from commit cc0d9f09e4f309e9e70b9a47067c937ff26391d1)

9865207... by Pin-chih Lin <email address hidden>

topology1: Align DAI format as SSP config to 24-bit for rt1019

This commit fixes Speakers audio issue by aligning bitwidth format
of DAI config to 24-bit as SSP config, which has been modified by
commit c8fe1927c <topology1: change audio format to 24 bit for rt1019>

Signed-off-by: Pin-chih Lin <email address hidden>
(cherry picked from commit 091948ccc05f7b370286035fb367a42d895d8f86)

7f8e01d... by Pin-chih Lin <email address hidden>

mux: consider sinks on same direction only for prepare/reset propagation

the change of mux component codes from PR#6762 added the condition
on capture to propagate prepare/reset command to upstream only if
there are no active sinks. The purpose is to support multiple
endpoints sourced from one capture device.

For topologies integrated with smart_amp component (as figured below),
a demux is placed on echo reference (capture) pipeline, providing
sink linkages to both PCMC and smart_amp. smart_amp is located on
playback pipeline whose direction is opposite from demux.

 PCMP ----> smart_amp ----> SSP(A) # playback ppl
             ^
             |
 PCMC <---- demux <----- SSP(B) # echo reference ppl

In practice, the playback pipelne including smart_amp can be set to
active or stopped independently.

While triggering prepare or reset to echo referene pipeline, the
smart_amp (one of the sink component for demux) may be in active state
but shouldn't block the prepare/reset command propagation through the
echo reference pipeline. In other words, the condition for mux prepare
and reset propagation should only regard sinks on capture (the same
direction as mux).

Signed-off-by: Pin-chih Lin <email address hidden>