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>
Allow pipeline host and DAI components to be timestamped in a platform
specific manner so that host DMA & DAI DMA position alongside any local
DSP timestamp can be returned to the host drivers.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Components will now each have a 64bit position counter that will indicate
the processing position in bytes for each component. This can be used
by time stamping, trace and debug.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
If values using in SOF_GLB_TYPE are > 0x08 then the highest bit is set. If this
bit is set then when the data is shifted back (for example in iGS in intel-ipc)
it will shift arithmetically and leave the sign bit which will cause comparisons
to fail. Ex:
#define FOO 0x08
#define BAR 0x08U
#define LSHIFT(x) (x << 28)
#define RSHIFT(x) (x >> 28)
int main() {
printf("%x, %x\n", RSHIFT(LSHIFT(FOO)), RSHIFT(LSHIFT(BAR)));
// fffffff8, 8
}
Singed-off-by: Curtis Malainey <cujomalainey@google.com>
Host DMA needs it's own timeout as its not bound to any synchronous data
transfer timings.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Move all the static scheduling params out of the platform headers and into
the static pipeline source as they are no longer used by dynamic pipeline
code.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
The completion condition may complete very close to the timeout. This will
result in an error being returned alongside completion. make sure we dont
return an error in this case.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
This is a large tightly coupled patch that adds support for pipeline
definition and scheduling configuration via host IPC.
The intention is that hosts can create and configure pipelines dynamically
at runtime based on use case. This involves defining a pipeline topologies
and scheduling configuration. It also includes configuration of
individual components within a pipeline.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Minor debugging issue, when verbose trace is turned on it will not compile
because these variables are incorrect.
Signed-off-by: Curtis Malainey <cujomalainey@google.com>