Make sure we validate all config and params variables and complain
if there are omissions or errors.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Balance the heap block map size out to better fit real world usage by
reducing small blocks to create extra larger blocks.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Make the host API and IPC to set and get component runtime data and values
generic with no bespoke commands at the IPC level.
Create a generic structure that descibes the type and size of data and
whether that data is appended to the IPC message or is available to
be DMAed from host.
Update the components to use the new structure. Some components like
SRC, tone and tone still require some work to export thier ABI.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
This patch adds to ipc.h enabling for two new components to read and
write test vectors via file I/O. They are specific to test bench usage
on development computer only and are not real SOF components. This update
avoids need to edit this file for test bench build.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch fixes issues in setting up the tone generator for correct
sample rate and channels number. Component IPC was missing latest needed
changes. The buffers handling issue is fixed. Obsolete commented code is
removed.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
These conversion filters are no more used and will be replaced later with
new. The deletion is because the stop-band spec was changed from 0.51xFs
to 0.50xFs (no intentional aliasing of transition band) so the file
names of new default high-quality filters will be with different filename.
The filter spec is appended to file name to differentiate different
bandwidth filters for same rates fraction.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch fixes bugs in sink and source buffers handling and adds
support for short coefficient type to save RAM in platforms with less
space such as BYT. The patch introduces also a RAM saving minimum
conversions set between 16, 44.1, and 48 kHz. A new possible rate 18.9 kHz
was added to supported rates indication bits. SRC filters quality is also
adjusted for lower default performance. The higher performance will need
>16bit coefficients usage. The larger conversion set and 32 bit
filter coefficients can be easily restored with the SRC tools in rimage.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Some pipelines can be used to service DAIs before data is sent on to
other processing pipelines. Add scheduling and format info to DAI
pipelines.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Current definitions are missing 12 and 64 kHz, have
typos (11250, 22500), list a weird 40kHz and don't
have extension capabilities for non-standard rates
Before we create ABI problems with the Linux kernel, let's add all
the sampling frequencies needed before we submit stuff upstream
(the same list needs to be reflected in the kernel include/uapi)
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Improve support for I2S and DSP modes alongside using topology data to
define the mode configuration. Add trace errors to reject any unsupported
configurations.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Some components have multiple sources/sink and the correct host side
component must be used when installing params. Make sure the correct
component is used here by tracking the previous component and passing it
to the params installation.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Messages starting at offset 1 remove any ambiguity over whether the
message has been constructed correctly.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
SRC in default full rate and high quality configuration is quite large.
free up some memory on BYT and CHT by using only one SRC.
TODO: Provide the SRC with configuration data for supported rates and
quality in order to significantly reduce it's footprint.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Complain loudly in trace if we have components overruning or underruning
buffers. Components should check buffer free/avail before use.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Perform a check in the copy() function to make sure there is enough
data to copy to/from host buffers.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Add an XRUN handler into the pipeline to report bag overrun and underrun
from component buffers to the host. An XRUN on a component will now cause
a IPC XRUN message to each PCM interface source/sink to the component.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Make sure the preloader can detect when all buffers are loaded prior
to trigger and add a limiter to make sure we dont pre-load forever.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Remove the unused pointer to host parameters in params(). This was only
useful to the host component. Provide some component frame configuration
variables to give more flaxability than host params.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Use a generic structure containing common DAI settings for configuration.
This structure also contains a tail of DAI specific data that can also
be used by DAI drivers.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
The wrong name is used for naming and may collide with the capture stream
on the same DAI.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Give the ALSA HW refinement code more headroom for buffer calculations
to provide more buffering options.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Improve IPC error reporting and values to host by tracing all failures
and making sure errors are returned when detected.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>