Enable bluetooth offload for power saving since the SKU
has the cnvi module enabled.
Add deepbuffer pipeline support on I2S Speaker playback.
Note: The headset deepbuffer has enabled in I2S/HD-A/SDW conf.
Signed-off-by: Mac Chiang <mac.chiang@intel.com>
All fuzzing infra has moved to the posix platform. The corpus is not
being deployed, and is soon to be modified anyways. Its also missing
IPC4 in the corpus.
Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
Always append the UUID to the end of the module init IPC data and use
that to look up the component driver instead of using the hardcoded UUID
map. This will make it easier to support new processing elements with
the plugin/testbench. Also, modify the get/set_large_config handlers to
use the component driver set in the dev instead of looking it up again.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Sometimes it can help to see how the chunks arrive from firmware when
comparing logs with the kernel for example.
The --mark-chunks flag will add a marker for each new chunk that is printed
with a running number and the size of the given chunk, for example:
--- Chunk #604 start (size: 652) ---
[ 0.000000] <inf> init: print_version_banner: FW ABI 0x301d001 DBG ABI 0x5003000 tags SOF:v2.5-stable-branch-2772-g76e650e56598-dirty zephyr:v3.7.0-2127-ge7c84756087f src hash 0x4ff3fd64 (ref hash 0x4ff3fd64)
*** Booting Zephyr OS build v3.7.0-2127-ge7c84756087f ***
[ 0.000000] <inf> main: sof_app_main: SOF on intel_adsp
[ 0.000000] <inf> main: sof_app_main: SOF initialized
[ 0.000000] <inf> ipc: ipc_cmd: rx : 0x44000000|0x31400008
[11896.403666] <inf> ipc: ipc_cmd: tx-reply : 0x64000000|0x31400008
[11896.404076] <inf> ipc: ipc_cmd: rx : 0x44000000|0x3060004c
[11896.404093] <inf> ipc: ipc_cmd: tx-reply : 0x64000000|0x3060004c
--- Chunk #605 start (size: 196) ---
[11896.969658] <inf> ipc: ipc_cmd: rx : 0x11000005|0x0
[11896.969671] <inf> pipe: pipeline_new: pipeline new pipe_id 0 priority 0
[11896.969685] <inf> ipc: ipc_cmd: tx-reply : 0xb1000000|0x0
--- Chunk #606 start (size: 2236) ---
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Implements a gui and tui that can be used to easily demonstrate SOF
on target HW. See README and README-dev for more information on
functionality and purpose.
Signed-off-by: Alexander Brown <alex.brown.3103@gmail.com>
The utils is a better description of the purpose of the functions
in these files. There's no change to functionality.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds topology parsing and common functions versions
for IPC4.
Due to dai_get_init_delay_ms() implementation in IPC4 build
the file component is changed internally to copier to provide
the DAI data struct. The change is common for both IPC3 and IPC4
though copier is not usually used with IPC3 systems. Since it
works the same solution is used. The file state retrieve is changed
because the file component data is placed deeper into the
structures.
Due to IPC4 scheduling of pipelines the file component is added
a timeout. A file component sets timeout status if there has
been three copy operations with no data to process. The timeout
and EOF are used to end cleanly the test run.
The library_defconfig still has CONFIG_IPC_MAJOR_4=n. The add
of build type select to scripts/rebuild-testbench.sh is further
work. Also the IPC4 testbench in this state is not well usable
with only one component supported as process component and
without byte control set up algorithms.
Test run with DC blocker is possible this way:
tools/testbench/build_testbench/install/bin/testbench
-r 48000 -R 48000 -c 2 -n 2 -b S32_LE -p 1,2
-t tools/build_tools/topology/topology2/development/
sof-hda-benchmark-dcblock32.tplg
-i in.raw -o out.raw
Also sof-hda-benchmark-gain32.tplg can be run.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This change avoids a segfault. Topologies may contain
non-supported PCMs such as HDMI and if pipelines are not
restricted with -p A,B,C,.. option file might get set up
without filename.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The helper functions are moved from testbench.c to common_test.c
and common_test_ipc3.c as preparation to add IPC4 support.
The file components are looked up in test setup to arrays to ease
finding them in test run and control ending the test.
The parse string for command getopt() is fixed to match the
supported options.
The testbench parameter struct is changed to dynamically allocated
and zeroed by calloc(). It also avoids issues found with valgrind
about uninitialized.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Prefix macros with TB and add TESTBENCH to headers single time
include control macros. Especially ifndef _TRACE_H is in risk
to conflict with possible other headers.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Add a new field in struct plug_shm_ctl to save the bytes data from
topology for bytes controls. This will be used to send the kcontrol data
to the modules right after they are instantiated. Fix the tlv callback
in the control to handle the tlv bytes read/write when using sof-ctl.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Change all access to the first element of dev->bsource_list
from direct to API call comp_dev_get_first_data_producer
access in pipeline management code, like module adapter,
is omitted intentionally
Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
Change all access to the first element of dev->bsink_list
from direct to API call comp_dev_get_first_data_consumer
access in pipeline management code, like module adapter,
is omitted intentionally
Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
This is done as preparation for testbench IPC4 support. The
update to IPC4 is simpler for a module adapter component.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Add support for enum controls in the plugin. Fix the get_attribute and
get_enumerated_name callbacks to use the enum control items instad of
the count.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
This will avoid the duplicated code when configuring the IPC message for
kcontrol IO.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Use the size of struct ipc4_module_large_config_reply instead of the
size of the pointer.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Add an index field for kcontrols. This will be useful in differenciating
kcontrols of the same type in a widget. Modify the signature of the
control callback function to pass the index as an argument when creating
kcontrols. Pass 0 for ipc3 kcontrol builds as it will be unused in this
case anyway.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
This patch adds build of topologies where DMIC0 related pipelines
and PCMs are set to operate with 96 kHz rate.
- sof-ptl-nocodec-dmic-4ch-96k.tplg
- sof-ptl-nocodec-fpga-dmic-4ch-96k.tplg
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch builds test topologies sof-ptl-nocodec.tplg,
sof-ptl-nocodec-fpga-2ch-pdm0.tplg, and sof-ptl-nocodec-fpga-4ch.tplg.
The changes include:
- New ptl.conf where DMIC and SSP versions are updated
vs. LNL and MTL.
- The definitions for blob 3.0 format are added to
instruct alsa-utils to process a new format SSP blob.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Define the callback for setting up kcontrols in the plugin. Add a few
new fields in struct plug_shm_ctl to store the module info and the
volume table for converting mixer values to linear volume gain.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
This will be used to store the module id and instance ID when creating
the volume controls.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Initialize the shared memory for the global context during init so that
it can be used to store the kcontrol info during topology parsing. Move
the glb_ctx field from struct snd_sof_pcm to struct snd_sof_plug so that
it can be accessed during topology parsing.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Fix the read/write integer operations for IPC4 and the IPC messages
queues in the plugin kcontrol. Convert the bytes/enum ops implementation
to stubs. Support for these will be added later.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
In preparation for parsing just the topology file from the command line
for kcontrols, modify the signature of plug_parse_conf() to add an
argument to specify it.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
To make volume an LLEXT module it should have a single TOML
configuration file named volume.toml. This is easy to do, using
respective Kconfig options.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This patch adds to DMIC0 capture TDFB beamformer and DRC for
dynamic range control. The impacted topology names are:
- sof-hda-generic-2ch.tplg
- sof-hda-generic-4ch.tplg
- sof-hda-generic-cavs25-2ch.tplg
- sof-hda-generic-cavs25-4ch.tplg
- sof-hda-generic-ace1-2ch.tplg
- sof-hda-generic-ace2-2ch.tplg
The DMIC0 capture pipelines before this patch was:
DAI-copier -> IIR -> gain -> module copier -> host-copier
After:
DAI-copier -> IIR -> gain -> module copier ->
TDFB -> DRC -> host-copier
The beamformer is set for 2ch topologies to a narrow user
direction stereo image enhance with about 3 dB signal-to-noise
ratio improvement with blob "line2_generic_pm10deg.conf". In 4ch
topologies the beamformer is set to pass-through due to large
variations in notebook array geometries. The processing need to
be enabled per product by UCM2. The beamformer control switch is
by default off.
The DRC is set with blob "dmic_default.conf" to produce up to
10 dB boost in capture level. It helps to make DMIC capture louder
in normal silent conditions while it prevents clipping of samples
in loud conditions. The DRC control switch is by default off.
The added controls (seen with "amixer -c0 controls") are:
- Dmic0 Capture DRC bytes
- Dmic0 Capture DRC switch
- Dmic0 Capture TDFB angle set enum
- Dmic0 Capture TDFB beam switch
- Dmic0 Capture TDFB bytes
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds to analog microphone capture pipeline TDFB
beamformer and DRC for dynamic range control.
The enhanced host copier pipeline is enabled if
HDA_MIC_ENHANCED_CAPTURE is set to true in topologies build.
The keys EFX_HDA_MIC_TDFB_PARAMS and EFX_HDA_MIC_DRC_PARAMS
control the applied configurations blobs.
There is no processing applied to capture audio since the
topology is built with pass-through blobs. E.g. UCM2 should
set up processing with blobs those have effect.
The change impacts sof-hda-generic.tplg. The other topologies
with DMIC are kept as before without added processing. The
analog capture pipelines are before this change:
dai-copier -> eqiir -> module-copier -> host-copier
After:
dai-copier -> eqiir -> module-copier -> TDFB -> DRC -> host-copier
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch changes in cavs-mixin-mixout-hda based topologies the
analog capture pipeline from
dai-copier -> eqiir -> host-copier
to
dai-copier -> eqiir -> module-copier -> host-copier
It allows more flexibility with processing add into host-copier
pipeline and allow capture stream duplication to multiple PCMs.
This change adds 2.2 MCPS from module-copier in TGL platform.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The pipeline is generic for any type of DAI, so using DMIC0_DAI_EQIIR
to select IIR blob is wrong. The blob definition need to be done
at upper level where endpoint is known.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The topologies built with cavs-es83x6.conf
(sof-mtl-es83x6-ssp1-hdmi-ssp02.tplg and sof-mtl-hdmi-ssp02)
are not using dai-copier-eqiir-module-copier-capture pipeline,
so this include can be deleted.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
To consolidate the audio moves the scripts are moved to the same
directory as the module. This first step only moves the files.
The next steps rename the scripts and fix possible issue to
directories move.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This change replaces 6th argument with show_plots. If it is
set to 1, the plots are not hidden. If set to 2, also the
temporary sound files are not deleted that is useful for
debugging.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>