This patch updates the SRC to run with the updated test topologies
set. The script is also cleaned up a bit.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch updates the load_aif_in_out(), load_dai_in_out(),
and load_pipeline() calls similarly as done for testbench to
prevent the Fuzzer build fail.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch fixes the fail to execute tests due to recent pipeline
updates. Now the fileread and filewrite component is instantiated
as host or DAI depending on stream direction. The DAI file component
is added the capability to report HW stream parameters. In testbench
case the stream parameters originate from command line parameters.
The file params() handling is updated to be similar as in other
components to successfully propagate the parameters.
The added capture pipelines support is not fully functional and will
be fixed later.
The testbench cleanup includes elimination of global variables for
certain component ids. The needed misc parameters were added to
testbench parameters struct that is passed through most topology
parsing functions.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch updates the tplg-build.sh script by omitting DMIC capture
test topologies generation, tone topolgies generation due to no
use and no maintenance. They can be fixed later.
The all DAI permutations are generated only for volume pipeline. The
src is removed. Instead a new algorithms topologies generation loop
is added for UP2 (APL) compatible topologies. The algorithms are
ASRC, FIR, IIR, and SRC.
The test-all, capture, playback macros are updated to use
PIPELINE_PCM_ADD and set up DAI for SCHEDULE_TIME_DOMAIN_TIMER. The
duplication of TEST_DAI_PORT in macro call is replaced by 0 to
prevent topology load fail on device.
The test-equalizer-playback-ssp.m4 is removed as obsolete.
Pipelines are added for FIR and IIR playback and capture. SRC playback
pipeline is improved by making tokens instance specific. The SRC
capture pipeline macro is only cosmetically improved.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds load of ASRC component to successfully build
the Fuzzer. The common topology parser with testbench depends
on load_asrc() function.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Since the new sof pcm512x machine driver supports the DMIC backend
it's practical to move the ASRC capture pipelines into this topology
to avoid need to change into nocodec mode for ASRC capture tests.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch fixes the apply of DAI_PERIODS for playback sink
and capture source buffers. Also the comments for components
instantiating are fixed to order sink, source as they are
in the parameters to avoid confusion.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Back pointer must be initialized before any instance
level logging is performed by the new() operation since
the instance identification requires access to the uuid
that will be implemented on the component driver level.
Signed-off-by: Marcin Maka <marcin.maka@linux.intel.com>
Static inline getters provides better control of use
component properties as L- and R-values.
They also make changes to the common component data defs
easier and transparent for clients (no code changes, just
recompilation required).
Signed-off-by: Marcin Maka <marcin.maka@linux.intel.com>
Probes will extract data for several probe points in one stream
with extra headers. This app will read the resulting file,
strip the headers and create wave files for each extracted buffer.
Usage to parse data and create wave files: ./sof-probes -p data.bin
Signed-off-by: Adrian Bonislawski <adrian.bonislawski@linux.intel.com>
This reverts commit b90f4dd044.
The device id of rt715 and HDMI will be dynamic with this PR. This is
not friendly to UCM design. Let's deal with the id hole in machine
driver.
Signed-off-by: Rander Wang <rander.wang@intel.com>
Pipeline PCM0P and PCM0C in sof-cml-rt5682-kwd.m4 is wrongly
configured. This patch fix this error by removing redundent
'SSP' argument.
Signed-off-by: Amery Song <chao.song@intel.com>
This patch fixes build fail of testbench. The packed attribute
is added similarly as in IPC structs of other components. The
reported error with gcc 9.2.1 is:
sof/tools/testbench/file.c:408:11: error: converting a packed
‘struct sof_ipc_comp’ pointer (alignment 1) to a
‘struct sof_ipc_comp_file’ pointer (alignment 8) may result in
an unaligned pointer value [-Werror=address-of-packed-member]
408 | (struct sof_ipc_comp_file *)comp;
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
If mono is defined, dai index 3 is not used and DMIC uses index
4. Now sdw machine driver generates dai dynamically with consecutive
dai index. To align with machine driver, refine topology to also use
consecutive index.
Signed-off-by: Rander Wang <rander.wang@intel.com>
Add the PIPELINE_ID to the graph section name to
make them unique for the playback and capture pipelines
that are associated with the same SSP. Also fix the
comment while we're at it.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
This patch avoids the testbench to crash when file read or write
file open was not successful. E.g. invoking testbench with
incorrect input file name caused a segfault.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds force of scheduler type to EDF since it is the
only simplified scheduler version that is included to testbench.
The schedule_task_init_ll() stub is updated to call schedule_task_init()
to prevent a check for NULL run operation to fail. The patch also
changes the memory allocation to calloc() to clear the reserved data
to value NULL for similarity with rzalloc() in SOF.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds the missing call to end of test run. It prevents
the pipeline reset to print error traces about illegal state
change.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch sets in topology parsing core to zero for file reader,
file writer, and buffer since it was left uninitialized and caused
the core check in pipeline run to fail.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch retrieves the channels count either from sink or
source. The previous code failed for file read since source
is NULL. A similar kind of mistake also caused the period_bytes
to be calculated as zero.
Finally as code simplification the calculation of bytes is moved
to variable declaration to avoid duplicated statement.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds the initialization to testbench start code. Without
it the notification from buffer consume/produce causes segfault.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
wm8960 codec drivers the master clock and for s24le we cannot easily
derive the bitclk.
So, switch to s32le. SAI supports s32le format. The initial s23le was
added because topology was based on sof-imx8qxp-cs42888.m4 which uses
ESAI and that's limited to s24le.
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
For now we are using generic simple-card as a machine driver, and
the DAI name must follow certain pattern <dai-name>-<codec-name>.
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
This patch corrects the shown parameters orders for help text
and updates the copyright text style.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch fixes a mistake that forces generation of rate into
fs_inout matrix diagonal. The purpose of this test is to enable
SRC to pass equal input and output rate, so in case not equal
input and output rates the generator would not disable such
conversion if requested.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Probes are a feature that will allow user to extract and inject data
from/into buffers at runtime.
Basic flow is as follows:
1. Initialization of probes subsystem, allowing for simultaneous
configuration of DMA for extraction. If extraction DMA is not setup
during init, extraction probes will be disabled.
2. Configuration of probe points, preceded by DMA configuration in case
of injection probes.
3. Probes are now in operation and will send single multiplexed stream from
extraction probe points and inject data into specified buffers.
4. State of probes and associated DMAs may be retrieved via INFO functions.
5. Removal of probe points.
6. Removal of injection DMAs.
7. Deinitialization of probes subsystem.
Signed-off-by: Adrian Bonislawski <adrian.bonislawski@linux.intel.com>
Signed-off-by: ArturX Kloniecki <arturx.kloniecki@linux.intel.com>
This patch adds two new test topologies. One is for testing ASRC
timestamp retrieving from HDA and one for WM8804 slave SSP interface
for APL. It is useful with UP^2 board with HiFiBerry Digi+ SPDIF
interface.
The asynchronous mode token is switched on in ASRC capture and
playback pipelines. It switches on DAI skew tracking feature
in ASRC.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Up^2 boards have a DMIC connector. Add support for such DMIC add-on
boards. Also adjust iDisp interface DAI IDs to match the new
sof_pcm512x.c Linux machine driver.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
HiFiBerry DAC+ADC codec card also contains a line-in jack for analog
audio recording. This patch adds support for it.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
When new component will need to process audio data in two steps,
then temporary circular buffer will be needed. Also extra information
about data stream may be needed to choose right algorithm or assert data
compatibility.
Currently only 'comp_buffer' has such a possibility but it is component
defined in topology - with much wider capabilities - and shouldn't be
created inside component just to hold temporary data stream.
Use introduced structure in processing functions, move api responsible
for data processing from buffer to audio_stream module.
Signed-off-by: Karol Trzcinski <karolx.trzcinski@linux.intel.com>
DMIC01 is just useless for a user. After multiple rounds of
discussion, we agreed to remove numbers (which could be understood as
a mic position) or a frequency (which is misleading since it can be
updated to e.g. 96kHz by topology), so by default the DMIC interface
is called just that...
Conversely, we add a clear 16kHz qualifier for the low-frequency
path. While in theory the frequency can be changed with modifications
of the FIR filter, applications do need 16kHz support.
Also make sure we only use 'DMIC' for 'PCH-attached DMICs'. For
RT715-based solutions, the microphones can be analog, so use more
generic 'Microphones' description.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
This patch adds driver capability to capture with combination
of 96 kHz and 16 kHz sample rates from FIFO A and FIFO B by using
decimation factor 12 in FIR. The earlier capability for 96 kHz was
with single FIFO only due to lack of suitable decimation filter
for the 16 kHz output.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch mitigates the start transient in capture from rt715
codec. The start transient is DC pulse that can be attenuated
significantly with a high-pass filter. The pipeline macro
pipe-highpass-capture.m4 adds a 40 Hz second order IIR filter
into the beginning of pipeline. The volume control in this pipeline
is also set to a longer 400 ms ramp length (normally 250 ms) that
is sufficient to conceal PCM waveform issues before the IIR filter
settles to DC level.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Changes component driver registration to use comp_driver_info
as an element to be put into the drivers list. This way
comp_driver can be constant and comp_driver_info can be
marked as shared in the future.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Passes sof context pointer to sys_comp_init() function.
It will be needed in order to add comp_driver_list to
sof context.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Removes shared_ctx from ipc structure and add its members
directly to struct ipc. From now on ipc struct needs to
be shared to support SMP. It's done in order to eliminate
possible wrong pointer to shared_ctx, since it was a part
of cached data.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
This patch replaces in topology sof-hda-generic.m4 the use of macro
pipe-volume-capture.m4 usage with a new macro pipe-highpass-capture.m4.
The used 40 Hz cut-off is sufficient to suppress the DC pulse in the
beginning of capture from headset with minimal impact to other
applications such as recording music.
The capture volume ramp length is changed from 250 ms to 400 ms. The
longer ramp is feasible because the microphone path seems to open
at 500 ms from capture. It helps to attenuate the remaining noises
in the beginning of capture.
The patch also adds additional high-pass responses macros for
topology with different 20-50 Hz cut-off frequencies into
SOF/tools/topology/m4.
The changes for Matlab/Octave script example_iir_eq.m that
generated the filter coefficients are included here as well.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch increases the max. size to 4 kB. Such size allows
setting up e.g. 8ch 192 tap FIR. The multiple part configuration
IPC support has existed in the EQ component for a while and this
limit in topology has remained not updated.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Creates new mem_zone enum type for heap zones.
We don't want to leave them as flags and allow
zone combinations.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Removes zone argument from balloc related functions.
They always use RZONE_BUFFER, so passing something else
is very misleading, especially it changes nothing.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Extracts flags from zone to use them as a separate argument
during allocations. It allows for addition of new zones and
also is more clear this way.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
A public key signature of community key used to sign FW
binaries is added. The script can provide on output info if
evaluated FW image was signed with the key.
Signed-off-by: Lech Betlej <lech.betlej@linux.intel.com>
The Xtensa GCC build on APL platform can process about 40 taps
FIR filter so it is useful to have one such configuration. The
eq_fir_mid.txt is be applied with sof-ctl tool.
The patch contains the Octave script modification. The print of final
filter length is added to blob packer script to see the resulting
length when the filter is generated. The small filter spec change
helps the filter tool to achieve result that is close to requested
shape.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Detailed information from Platform Fx Extension, part
of the manifest may be useful for a deeper signed image
analysis.
Signed-off-by: Marcin Maka <marcin.maka@linux.intel.com>
Recreate gui for audio-tuning.appspot.com using SOF config. For IIR
filters only currently. Once DRC is ported then GUI can be ported as
well.
Signed-off-by: Curtis Malainey <cujomalainey@google.com>
Removes need to pass EDF task priority during initialization.
Also removes priority definitions, which were only used by
EDF scheduler. Priorities of EDF tasks are now deprecated.
We are scheduling based only on deadline.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Extracts task operations to separate struct. This way we can
add additional ops without need to endlessly adding parameters
to schedule_edf_task_init function.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Separates task init functions for all currently supported schedulers.
Some of the parameters are not common, so there is no need to
artificially extend function signatures.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Add the required virtual widgets to the BYT codec topology
to suppress the errors seen due to the dapm routes set up
in the machine driver and move them to the common header.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Add support for bdw-rt5677
Fix load issue with bdw codec toplogy issue, no SMP support.
Add virtual widgets.
Signed-off-by: Pan Xiuli <xiuli.pan@linux.intel.com>
This patch adds TGL topology for the DUT which has the
following audio configuration:
Max98357A speaker (I2S), ALC5682 headset codec (I2S),
DMIC, 4 HDMI devices.
Signed-off-by: Jairaj Arava <jairaj.arava@intel.com>
Signed-off-by: Sathyanarayana Nujella <sathyanarayana.nujella@intel.com>
A public key signature of Intel production key used to sign APL
binaries is added. The script can provide on output info if
evaluated FW image was signed with the key.
Signed-off-by: Lech Betlej <lech.betlej@linux.intel.com>
This script parses manifests included in sof binary and prints
extracted metadata in readable form.
It is particularly useful to get information about image signature
parameters.
Signed-off-by: Marcin Maka <marcin.maka@linux.intel.com>
Moving pcm params from component to buffer is the first
step to improve parameter propagation within pipelines. This commit
moves several pcm paremeters (framet_fmt, buffer_fmt, rate,
channels, chmap, except direction) to comp_buffer struct.
Some of specific parameters are moved to private host and
kpb data.
Signed-off-by: Bartosz Kokoszko <bartoszx.kokoszko@linux.intel.com>
This patch fixes DAI_ADD function call for speaker pipeline.
The function call had incorrect number of agruments passed
which was causing issues with playback.
Signed-off-by: WojciechX Wittbrodt <wojciechx.wittbrodt@intel.com>
This patch adds all the topology files related parts and two complete
test topologies to test ASRC playback and capture with APL platform.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds the ASRC component and the new tokens into topology
parser and testbench component loader.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds print of text ASRC into sof-logger for ASRC
originated traces instead of unknown.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The BYT-CR package only exposes SSP0 and SSP1, with SSP0 typically
used instead of SSP2 for the audio codec connection. Since it's proven
nearly impossible to patch the topology on the fly in the kernel,
let's brute-force generate topologies for all known BYT-CR platforms
using macros for the SSP number. The BE stream name remains constant
at SSP2-Codec since it's not modified by the kernel.
While we are at it, do the same for CHT platforms.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Removes volume component from KWD pipeline. It was only required to perform
pcm conversion, but since DAI is now capable of doing that, usage of
volume is deprecated.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Media pipe is missing the scheduling component, so move it after the dai
definition and add the scheduling component.
Signed-off-by: Jaska Uimonen <jaska.uimonen@intel.com>
This change adds stream map and channel map structures
used for channel re-routing and stream aggregation.
Signed-off-by: Slawomir Blauciak <slawomir.blauciak@linux.intel.com>
Reverts all changed media pipelines to again have 4000 ms
scheduling period. Change was introduced in order to workaround
firmware scheduling limitation, but with pipelines scheduled
separately we can revert it back.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>