ACE_1.5 and ACE_2.0 use only two clocks for DSP cores. First is WOVRCO and
second is ACE IPLL.
IPLL allows to configure it to work like LP RING Oscillator Clock or HP
RING Oscillator Clock. Currently, the driver does not allow this, so I
remove the frequency that cannot be achieved anyway.
Clocks frequencies:
WOV: 38.4 MHz
IPLL: 393.216 MHz
Signed-off-by: Tomasz Leman <tomasz.m.leman@intel.com>
This patch is changing value of slow clock in response for FwConfigGet
from LP clock to the lowest clock is section "slow clock".
Signed-off-by: Tomasz Leman <tomasz.m.leman@intel.com>
Add a sparse-specific workaround for the incompatibility with
picolibc (the new Zephyr default)
https://github.com/zephyrproject-rtos/zephyr/issues/63003
Also fix comment in commit 2a9473a17b ("app/prj.conf: disable PICOLIBC
with CONFIG_MINIMAL_LIBC=y"): we don't need to disable PICOLIBC
_everywhere_; we only need to disable it when using sparse.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
Earliest deadline first scheduling added, based on module
period
Detailed description in zephyr_dp_schedule.c
Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
For LL modules it is very straightforward - all LL modules
are called one by one in every LL pipeline tick, so module's
period is always equal to LL pipeline period
For DP modules a period has different meaning. As DP
is called "on demand" - whenever it is ready, it may not be
scheduled at every LL tick (and usually is not)
A period meaning for DP is "a time when the module must finish
its job and provide data to next module in pipeline
or the data flow will be corrupted (a glitch)"
In common case the period is calculation is based on module's
OBS - if module provides OBS bytes of data in each cycle, it MUST
finish at least before the next module drains the buffer
In some special cases - modules producing a variable bitrate
(like MPEG) or not producing audio data at all (phrase detector,
speech recognition, etc.) - the module may set the period itself
during prepare operation
This commit adds calculation of DP period. This value will be used
in following commit as a base for deadlines calculation in EDF
Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
remove buffer ops from selector.c
this is a continuation of changes
from commit 4a03699
Signed-off-by: Tobiasz Dryjanski <tobiaszx.dryjanski@intel.com>
remove buffer ops from google_rtc_audio_processing module
this is a continuation of changes
from commit 4a03699
Signed-off-by: Tobiasz Dryjanski <tobiaszx.dryjanski@intel.com>
remove buffer ops from google_hotword_detect module
this is a continuation of changes
from commit 4a03699
Signed-off-by: Tobiasz Dryjanski <tobiaszx.dryjanski@intel.com>
remove buffer ops from drc module
this is a continuation of changes
from commit 4a03699
Signed-off-by: Tobiasz Dryjanski <tobiaszx.dryjanski@intel.com>
The finalize_wave_files() should be called to update the WAV header to be
valid.
This should be only done when demuxing to files.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
The motivation is depicted in
https://github.com/thesofproject/sof/pull/7801
This commit revamps smart_amp component design to two-layer structure, i.e.
generic layer and inner model layer.
Generic layer is the common part of smart amp process which can be regarded
as the glue code interacting between SOF component ops and inner model.
While inner model may have various implementations respectively for
solution suppliers in a modular way.
Signed-off-by: Pin-chih Lin <johnylin@google.com>
DP components need to work flawlessly when run on a different
core than that of its connected peer modules.
To achieve this, a cross core producer-consumer safe
dp_queue should be used
DP queue can only be connected to modules that use
sink/src interface, so DP modules need to use it
obligatory.
To connect dp_queue into modules chain, double buffering
method is used:
- in LL task DP module is processed as an LL module, but the
copy method is copying data from/to audio_streams
to/from dp_queues
- the main DP module processing takes place in DP task
(in separate Zephyr thread). The tread may be bind to
separate core
Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
Sink and source is the main interface for DP processing
in current pipeline and the main interface for all
processing in pipeline 2.0
Pointers to them must be available to modules directly.
This commit adds pointers to sink/sources to module structure
Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
buf calculation size has been changed to be always 2xmax(IBS,OBS)
to allow free read/write in various data chunk sizes
and execution periods (of course in/out data rates must be same)
detailed examples in dp_queue.h file
method and fields allowing connection dp_queues to a list added
Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
there's a big confusion in naming: meaning IBS/OBS from
module point of view is opposite to meaning of OBS/IBS
from buffer or queue point of view
This PR changes
- IBS to min_available
- OBS to min_free_space
names like this are less likely to cause confusions
Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
The precision check condition has been simplified, the unsigned value
cannot be negative. Added definitions containing an error message instead
of using a constant variable.
Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
Added a null string terminator to be sure that strings read from a file are
terminated correctly.
Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
The timestamp printing process has been simplified by eliminating the
dynamic creation of the formatting string. All necessary parameters are now
passed directly to the printing function.
Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
Added checking of value returned by file operation functions. In case of an
error, message is printed and error code is returned.
Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
The clock_gettime function only returns information that an error occurred.
The error code should be taken from the errno variable.
Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
String terminator was added to the buffer with a list of section names
in the elf file. Added check to the section name index to make sure it
doesn't go beyond the buffer size.
Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
If fseek reports an error, the error code set in errno is returned.
Improved handling an error during reading from a file. Now it distinguishes
between an error reported by the fread and insufficient data in a file.
Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
Added checking of the value returned by fseek function and added memory
release when an error is detected.
Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
The values assigned when declaring variables were overwritten in the code.
Redundant initialization was removed.
Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
remove buffer ops from dcblock module
this is a continuation of changes
from commit 4a03699
Signed-off-by: Tobiasz Dryjanski <tobiaszx.dryjanski@intel.com>
remove buffer ops from mux module
this is a continuation of changes
from commit 4a03699
Signed-off-by: Tobiasz Dryjanski <tobiaszx.dryjanski@intel.com>
remove buffer ops from multiband_drc module
this is a continuation of changes
from commit 4a03699
Signed-off-by: Tobiasz Dryjanski <tobiaszx.dryjanski@intel.com>
remove buffer ops from mfcc modules
this is a continuation of changes
from commit 4a03699
Signed-off-by: Tobiasz Dryjanski <tobiaszx.dryjanski@intel.com>
remove buffer ops from igo_nr module
this is a continuation of changes
from commit 4a03699
Signed-off-by: Tobiasz Dryjanski <tobiaszx.dryjanski@intel.com>
remove buffer ops from eq_fir and eq_iir modules
this is a continuation of changes
from commit 4a03699
Signed-off-by: Tobiasz Dryjanski <tobiaszx.dryjanski@intel.com>
The file is found from subdirectory src/audio/google. Without
fix if CONFIG_COMP_GOOGLE_HOTWORD_DETECT is enabled build fails:
CMake Error at sof/zephyr/cmake/modules/extensions.cmake:424
(add_library):
Cannot find source file:
/src/audio/google_hotword_detect.c
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
FW infrastructure shall support buffering of historic data
from 1ch up to 6 channels 24bit samples in 24bit container.
For this reason, the heap should be extended.Increase HEAPMEM_SIZE
by 0x90000 because for audio format 16000Hz/6ch/24bit
history_buffer_size = 16 * 6 * 3 * 2100s = 604800 bytes (0x93A80)
Signed-off-by: Jaroslaw Stelter <Jaroslaw.Stelter@intel.com>
Starting from Zephyr commit f0daf904bb02, CONFIG_PICOLIBC is on by
default.
PICOLIBC does not seem compatible with sparse yet:
https://github.com/zephyrproject-rtos/zephyr/issues/63003
Even if it were compatible with sparse, it seems like a pretty big
change that we should not immediately and blindly accept.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
We need to care about audio user experience and peak MCPS
usage in production topologies.
The alsabat test is disturbed by the longer ramp so the
change can be reverted from nocodec topologies. Those
topologies are never used by end users. Also the peak MCPS
mitigation is not relevant for test topologies, as long as
higher MCPS is not triggering error reports. The curve
duration is restored without explicit set to the default 20 ms.
Fixes: #8238
Fixes: d0d74a477f
("Tools: Topology2: Change in capture gain
curve_duration to 50 m")
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The pipeline-common.conf helps us to define several
common pipeline attributes include pipeline index,
there is no need to define pipeline index in each
pipeline class definition if pipeline-common.conf
is included.
Signed-off-by: Chao Song <chao.song@linux.intel.com>
remove buffer ops from crossover module
this is a continuation of changes
from commit 4a03699
Signed-off-by: Tobiasz Dryjanski <tobiaszx.dryjanski@intel.com>