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>
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>
Integration specific tweaks for xtensa architecture should
use Kconfig options selected for required platforms, not the
platform headers.
Signed-off-by: Marcin Maka <marcin.maka@linux.intel.com>
This patch implements the new version of EDF scheduler.
This is the first basic implementation, which can be easily extended
in the future.
Previous implementation had two major flaws:
- Tasks could only be preempted based on the interrupt level on which
they have been scheduled, so it was limited based on the hardware.
- This led to the system not fully utilized, so we could never achieve
full EDF functionality.
The new implementation uses only one software interrupt and allows for
dynamic context switching between different tasks based on the deadline.
Also for some cases priority is taken into consideration e.g. for idle
and almost idle tasks, which don't have deadline at all and should be
executed only if the system is free. All other normal tasks should have
the same priority. Task chosen to be run is executed on passive level,
so automatically can be preempted by every interrupt. Every task has
its own private stack on which current context is saved and restored
if needed. Note that main firmware loop is task scheduled with
idle priority, so it will be executed only after every other task
is completed.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
If all symbols in menu are not selectable if some
other symbol is not present, then there is no point
in showing that menu.
Signed-off-by: Janusz Jankowski <janusz.jankowski@linux.intel.com>
Apollolake+/i.MX have reset vector in ROM. So far we have
used platform config symbols to tell which platforms have
the reset vector in ROM.
Anyhow, things are starting to get ugly here with more
platforms to come so we add an internal config symbol
which will be set by each each platform when needed.
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
We already have CONFIG_DEBUG* symbols in Kconfig,
this one is still defined in code, so it should be
moved also to Kconfig.
Signed-off-by: Janusz Jankowski <janusz.jankowski@linux.intel.com>
It's better to have general options earlier in menuconfig
and specific options later.
Signed-off-by: Janusz Jankowski <janusz.jankowski@linux.intel.com>
I've added counters for processed and received ipc tasks.
They are dropped after trace points in memory window.
Signed-off-by: Bartosz Kokoszko <bartoszx.kokoszko@linux.intel.com>
Makes DMA FIFO partitioning configurable from Kconfig.
Some platforms need to set FIFO partitions before
enabling DMA controller.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Makes DW-DMA stop method to be configurable from Kconfig.
Some of the platforms cannot stop DMA channel immediately,
but first need to suspend and drain FIFO.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Moves configuration of aggregated channel interrupts to
Kconfig. Currently only Apollolake has possibility
to register interrupt per channel.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Makes platform support for hardware linked list
configurable from Kconfig. HW_LLI is supported
for all cAVS platforms.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
On i.MX we have only two software interrupts available. One is used
as PLATFORM_SCHEDULER_IRQ and the other one for PLATFORM_IRQ_TASK_HIGH.
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>