With the release of RTNR version 20220728, period for capturing pipeline requires at least 5ms.
Periods setting for 16KHz capturing pipeline is also removed since RTNR is currently running in 48KHz capturing pipeline only.
Signed-off-by: Ming Jen Tai <mingjen_tai@realtek.com>
An IPC4 widget may support multiple I/O queue. Queue ID is
required during widget binding in route setup.
This patch adds sink_pin_binging and src_pin_binding classes
for multiple I/O queue support.
For widget requires special pin(queue) binding, sink_pin_binding
or src_pin_binding should be defined in the widget object. So
that the kernel knows which pin to use during widget binding
by parsing topology.
Note that pin binding should be defined for all sink/source pins
or for none. Even if there is only one sink pin requires special
pin binding, pin binding should be defined for all sink pins, and
for pins that are not used, give the value "NotConnected". This rule
applies to source pins, too.
Example: smart_amp widget has two sink pins and one source pin,
and its feedback sink pin requires special pin binding, so we have to
define sink_pin_binding objects within smart_amp object like this:
Object.Base.sink_pin_binding.1 {
# the main sink pin is connected to host for playback data
sink_pin_binding_wname "copier.host.1.1"
}
Object.Base.src_pin_binding.2 {
# the feedback sink pin is connected to capture dai for codec feedback.
sink_pin_binding_wname "copier.SSP.2.1"
}
In this example, smart_amp is connected to host and DAI directly,
it is also possible to be connected to host and DAI indirectly (with
gain or other widget in the middle).
Signed-off-by: Chao Song <chao.song@linux.intel.com>
These two tokens will be used by the kernel to decide the
supported number of sink/source pins, thus to allocate
correct widget queue id in route setup.
These two tokens are mandatory for IPC4 widgets, because
the default value in Linux kernel is zero, which is invalid
for queue id allocation.
Signed-off-by: Chao Song <chao.song@linux.intel.com>
Remove mt8186 unused topologies.
We use sof-mt8186 on our demo board, sof-mt8186-mt6366-rt1019-rt5682s
and sof-mt8186-mt6366-da7219-max98357 will no be used anymore.
Signed-off-by: Chunxu Li <chunxu.li@mediatek.com>
Fixes: #5323
The v1.2.6 requirement was a lie the whole time because alsatplg v1.2.6
does not have any `-I` option. The truth was: un-released alsa-utils
from git was required. The check for v1.2.6 was an approximation good
enough for many users but not for everyone, see for instance #5323.
Now that alsa-utils v1.2.7 has been released we can stop lying:
https://github.com/alsa-project/alsa-utils/commit/7d934f3142549
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
We add a new i.MX8MP topology which will use the compress API for PCM
capture. This topology is mainly used for testing.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
We add a new i.MX8MP topology which will use the compress API for PCM
playback. This topology is mainly used for testing.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
We add a new i.MX8Q(M/XP) topology which will use the compress API for
PCM capture. This topology is mainly used for testing.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
We add a new i.MX8Q(M/XP) topology which will use the compress API for
PCM playback. This topology is mainly used for testing.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
We want to be able to create topologies for the case of
compress capture. This change will enable us to do so.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
This change will allow us to prepare for adding a new macro
for the case of compress capture.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
After commit:
5763c74bf4 ("codec_adapter: Remove setup config from module data")
we no longer setup config bytes in codec adapter control bytes.
So, we need to remove ca_config bytes and fix payload size. This
didn't introduce any bug because this is the default
CA_SETUP_CONTROLBYTES. Each topology uses a custom control bytes
which overrides this default values.
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
This patch allows to test SRC with all 16/24/32 bit formats
in UP-squared device. Without this patch only 16 bit is
supported.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
setup config data was removed with commit
5763c74bf4 ("codec_adapter: Remove setup config from module data")
update documentation to reflect this.
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
We apparently missed quite a few platforms with SSP1, and SSP5 is also
needed for APL/GLK.
One day we'll have a better way to add topologies, but so far it's
brute-force combinatorial addition. Oh well.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
For some reason we added DMIC-based topologies for all platforms
except GLK and APL.
This should be back-ported to 2.2 stable.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
In the earliest design, mclk is turned on in set_config() and never
turned off. The behavior is modified in this commit:
d5840a9200 ("ssp: move mclk request/release to pre_start and post_stop")
Now the mclk is enabled only during audio streaming so some codec may
pop. This commit adds the always-on behavior back as an new feature.
Signed-off-by: Brent Lu <brent.lu@intel.com>
RT1316 is exposed by the machine driver as having an echo reference,
so the indices are different from the regular ones.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Somehow we assumed that all ADL platforms support BT_OFFLOAD. Wrong,
this is only valid for Chromebooks and needs to be set externally in
the CMakeFiles definitions.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
HP Omen 16 devices have an amplifier on link3, add the required
configuration macro.
BugLink: https://github.com/thesofproject/linux/issues/3727
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Generate 2 files for 1 and 2ch cases.
These topologies can be used by setting
options snd-sof-pci tplg_filename=<file>
in /etc/modprobe.d/alsa-base.conf
BugLink: https://github.com/thesofproject/sof/issues/5989
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
There are multiple cases where we cannot detect that PDM1 is used
instead of the default PDM0.
BugLink: https://github.com/thesofproject/sof/issues/5989
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
We should set num_audio_formats in pipelines when we remove the
default value from gain.conf.
Otherwise, we will see below error with cavs-mixin-mixout-hda-2ch-tgl.tplg
tplg: ready widget id 2 pipe 1 type 6 name : gain.1.1 stream none
Fixes: 773a05a3 ('topology2: add S24LE support')
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
S24LE is the major format used by SOF IPC4 FW and windows platform
and has better perfomance than S32.
Signed-off-by: Rander Wang <rander.wang@intel.com>
Cavs src is different with sof src. It has different uuid
and param which are composed of base module definition and
output rate.
Signed-off-by: Rander Wang <rander.wang@intel.com>
The original calculation will generate 44 sample size for
44.1khz, actually it at least needs 45 sample size.
This patch uses ceil value for such rate, also inlcude
11.025kh, 22.05kh, 88.2khz, 176.4khz.
Signed-off-by: Rander Wang <rander.wang@intel.com>
Introduce a new component to perform configurable audio post processing
on playback path before smart amplifier.
1. Put google_audio_post_processing libs at $SOF_REPO/third_party/lib
- libgoogle_audio_post_processing.a
- libc++.a
- libc++abi.a
2. Enable google_audio_post_processing in config override
$SOF_REPO/src/arch/xtensa/configs/override
CONFIG_COMP_GOOGLE_AUDIO_POST_PROCESSING=y
3. Build the firmware and tool with xcc
4. To verify it works:
- aplay some audio
- amixer and grep GAPP
- sof-ctl to get/set control
Signed-off-by: Kehuang Li <kehuangli@google.com>
The copier 'stream_name' and dai 'name' need to match, use macro to
enforce consistency.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
The pipeline stream_name is not used at all, and as a consequence we
can remove the pipeline from the Widget objects
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
The same 'Analog Playback' string is used for the copier stream_name
and PCM caps name. This is not a coincidence but a requirement to
match PCM and widgets. Same for 'Analog Capture'
Use a macro to make sure this 1:1 mapping is not broken.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Be exhaustive on pipeline contents.
Also remove Windows references and copy/pasted comments
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>