Uses CONFIG_INTERRUPT_x options to conditionally build interrupt
drivers' code. These definitions should only be used in interrupt
drivers and platform interrupt headers. In case there is a need
to use additional interrupt level the appropriate kConfig option
should be selected. Otherwise the build will fail.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Adds options, that allow to select the supported interrupt
levels on given platform. Disabling any interrupt level
allows for less memory consumption. Currently all the options
are enabled by default.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Removes interrupt numbers and names assignment to HDA DMAs.
These interrupts are unusable due to hardware restrictions.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Currently having different amount of periods between DAI and the
component before it is not allowed. This is because it is not allowed to
resize dma connected buffers. So make 50kHz topology use src-volume
pipeline, which has additional volume component, which in turn has
correct amount of periods for the DAI connection.
Signed-off-by: Jaska Uimonen <jaska.uimonen@intel.com>
Removes unmask parameter from interrupt structures and functions.
It's not been used for a long time now.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
i.MX8QXP has one ESAI interface. Create a simple topology
without a codec for playback of 2 channels, 16bits samples
at 48Khz.
Host -> Buffer0 -> Volume -> Buffer1 -> ESAI0
This is useful for testing various components like Dummy DMA,
EDMA and ESAI drivers.
For more information about ESAI you can read i.MX8QXP RM at:
https://www.nxp.com/docs/en/reference-manual/IMX8DQXPRM.pdf
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
ESAI is one of the DAIs found on i.MX8 platforms. Introduce esai_params
used to pass configuration from topology via AP to DSP.
Only MCLK and TDM related params for now.
Because this is a new struct, increment only ABI MINOR version
which makes the SOF FW backward compatible with older kernel versions.
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
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>