Somehow there is an extra "48" in DAI_ADD() and it uses wrong
pipeline in PCM_PLAYBACK_ADD().
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
sof-icl-rt711-rt1308-rt715-hdmi.m4 is based on sof-icl-rt711-rt1308
-rt715.m4 with hdmi supported.
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Prevents dai_config while DAI is in active state.
It leads to undefined behavior and DSP exception
in some cases.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
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>