Commit Graph

3682 Commits

Author SHA1 Message Date
Tomasz Lauda 04cf5d6aaf platform: tgl: change scheduling interrupt
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
2019-10-07 19:02:57 +02:00
Tomasz Lauda 6ffd5f3fef interrupt: use CONFIG_INTERRUPT_x options
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>
2019-10-07 19:02:57 +02:00
Tomasz Lauda 9c9db8b76e kconfig: add interrupt related options
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>
2019-10-07 19:02:57 +02:00
Tomasz Lauda c9951ff207 dma: cavs: remove interrupts from HDA DMAs
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>
2019-10-07 19:02:57 +02:00
Jaska Uimonen 6ff30f4fc5 topology: change 50kHz topology to use volume component
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>
2019-10-07 12:23:22 +02:00
Tomasz Lauda d1f4320988 interrupt: remove unmask parameter
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>
2019-10-05 20:14:50 +03:00
Tomasz Lauda 0f2315fba8 ssi-spi: align ssi-spi driver with latest DMA scheduling
Aligns ssi-spi driver implementation with latest DMA scheduling
changes.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
2019-10-05 13:25:16 +02:00
Daniel Baluta 680eb9ce7b topology: Add nocodec topology for i.MX8QXP
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>
2019-10-05 01:09:29 +03:00
Daniel Baluta bfb245e080 topology: Add i.MX8QXP platform info
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
2019-10-05 01:09:29 +03:00
Daniel Baluta 988510b7fd ipc: Introduce ESAI IPC parameters definition
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>
2019-10-05 01:09:29 +03:00
Daniel Baluta 03c6d027b8 topology: Add ESAI related utility macros
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
2019-10-05 01:09:29 +03:00
Daniel Baluta ab0847d5d2 topology: Add ESAI tokens
Only add ESAI MCLK ID token for now

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
2019-10-05 01:09:29 +03:00
Daniel Baluta 1adc257ff7 topology: Extend DAI_CONFIG to allow ESAI DAI
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
2019-10-05 01:09:29 +03:00
Bard Liao 2b4b40587c topology: fix hdmi topology issue for SdW projects
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>
2019-10-04 14:51:42 +02:00
Bard Liao 611afaf8f6 topology: add hdmi support for sof-icl-rt711-rt1308-rt715
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>
2019-10-04 14:51:42 +02:00
Tomasz Lauda c623e92463 dai: prevent dai_config while in active state
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>
2019-10-04 15:14:28 +03:00
Slawomir Blauciak c4c42d34db platform: fix SPDX for headers
Signed-off-by: Slawomir Blauciak <slawomir.blauciak@linux.intel.com>
2019-10-02 21:09:35 +02:00
Slawomir Blauciak 85a333db74 tigerlake: enable alh and supply headers
This change adds ALH support for Tiger Lake platforms
and enables it by default.

Signed-off-by: Slawomir Blauciak <slawomir.blauciak@linux.intel.com>
2019-10-02 21:09:35 +02:00
Janusz Jankowski dec18e3f74 rimage: update tgl
Signed-off-by: Janusz Jankowski <janusz.jankowski@linux.intel.com>
2019-10-01 16:19:33 +01:00
Janusz Jankowski 86a4e62446 rimage: manifest v2.5 for MEU
Add function writing manifest v2.5 for MEU.

Signed-off-by: Janusz Jankowski <janusz.jankowski@linux.intel.com>
2019-10-01 16:19:33 +01:00
Janusz Jankowski 92fa1858c8 rimage: image manifest v2.5
Signed-off-by: Janusz Jankowski <janusz.jankowski@linux.intel.com>
2019-10-01 16:19:33 +01:00
Janusz Jankowski e2743bc397 rimage: add SHA384 hashing
Signed-off-by: Janusz Jankowski <janusz.jankowski@linux.intel.com>
2019-10-01 16:19:33 +01:00
Janusz Jankowski 72b6521c87 rimage: rename module_sha functions
These functions are generic and can be used for other SHA algorithms.

Signed-off-by: Janusz Jankowski <janusz.jankowski@linux.intel.com>
2019-10-01 16:19:33 +01:00
Janusz Jankowski 71c8b502a0 rimage: rename ri_hash
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>
2019-10-01 16:19:33 +01:00
Janusz Jankowski a3af6df17a manifest: add v2.5 definitions
New version of manifest introduced with TGL platform
uses SHA384 for component hash.

