We are going to have more hashing function,
so they should be named after hashing algorithms.
Signed-off-by: Janusz Jankowski <janusz.jankowski@linux.intel.com>
New version of manifest introduced with TGL platform
uses SHA384 for component hash.
Signed-off-by: Janusz Jankowski <janusz.jankowski@linux.intel.com>
Registers low latency scheduler with DMA multi channel
domain as scheduling source. This way we can finally get rid
of scheduling code from DW-DMA driver and DAI component.
Functionally it works the same as the previous implementation,
but transfers scheduling layer to the right places.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Adds PLATFORM_DW_DMA_INDEX definition. This allows
to access this value from the generic API.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Renames DMA_AGGREGATED_IRQ to DW_DMA_AGGREGATED_IRQ
definition. This is more appropriate as it's not generic
DMA setting.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Implements DMA scheduling domain. It allows to initialize
another low latency scheduler and schedule on any DMA channel.
The functionality stays the same as the one already done in
DMA drivers e.g. DW-DMA.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Adds PLATFORM_MAX_DMA_CHAN definition to every platform.
This way generic API can retrieve this information.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Removes HDA_DMA_MAX_CHANS definition as it's not needed.
We can directly use the number of allocated channels.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Moves CAVS_PLATFORM_NUM_DMACS definition to specific platforms
and renames it to PLATFORM_NUM_DMACS. This way we can access
to the number of platform DMAs from generic code.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Adds scheduling_source field and dma_is_scheduling_source
function. It allows for easy identification whether particular
DMA channel is the source of pipeline scheduling.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Adds comp_is_scheduling_source function, which checks whether
component is the one used as a scheduling source for the pipeline.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Adds core to dma_chan_data structure. This way we can
easily identify which core currently owns the DMA channel.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Adds preload_task to pipeline. This task is only
allocated and initialized, when pipeline needs to be
preloaded with data e.g. render pipe scheduled on DMA irq.
It's always an EDF task, so we make sure it's get scheduled
no matter if interrupt was triggered or not.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Changes implementation of pipe_task allocation and initialization
to happen in prepare call instead of during pipeline creations.
It might be that the pipeline will never be used.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Changes copy method for host working in one shot mode.
Blocking copy replaces interrupt based copy. In an effort
of extracting DMA interrupt based scheduling from DMA
to scheduler we need to minimize number of irq sources
in our flows. This patch also changes the interrupt
based implementation of traces copying through DMA.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Adds interrupt operation and operation type to DMA API.
This is the first step in excluding DMA interrupt handling
to schedule layer.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Fixes stack dump procedure for exceptions happening in interrupt
handlers. Stack base and size haven't been set to the interrupt's
one in current task context, so when exception happened during
interrupt processing we've got SOF_IPC_PANIC_STACK cause instead
of the real one.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Removes host_pending from ipc structure, because it's no
longer needed. Scheduler will automatically throw an error,
when we'll try to run not completed task.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Changes ipc task implementation, so it accepts new messages from
host in a complete task callback. This way we will avoid the
situation, where host will send another message before we
truly complete current ipc task.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Change the waiti implementation to panic only if we're
lowering current interrupt level. In some rare cases
(like entering D3 for some platforms) we don't care,
because DSP will be disabled anyway.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Adds complete callback to task. Some EDF tasks will need to have
additional callback on task completion, which will be executed
in critical section along the setting task state to complete.
Doing it during regular execution is not enough, because it's done
on passive level and we want to avoid any race condition.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Changes priority of IPC and IDC tasks. They are always scheduled
as EDF tasks, where order of scheduling is based on deadline
and priority is meant for special tasks e.g. IDLE or ALMOST_IDLE.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Fix the core-isa headers for HSW and BDW.
Provide a virtual threadptr register in the memory map using a linker
area below the stack. This can then be referenced instead of the register
for ISAs that dont support threadptr.
This patch also includes initial vthreadptr support for HSW/BDW platforms.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Moves idc implementation to cavs drivers instead of keeping
it in generic xtensa arch directory. IDC is specific for
SMP cAVS platforms.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
We need to switch stacks before check for spurious interrupt,
because otherwise we will jump and try to restore stack pointer
from the wrong location.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Runs interrupt handlers for cascaded interrupts in non atomic
context. Otherwise we are blocking other cores during execution,
which is not needed, since we only need to protect integrity of
the list.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Runs interrupt handlers for cascaded interrupts in non atomic
context. Otherwise we are blocking other cores during execution,
which is not needed, since we only need to protect integrity of
the list.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
When triggering a pipeline, containing a mixer in the playback
direction, all input pipelines have to be considered. However, this
isn't applicable if the mixer is used in the capture direction. This
patch adds the missing check to mixer_trigger().
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This patch provides a check for channel existence
before performing any action on it during reset
procedure.
Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com>