Commit Graph

2466 Commits

Author SHA1 Message Date
Mac Chiang 17eed9db68 topology2: update flags for alignment
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>
2024-10-03 15:46:53 +01:00
Mac Chiang 4a42e3a318 topology2: remove BT_NAME string assignment as it's default value.
The default string for BT_NAME has set to "SSP2-BT" in bt-default.conf.

Signed-off-by: Mac Chiang <mac.chiang@intel.com>
2024-10-03 15:46:53 +01:00
Curtis Malainey 0ba94ef8f5 oss-fuzz: delete outdated files
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>
2024-10-02 14:40:25 +01:00
Ranjani Sridharan addc349d6a ipc4: helper: Remove hardcoded UUID map for CONFIG_LIBRARY
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>
2024-10-02 15:03:56 +03:00
Peter Ujfalusi 6949112cce tools: mtrace-reader.py: Add option to mark chunk starts in output
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>
2024-10-01 20:39:11 +03:00
Alexander Brown 23d3d55139 Implement gui and tui for sof demonstration
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>
2024-10-01 13:30:33 +01:00
Seppo Ingalsuo e5a2746c38 Tools: Testbench: Add README.md text
This text add helps with various usages for testbench.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2024-10-01 13:18:28 +01:00
Seppo Ingalsuo fbb9d78413 Tools: Testbench: Rename common_test C source files to utils
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>
2024-10-01 13:18:28 +01:00
Seppo Ingalsuo 4730ac5b45 Tools: Testbench: Add IPC4 support
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>
2024-10-01 13:18:28 +01:00
Seppo Ingalsuo 2580953172 Tools: Testbench: Error if filename is empty in file component
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>
2024-10-01 13:18:28 +01:00
Seppo Ingalsuo bf5a3fd63c Tools: Testbench: Cleanup and move common and IPC3 specific functions
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>
2024-10-01 13:18:28 +01:00
Seppo Ingalsuo ca12ed2b81 Tools: Testbench: Clean up header files
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>
2024-10-01 13:18:28 +01:00
Seppo Ingalsuo e1c0798980 Tools: Testbench: Rename files with IPC3
This change prepares to add IPC4 support to testbench.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2024-10-01 13:18:28 +01:00
Dharageswari R 4aaaf9ef4b topology2: add fix to add 4ch PDM DMIC with rt722 topology
Fix up patch to support 4 channel PDM DMIC with rt722 topology

Signed-off-by: Dharageswari R <dharageswari.r@intel.com>
2024-09-23 11:40:07 +03:00
Ranjani Sridharan 88cde10fec tools: plugin: ctl: Add support for bytes control
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>
2024-09-19 18:21:33 +01:00
Ranjani Sridharan ec8c6c765d tools: plugin: common: Move plug_ctl_ipc_message() definition to common code
It will be used by both the PCM and the control plugin.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2024-09-19 18:21:33 +01:00
Ranjani Sridharan 08a1a84027 tools: plugin: Move plug_mq_cmd_tx_rx() definition to common code
It will be used by both the PCM and the control plugin.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2024-09-19 18:21:33 +01:00
Ranjani Sridharan 28f4ef57a6 tool: plugin: tplg: Parse kcontrols for process type widgets
Parse and set up the kcontrols during topology parsing.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2024-09-19 18:21:33 +01:00
Ranjani Sridharan 3d2df90f2e tools: plugin: tplg_ctl: Set control type
Set the type while parsing the controls.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2024-09-19 18:21:33 +01:00
Ranjani Sridharan a698198d8e tools: ctl: Add ABI header for kcontrol read
This is necessary to pass the param ID for the data being requested.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2024-09-19 18:21:33 +01:00
Dharageswari R 20ca7a6079 topology2: add support for PDM DMIC with rt722 topology
Adding the support for 4 channel PDM DMIC with rt722 topology