Signed-off-by: Janusz Jankowski <janusz.jankowski@linux.intel.com>
2019-10-01 16:19:33 +01:00
Tomasz Lauda f69f4a839f host: remove not needed set of DMA_CB_STATUS_END
Next has this status set by default, so there is no need
to set it explicitly.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
2019-10-01 14:32:36 +02:00
Tomasz Lauda f1fb5d3807 dma: remove unused DMA_CB_STATUS_SPLIT
Removes unused DMA_CB_STATUS_SPLIT and related code.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
2019-10-01 14:32:36 +02:00
Tomasz Lauda d2d0eba43a dma: remove unused DMA_CB_STATUS_IGNORE
Removes DMA_CB_STATUS_IGNORE, which is no longer used.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
2019-10-01 14:32:36 +02:00
Tomasz Lauda 4777f261e1 dw-dma: cleanup and remove irq related code
Cleanups DW-DMA driver and removes any code related
to interrupt handling.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
2019-10-01 14:32:36 +02:00
Tomasz Lauda 45015fa361 dw-dma: remove double channel index assignment
Removes double channel index assignment in dw_dma_probe.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
2019-10-01 14:32:36 +02:00
Tomasz Lauda 99fcd37f13 schedule: use DMA multi channel scheduling domain
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>
2019-10-01 14:32:36 +02:00
Tomasz Lauda ed9e888358 platform: hsw: increase system heap size
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
2019-10-01 14:32:36 +02:00
Tomasz Lauda bf15c8973b dw-dma: add PLATFORM_DW_DMA_INDEX definition
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>
2019-10-01 14:32:36 +02:00
Tomasz Lauda faf12ac7a7 dw-dma: rename DMA_AGGREGATED_IRQ definition
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>
2019-10-01 14:32:36 +02:00
Tomasz Lauda 2ab6bc9afe dma: extract dma array
Extracts dma array to be accessible from the generic API.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
2019-10-01 14:32:36 +02:00
Tomasz Lauda f6ffa55621 dw-dma: add PLATFORM_NUM_DW_DMACS definition
Adds PLATFORM_NUM_DW_DMACS definition. This way generic
API can access this information.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
2019-10-01 14:32:36 +02:00
Tomasz Lauda 24201a650d schedule: implement DMA scheduling domain
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>
2019-10-01 14:32:36 +02:00
Tomasz Lauda e1d76a9a61 dma: imx8: add missing dma_chan_irq macro
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
2019-10-01 14:32:36 +02:00
Tomasz Lauda 30241d0d20 dma: add PLATFORM_MAX_DMA_CHAN definition
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>
2019-10-01 14:32:36 +02:00
Tomasz Lauda fa9b4ed674 hda-dma: remove HDA_DMA_MAX_CHANS definition
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>
2019-10-01 14:32:36 +02:00
Tomasz Lauda 43d608674d dma: move CAVS_PLATFORM_NUM_DMACS to specific platforms
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>
2019-10-01 14:32:36 +02:00
Tomasz Lauda 818090f962 schedule: add SOF_SCHEDULE_LL_DMA
Adds SOF_SCHEDULE_LL_DMA as the new low latency scheduling
domain type.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
2019-10-01 14:32:36 +02:00
Tomasz Lauda e08f951591 schedule: rename SOF_SCHEDULE_LL to SOF_SCHEDULE_LL_TIMER
There can be many potential low latency scheduling domains,
so let be more specific here.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
2019-10-01 14:32:36 +02:00
Tomasz Lauda 5a63a6baf5 dma: add scheduling_source
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>
2019-10-01 14:32:36 +02:00
Tomasz Lauda 67826253ea component: add comp_is_scheduling_source function
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>
2019-10-01 14:32:36 +02:00
Tomasz Lauda b7591b579e dma: add core to dma_chan_data structure
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>
2019-10-01 14:32:36 +02:00
Tomasz Lauda ecae65c92d pipeline: add preload_task
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>
2019-10-01 14:32:36 +02:00
Tomasz Lauda de7d4c95cf pipeline: allocate pipe_task only if needed
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>
2019-10-01 14:32:36 +02:00
Tomasz Lauda f58b83387c host: use blocking copy for one shot mode
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>
2019-10-01 14:32:36 +02:00
Tomasz Lauda c38879d5ca dma: add interrupt ops implementations
Adds interrupt operation implementations for all existing
DMA drivers.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
2019-10-01 14:32:36 +02:00