Add macro for binary blob generation for muxdemux. With this macro the
stream routing matrix will be easier to visualize and manipulate.
Signed-off-by: Jaska Uimonen <jaska.uimonen@intel.com>
Bit and byte manipulation macros are needed for building binary blobs,
so add them. Add also macro to generate sof_abi_version.
Signed-off-by: Jaska Uimonen <jaska.uimonen@intel.com>
This updates the minimal host buffer size to the
minimum value which enables sefe draining for all
pcm parameters.
Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com>
This patch changes the order of members in comp_data
struct to improve memory access for related data.
So now data that are commonly used together like *state*
and *state_log* are put next to each other so fewer cache
reads are needed.
Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com>
This patch moves the update of buffered data during
draining from buffering function to the caller
function.
Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com>
This patch changes the error message caused by
no bytes to be buffered from "error" to warning
as this is not crirical error.
Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com>
This patch reworks the calculation of buffered data.
NOTE! We only keep record of buffered data up to
the size of history buffer as there is no usecase
beyond that.
Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com>
This patch adds the condition that if we are
in draining or init draining state and
pipeline_copy() appeared before we actually
started the draining, plus the amount of new data
can overwrite the data staged for draining then
we should postpone buffering procedure for next
period. At that time we assume draining task will have
already drained some samples therefore making a space
for new ones.
Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com>
This additional variable says how much data can be
written to history buffer and won't cause overwrite
of data staged for draining. It is important to realize
the history buffer is circular and its data gets
overwrite all the time. So *free* in this case doesn't
mean "amount of bytes before buffer is full". History
buffer is *full* 99% of the time. However before the
draining starts we "freeze" history buffer data
so new samples can be written only if:
HISTORY_BUFFER_SIZE - HISTORY_DEPTH > 0
The result of above subtraction is what we call "free"
Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com>
This patch adds new struct called "history_data"
which contains all variables related to
history buffer namely, its size, amount of free and
available data as well as address of current write
buffer (history buffer is a collection of smaller
buffers)
Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com>
This patch changes the name of "dd" structure to
more meaningful "draining_data". Therefore code
is more readable.
Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com>
This patch changes the name of the "hb" struct to
more meaningfull "history_buffer". Therefore
code is more readable.
Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com>
This short helper not only groups and hides some infrastructure level
initialization steps but also guarantees that none of it is
missed in the component implementation.
It is easier to group the steps in internal function rather
then explain them and remember to add to every new component
(especially that initialized comp_dev members are used internally).
Signed-off-by: Marcin Maka <marcin.maka@linux.intel.com>
MCU2SHP means processor to peripheral that is memory to device.
SHP2MCU means peripheral to processor that is device to memory.
There was a confusion in the initial patch, fix this now to
have the correct load addresses.
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
Introduce dummy trace functions for when CONFIG_TRACE
is not set to avoid undefined reference to function error.
src/ipc/handler.c.o: In function `ipc_glb_tplg_buffer_new':
src/ipc/handler.c:1094: undefined reference to `trace_on'
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
This provides basic guidelines to clear up how to allocate
and use DAI private data.
Signed-off-by: Slawomir Blauciak <slawomir.blauciak@linux.intel.com>
This allows the firmware to become aware of
the programmed format on ALH DAIs.
The change is backwards compatible,
in-case of ABI mismatch, the data will be filled with 0s,
which is consistent with previous values.
This change is required in the case of pipelines,
that contain components capable
of modifying the parameters of a stream, for example (de)mux.
Signed-off-by: Slawomir Blauciak <slawomir.blauciak@linux.intel.com>
Add targets that are meant to be used after defconfig,
to apply configs from <arch>/configs/override on top of defconfigs.
Signed-off-by: Janusz Jankowski <janusz.jankowski@linux.intel.com>
CMake regeneration condition should depend on directory to automatically
update when new defconfigs are added.
Signed-off-by: Janusz Jankowski <janusz.jankowski@linux.intel.com>
With virtualised clients it can happen, that while one client is
performing audio streaming over a pipeline, another client is adding
components to a new pipeline, that later will be connected to the one
in use. This can happen, e.g. when streaming is taking place on the
host and a guest VM is booting. To support this we need to ignore
newly added but not yet finalised components while traversing
pipelines. Components are in this states after they have been
connected but before the respective pipeline has been finalised, i.e.
before SOF_IPC_TPLG_PIPE_COMPLETE has been issued for it.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
pipeline_for_each_comp() is called recursively, Reduce its stack
usage by reducing the number of parameters and using a structure
instead.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
SMEX is new tool designed to create ldc file content,
so this ability in rimage should be removed to avoid
duplication.
Signed-off-by: Karol Trzcinski <karolx.trzcinski@linux.intel.com>
rimage will not be responsible for ldc file creation so logger
should points valid tool.
Signed-off-by: Karol Trzcinski <karolx.trzcinski@linux.intel.com>
SMEX (*SOF Metadata EXtractor*) is a tool used to extract needed
information from SOF source code and output files and then save
them in convenient form like logs dictionary file (*ldc*).
After full integration of SMEX with SOF build system,
rImage with no sof specific ldc generator code can be moved
outside as a common external tool.
Signed-off-by: Karol Trzcinski <karolx.trzcinski@linux.intel.com>
... as reported by
https://github.com/zephyrproject-rtos/ci-tools/blob/cf55a47d52d/scripts/check_compliance.py
-m Codeowners
Thanks @jajanusz for the help.
For src/[include]/host, I tried some tig blame and git log to find
potential renames, but I gave up when I found that commits
e20217abc7 and f081a20de9 (for instance) added or moved some
patterns that already did not match anything at the time.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
As the number of configuration options is increased there is a need
to clearly specify presets that reflect features options. Specifically
the change adds option to enable Low Power Sequencer (LPS) and
Low Power Ring oscillator together.
The approach is based on keeping generic configuration in configs directory
while the override directory contains only incremental delta information.
The compilation flow assumes using make overrideconfig command. In example:
make cannonlake_defconfig
cp ../src/arch/xtensa/configs/override/cannonlake_chrome.config
override.config
make overrideconfig
make bin
Signed-off-by: Lech Betlej <lech.betlej@linux.intel.com>
The change is provided to address issues reported by users who try
to execute workloads that exceed computing capacity provided by
LP RO clock.
On the other hand motivation to have a canary settings to check
FW pipelines utilization is diminished as infrastructure improvements
to measure compute utilization per component are introduced.
Signed-off-by: Lech Betlej <lech.betlej@linux.intel.com>
This patch provides an optional support for codec master mode and uses
a macro to change the frame sync as needed. The scheduling is also
changes to to DMA instead of TIMER.
The user is still required to manually copy the desired topology as
sof-tplg/sof-apl-pcm512x.tplg, but a manual configuration of the ACPI
initrd overlays and BIOS settings is required as well, so there's no
turn-key solution possible anyways.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Enable 3 simple test with host-testbench:
volume, src and eqiir
Usage:
./scripts/build-tools.sh -t
./scripts/host-build-all.sh
./scripts/host-testbench.sh
Signed-off-by: Pan Xiuli <xiuli.pan@linux.intel.com>
Script is meant to be used as standalone tool,
so it should have executable file attribute.
Signed-off-by: Janusz Jankowski <janusz.jankowski@linux.intel.com>
Non-critical drifts should be traced as warnings (WARN,
yellow color), not errors since the system is expected
to recover in this scenario.
Signed-off-by: Marcin Maka <marcin.maka@linux.intel.com>
Add generic dmic kwd template.
Need to define flowing variable to make it work:
CHANNELS: channel for the DMIC
KFBM_TYPE: kfpm or vol-kfpm
DMIC_PCM_48K_ID: PCM ID for 48K DMIC
DMIC_PIPELINE_48k_ID: pipeline ID for 48K DMIC
DMIC_DAI_LINK_48K_ID: dai link ID in machine dirver for
48K DMIC
DMIC_PCM_16k_ID: PCM ID for KWD 16K DMIC
DMIC_PIPELINE_16k_ID: pipeline ID for 16K DMIC
DMIC_PIPELINE_KWD_ID: pipeline ID for KWD
DMIC_DAI_LINK_16k_ID: dai link ID in machine driver
for 16K DMIC
Signed-off-by: Pan Xiuli <xiuli.pan@linux.intel.com>
2 flags have been added for use during buffer instantiation:
SOF_BUF_OVERRUN_PERMITTED and SOF_BUF_UNDERRUN_PERMITTED,
along with struct sof_ipc_buffer member fields flags and reserved.
Flags field is supposed to hold the above-mentioned flags to allow
some control over XRUN behaviour, i.e. prevent XRUN on buffers which
are allowed to under/overrun by design.
Also added reserved field to the structure in case it comes in handy
some time in the future.
Signed-off-by: Artur Kloniecki <arturx.kloniecki@linux.intel.com>
After the cleanup few elements of the API are no longer used/accessed.
This allows for ABI simplification in the future if we so decide.
Signed-off-by: Artur Kloniecki <arturx.kloniecki@linux.intel.com>
Few artifacts of the past were left after dependency removal. This patch
is there to address that.
Signed-off-by: Artur Kloniecki <arturx.kloniecki@linux.intel.com>