Signed-off-by: Dharageswari R <dharageswari.r@intel.com>
2024-09-19 12:35:33 +01:00
Marcin Szkudlinski a1b89e08a2 buf: make all the modules use comp_dev_get_first_data_producer
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>
2024-09-19 12:43:39 +03:00
Marcin Szkudlinski 718df513f2 buf: make all the modules use comp_dev_get_first_data_consumer
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>
2024-09-19 12:43:39 +03:00
Seppo Ingalsuo 9d1177acf4 Tools: Testbench: Convert file component to module adapter
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>
2024-09-17 16:23:47 +01:00
Ranjani Sridharan d7c0b5573f tools: plugin: Add support for enum controls
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>
2024-09-17 16:21:25 +01:00
Ranjani Sridharan 5b606a94dd tools: plugin: ctl: Add a helper function to configure the IPC message
This will avoid the duplicated code when configuring the IPC message for
kcontrol IO.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2024-09-17 16:21:25 +01:00
Ranjani Sridharan 5416adbc23 tools: plugin: ctl: Fix reply_data_size calculation
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>
2024-09-17 16:21:25 +01:00
Ranjani Sridharan 0ae6a330aa tools: plugin: tplg_ctl: Use the ops info to determine kcontrol type
Use the ops info to differentiate the different kcontrols in topology.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2024-09-17 16:21:25 +01:00
Ranjani Sridharan ce385cf32a tools: plugin: Add index for kcontrols
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>
2024-09-17 16:21:25 +01:00
Seppo Ingalsuo 56c60cd19b Tools: Topology2: Add build of 96 kHz DMIC nocodec topologies for PTL
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>
2024-09-17 14:18:58 +01:00
Seppo Ingalsuo 31cfb30b6f Tools: Topology2: Add topology sof-ptl-max98357a-rt5682-ssp2-ssp0
The topology is built into development to be used for testing and
further development.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2024-09-17 14:18:58 +01:00
Seppo Ingalsuo 350c7bd62b Tools: Topology2: Build nocodec topologies for PTL and PTL FPGA
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>
2024-09-17 14:18:58 +01:00
Ranjani Sridharan 89e417a888 tools: topology2: sof-plugin: Add an option for mixin-mixout pipelines for playback
This will be useful to test volume controls with the plugin.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2024-09-13 12:50:54 +03:00
Ranjani Sridharan 08754de013 plugin: alsaplug: Add kcontrol set up callback
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>
2024-09-13 12:50:54 +03:00
Ranjani Sridharan 58465b8750 tools: plugin: tplg: Pass comp_info when creating controls for pga
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>
2024-09-13 12:50:54 +03:00
Ranjani Sridharan 4c3c1ed7dd plugin: alsaplug: pcm: Init the global context earlier
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>
2024-09-13 12:50:54 +03:00
Ranjani Sridharan 40c1a7d55f tools: plugin: alsaplug: ctl: Fix control ops for IPC4
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>
2024-09-13 12:50:54 +03:00
Ranjani Sridharan 139120033f plugin: alsaplug: Modify the signature of plug_parse_conf()
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>
2024-09-13 12:50:54 +03:00
Peter Ujfalusi 1956aec13b topology2: tplg-targets-hda-generic: Add support for HDMI + DMIC combination
Extend the HDMI only configuration to support idsip + DMIC setups.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
2024-09-13 10:50:08 +03:00
Guennadi Liakhovetski 1dd1b278d8 volume: move gain.toml and peakvol.toml into volume.toml
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>
2024-09-12 18:07:16 +03:00
Seppo Ingalsuo 97e5c0ded9 Tools: Topology2: Enable DMIC capture pre-processing for hda-generic
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>
2024-09-11 14:12:19 +01:00
Seppo Ingalsuo 707c0c5bce Tools: Topology2: Add beamformer and DRC to HDA analog capture
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>
2024-09-11 14:18:53 +03:00
Seppo Ingalsuo cf7f45ecb0 Tools: Topology2: Add module copier to HDA analog capture
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>
2024-09-11 14:18:53 +03:00
Seppo Ingalsuo b9aa4c5603 Tools: Topology2: Cleanup dai-copier-eqiir-module-copier-capture
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>
2024-09-11 14:18:53 +03:00
Seppo Ingalsuo 51f6eaeb4b Tools: Topology2: Remove unused include from cavs-es83x6.conf
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>
2024-09-11 14:18:53 +03:00
SaiSurya Ch 22744b16ad rimage: config: add acp_7_0 toml file to support acp_7_0 build
Add acp_7_0 toml file to support sof-acp_7_0.ri binary build

Signed-off-by: SaiSurya Ch <saisurya.chakkaveeravenkatanaga@amd.com>
2024-09-11 09:28:36 +03:00
SaiSurya Ch 979abb6d8d tools: topology: add ACP_7_0 topology support
Add ACP_7_0 platform topology.

Signed-off-by: SaiSurya Ch <saisurya.chakkaveeravenkatanaga@amd.com>
2024-09-11 09:28:36 +03:00
Eddy Hsu 7789531bfc comp: ctc: add ctc switch control.
Add enablement switch controls of Google CTC component.

Signed-off-by: Eddy Hsu <eddyhsu@google.com>
2024-09-10 15:30:25 +01:00
Seppo Ingalsuo fce09fc56b Audio: Multiband-DRC: Move blob configuration scripts to module directory
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>
2024-09-10 12:06:37 +03:00
Seppo Ingalsuo 2950246415 Tools: Test: Audio: Add to process_test.m option to show plots
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>
2024-09-09 12:39:44 +03:00