Commit Graph

6005 Commits

Author SHA1 Message Date
Liam Girdwood 6aebc6e26b drivers: ssp: Improve SSP I2S and DSP mode generation from topology.
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>
2017-08-30 22:08:58 +01:00
Liam Girdwood 4ca4028d2c Revert "rimage: remove flat file builder."
This reverts commit 072fb5c43f.
2017-08-27 17:11:06 +01:00
Liam Girdwood 91bee9eb50 Revert "rimage: update to new SOF driver file format."
This reverts commit 03acfd640d.
2017-08-27 17:10:08 +01:00
Liam Girdwood a80e2f84cc comp: mixer: make error trace messages non verbose
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-25 21:08:07 +01:00
Liam Girdwood 50be05b950 pipeline: params: Use correct host side comp when installing params.
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>
2017-08-25 20:15:40 +01:00
Liam Girdwood 3d640ff6af comp: dai: Verify config ib params() and be verbose about any errors
Verify the configuration in params and send any errors to host and trace.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-25 19:56:59 +01:00
Liam Girdwood 26e11996b6 comp: mixer: calculate frame and period bytes in params().
TODO: need to check all sources for params.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-24 22:12:25 +01:00
Liam Girdwood 0f8737e2a0 comp: volume: provie additional trace on prepare() errors
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-24 22:09:25 +01:00
Liam Girdwood 6c40c58532 ipc: make sure all messages start at 1 instead of 0 to simplify debug
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>
2017-08-24 22:06:06 +01:00
Liam Girdwood 5ca8e8d39c topology: Remove second SRC from BYT/CHT default topologies
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>
2017-08-24 21:52:00 +01:00
Liam Girdwood da9108adff topology: test: Add new test topologies to help with component debug
Add a simple passthrough and a passthrough with volume.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-24 21:49:08 +01:00
Liam Girdwood 7fb7598bc3 rmbox: Add EQs, SRC and Tone components to trace output
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-24 17:10:49 +01:00
Liam Girdwood 803f33a676 comp: buffer: complain loudly if componenst try to under/over run buffers
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>
2017-08-23 23:57:08 +01:00
Liam Girdwood 6d5723dfd6 comp: buffer: condense buffer status trace data.
Condense the buffer status data into fewer trace lines.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-23 23:55:33 +01:00
Liam Girdwood 4897246c75 ipc: component config must always be after comp header.
State this to be obvious. TODO: merge into 1 structure to enforce this.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-23 23:54:15 +01:00
Liam Girdwood a68343fee8 comp: host: make sure we have enough data to copy to/from host
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>
2017-08-23 23:52:00 +01:00
Liam Girdwood c73ff5c16d ipc: byt: remove comment
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-22 22:34:46 +01:00
Liam Girdwood b0df61d04e ipc: stream params: Add reply for stream params.
Stream params has it's own reply message so use it.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-22 22:34:27 +01:00
Liam Girdwood 9ec831b137 comp: volume: use XRUN handler to report XRUNs
Use the new XRUN API to report XRUNs to host and trace.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-22 22:33:52 +01:00
Liam Girdwood bc83a0e147 component: xrun: Add XRUN convenience APIs for notification and trace
Add a simple convenience API to allow components to report XRUNs

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-22 22:32:21 +01:00
Liam Girdwood a1da5bcc8d pipeline: xrun: Add XRUN initial handler into pipeline
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>
2017-08-22 22:31:04 +01:00
Liam Girdwood 2d5f55ca5f byt: mailbox: fix mailbox size.
4k is correct size.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-22 22:24:17 +01:00
Liam Girdwood 7c43aefb6f trace: cleanup: cleanup some trace.
Simple cleanup of some trace calls.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-21 20:33:49 +01:00
Liam Girdwood 8c0338e349 pipeline: preload: Fix preload completion detection and add limit
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>
2017-08-21 20:33:49 +01:00
Liam Girdwood 0f1a8fd771 comp: volume: make sure we only calculate buffer positions once.
Position was being calculated in twice in the copy funcs.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-21 20:33:49 +01:00
Liam Girdwood 2126e25089 ipc: reply: Add message replies to component creation.
Make sure we return an error or 0 after component creation.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-21 20:33:49 +01:00
Liam Girdwood 2cfaebe1f0 component: params: removed unused host params arg in params() config API
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>
2017-08-21 20:33:49 +01:00
Liam Girdwood c69a7516ef topology: Add simple playback passthrough pipeline with volume.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-21 20:29:01 +01:00
Liam Girdwood 08adb55f0b topology: Include DAI format in pipeline definitions
Make sure we allow different DAI formats in pipelines.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-21 20:29:01 +01:00
Liam Girdwood 3d8e7478a4 topology: Add sample bits to DAI_CONFIG
Add a token for number of bits in a sample for DAI configs

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-21 20:29:01 +01:00
Liam Girdwood ec2198621d dai: config: Use a generic structure for DAI configuration
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>
2017-08-21 16:57:28 +01:00
Liam Girdwood 2436d794a3 topology: dai: Fix DAI tokens to avoid naming colision
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>
2017-08-16 20:35:55 +01:00
Liam Girdwood 0a08a62e05 topology: pipelines: give more headroom for buffer size refinement
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>
2017-08-16 20:34:01 +01:00
Liam Girdwood 98e1dc5a89 ipc: improve error reporting and return values
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>
2017-08-15 16:37:40 +01:00
Liam Girdwood 14dee1a218 ipc: pipeline: Add pipeline position/timestamp readback to IPC
Allow the IPC to send and receive pipeline position and timestamp data.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-15 16:18:19 +01:00
Liam Girdwood 46f30ceb7c pipeline: timestamp: Add support for pipeline timestamping
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>
2017-08-15 16:10:28 +01:00
Liam Girdwood b67b0c0b6f ipc: reply: make sure replies can return negative errors
Add support to add negative error values to IPC replies.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-15 16:02:01 +01:00
Liam Girdwood df091b0d09 component: add 64bit position counter to each component
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>
2017-08-15 15:56:33 +01:00
Liam Girdwood 185ec6ab20 trace: comp: Make high frequency trace output verbose level
make sure our high frequency component and pipeline trace uses verbose
trace level.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-15 15:52:06 +01:00
Curtis Malainey 6bf480c4f8 ipc: Use unsigned defines to prevent negation when shifting
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>
2017-08-10 20:03:15 +01:00
Liam Girdwood 3f5847c3d2 platform: dma: add host DMA timeout macro
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>
2017-08-10 16:54:51 +01:00
Liam Girdwood ae73307721 platform: cleanup platform header an remove unused macros
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-10 16:53:30 +01:00
Liam Girdwood 9b22986695 static pipeline: move static SSP config into static pipeline.
Move the  platform SSP configs into a the static pipeline

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-10 16:37:18 +01:00
Liam Girdwood 4d0e197e07 pipeline: move static scheduling params to static_pipeline.c
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>
2017-08-10 16:30:11 +01:00
Liam Girdwood fb1d0047e2 pipeline: static: move static buffer sizes out of platform header
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-10 15:58:06 +01:00
Liam Girdwood d164e00a54 wait: fix potential race if condition completes close to timeout
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>
2017-08-10 15:23:17 +01:00
Liam Girdwood 3488cce9f9 core: Add support for pipeline creation and scheduling via IPC.
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>
2017-08-10 12:28:24 +01:00
Curtis Malainey 974a577c23 Incorrect trace variable name
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>
2017-08-10 12:22:50 +01:00
Liam Girdwood 71a35c317b trace: provide locking around trace output.
Make sure trace mailbox writes are atomic and provide reef context.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-09 17:48:50 +01:00
Liam Girdwood 14e1310bb1 arch: xtensa: generate a disassembly output fro debug.
Also generate a disassembly with no interleaved source for easier
memory debugging.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-09 16:00:31 +01:00