Commit Graph

3979 Commits

Author SHA1 Message Date
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
Rajavardhan Gundi def4a9ffaf build: Generate separate .map and .lst files.
Signed-off-by: Rajavardhan Gundi <rajavardhan.gundi@intel.com>
2017-08-09 15:52:58 +01:00
Liam Girdwood 8083e91a99 topology: Add machine specific update for buffer and scheduling tokens
Allow machines to specify scheduling config in pipeline topologies.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-09 15:01:41 +01:00
Liam Girdwood c78d832441 topology: pipeline: Update pipelines to use new tokens
Update the pipelines to use the new buffer and scheduling tokens.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-09 15:01:41 +01:00
Liam Girdwood 85ed032295 topology: dsp: Add scheduling tokens to DSP platform files.
Add initial scheduling platform scheduling. TODO: fine tune the MIPS

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-09 15:01:41 +01:00
Liam Girdwood 31d540e413 topology: builder: Add support pipeline scheduling to topology
Allow topology pipelines to define their scheduling.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-09 15:01:41 +01:00
Liam Girdwood e50cccdae3 topology: Add token support for PCMs and components buffers.
Add topology tokens for PCM and buffer configuration.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-08-09 15:01:41 +01:00
Keyon Jie afbc689446 byt-ipc: fix a src/dst error
We should copy from [inbox_base + offset(0 here)] src to
msg->rx_data dst here, otherwise, copying to 0 dst will
crash the firmware here.

Reported-by: Luo Xionghu <xionghu.luo@intel.com>
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2017-07-07 12:10:14 +01:00
Liam Girdwood c52d42685d topology: Add build support for topology files.
Add support to build topology text files into binary files understood
by the drivers. This is a two stage build, the first stage is to
pre-process the files with M4 into regular alsa-conf format and the second
stage is to compile with the alsa topology compiler.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-07-06 16:52:14 +01:00
Liam Girdwood dd08ed7a19 topology: Add machine specific topology configurations.
Add some initial machine specific topology configurations that define
some simple pipelines for certain machines.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-07-06 16:49:37 +01:00
Liam Girdwood e52b9dd37a topology: Add initial TLV library.
Add initial TLV library that can be included and re-used by pipelines.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-07-06 16:48:06 +01:00
Liam Girdwood a7a3bc4d57 topology: Add M4 topology pre-processor macros
Add initial macros to simplify the construction of topology components and
pipelines.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-07-06 16:43:33 +01:00
Liam Girdwood 1c73054da6 topology: Add DSP specific topology configuration
Add initial configuration for DSP specific data. This data still requires
further tuning.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-07-06 16:41:09 +01:00
Liam Girdwood b8c9db4f6b topology: Add initial SOF topology pipeline definitions
Add pipeline and token definitions to allow creation of SOF topology
files. The files define standard pipelines and tokens that can be reused
to build machine specific topology files.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-07-06 16:39:29 +01:00
Seppo Ingalsuo 891235ea0e Fix long lines and other white space issues
This change fixes the warnings and errors returned by checkpatch.pl in
source code files eq_fir.c, eq_iir.c, fir.h, and tone.c.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2017-06-29 11:49:55 +01:00
Seppo Ingalsuo 4a00691b9e SRC: IPC updates and fixes v3
SRC sets the sink and downstream pipeline PCM rate, period_count and
period_bytes in src_params() according to received out_rate via IPC.

Fail in delay lines allocation results to -ENOMEM error.

Function call comp_set_sink_params() is renamed to
comp_buffer_sink_params().

Added void to functions and corresponding headers without parameters.

Plus white space and long lines fixes for all SRC source files.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2017-06-29 11:49:55 +01:00
Seppo Ingalsuo 54fbb1347d Component: Rename comp_set_sink_params to comp_buffer_sink_params
Rename to avoid confusion with the purpose of this function.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2017-06-29 11:49:55 +01:00
Seppo Ingalsuo 7bf86f5bb3 Add test bench SOF component types
Types SOF_COMP_FILEREAD and SOF_COMP_FILEWRITE are used used in host
test bench for test vector file I/O. These components are not used in
DSP firmware.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2017-06-29 11:49:55 +01:00
Seppo Ingalsuo c6faa66e39 Audio/buffer: Set alloc_size
The buffer->alloc_size was not set. It needs to be equal to
buffer->end_addr minus buffer->addr for circular buffers.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2017-06-29 11:49:55 +01:00
Seppo Ingalsuo a08edbf89f IIR EQ: Avoid issue with non-defined number of channels in configuration v2
Initialize EQ for max number of channels in configuration or switch
commands to avoid not set number of channels. A return value of -ENOMEM is
propagated in init functions and returned if allocation for memory fails.

Some trace output is added into EQ setup and some comments cleaned and
added.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2017-06-28 12:52:04 +01:00
Seppo Ingalsuo 7bb5530938 FIR EQ: Allocation bug fix and updates to configuration and switch cmd v2
A free of null pointer is fixed with this change. Also the possibility of
nondefined number of channels in EQ config or switch command is eliminated by
by initializing the FIR for max channels. An error of -ENOMEM is propagated
in functions and returned if allocation in config or switch response fails.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2017-06-28 12:51:07 +01:00
Seppo Ingalsuo a0a81ffbfa Tone: Bug fixes v2
The default tone frequency of 997 Hz was updated to a proper Q16.16 value.
Macros for tone frequency and gain were added to tone.h and a generic
float to fractional value conversion macro to format.h. Also some common
Q1.31 decibel constants were added. Tone function pointer set was moved to
tone_new() since it is not modified later in this component.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2017-06-28 12:51:07 +01:00
Liam Girdwood 246d4f79a6 pipeline: perform prepare() on the selected component.
prepare() is not being performed on the selected component. Fix this so
that all components including the selected are prepared in a pipeine.


Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-06-26 16:21:25 +01:00
Liam Girdwood a26c4cca98 ipc: byt: use SOF_IPC_FW_READY for boot notification
Use global SOF_IPC_FW_READY to notify FW boot,

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-06-26 16:07:06 +01:00
Liam Girdwood 9b241ae555 rmbox: make sure we close all files
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-06-15 14:36:24 +01:00
Liam Girdwood b424e981ec rimage: free ELF program and section allocations
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-06-15 14:34:01 +01:00
Liam Girdwood 321aa0504d rimage: show correct error on write failure.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2017-06-15 14:33:39 +01:00