This tool is generic and can be used with any binary kcontrol to
send data to/from components at runtime.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Unifies multiple different align macros spread
across the source code. Now we have ALIGN_UP and
ALIGN_DOWN macros defined in sof.h.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Changes starting sequence of DAI. Now IO interface is
started before DMA. The purpose of this change is to
allow slave interfaces to prepare their FIFOs before
DMA starts transferring to them.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Adds delay after starting SSP interface.
It allows for SSP in slave mode to nicely
synchronize with clock and frame inputs.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Adds missing stdint header, since we are using types
defined in that file. Right now format.h compiles
by accident.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Fixes cache handling for dma-trace buffer.
Current implementation wasn't fully supporting
multicore traces. This patch changes buffer
writeback invalidations after buffer write to
invalidations before read and writebacks after
write. Also removes not needed cache operations
on retrieving current traces size.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Moves static variable dropped_entries to common
dma_trace_data structure. This structure is
accessed through uncached memory region, so
all the cores don't need any additional
synchronization.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
dw-dma transfer size setting was changed in cleanup and because of that
we need to zero the ctrl_hi value before twiddling the bits.
Signed-off-by: Jaska Uimonen <jaska.uimonen@intel.com>
Byt media pipeline has different parameters in topology for scheduling
deadline and frame count than apl. This produces funny 4-8x speed
playback. So unify with apl media pipe.
Signed-off-by: Jaska Uimonen <jaska.uimonen@intel.com>
Some of interface headers are not needed by kernel,
but are needed by user-space applications, so we can split them
into multiple directories that indicate their purpose.
Signed-off-by: Janusz Jankowski <janusz.jankowski@linux.intel.com>
Ipc private data needed by ptable processing removed from
platforms that do not use it.
Less ifdef-s in the main common ipc code, another new unit
compiled for platforms that require ptables.
Dependency on the private data removed from the main ipc code
and moved to the platform specific code. A dependency between
ipc-host-ptable and platform's ipc private data is easier to
maintain then duplicated code in the main ipc units.
Signed-off-by: Marcin Maka <marcin.maka@linux.intel.com>
This flag is not private since used by the common IPC handler layer.
This move enables also the next step to make the ipc private data really
private (hidden in the platform ipc code) and make platform specific.
Signed-off-by: Marcin Maka <marcin.maka@linux.intel.com>
Pipeline format determines the buffer size calculation. With the
pipeline format set to S16_LE, hw_params fails for S24_LE and S32_LE
formats. So, change the pipeline format to s32le to support all
three formats.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
The unit of trace header timestamp is ticks but it is nanosecond
in trace params. So we have to convert it to ticks.
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Meu flags can be extended with MEU_EXTRA_FLAGS variable.
These flags are added after default arguments.
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>
The recommended HDA HW programming sequence for setting
the DMA format requires that the link DMA and host DMA
channels be coupled before setting the format. This
change means that host DMA or link DMA channels be
reserved even if only one is used.
Statically assigned link DMA channels would mean that
all the corresponding host DMA channels will need to be
reserved, leaving only a few channels available at run-time.
So, the suggestion here is to switch to dynamically assigning
both host DMA channels and link DMA channels are run-time.
This change means that the DAI_CONFIG IPC will be sent
multiple times during link hw_params and link hw_free
ioctl. The DAI config parameters will remain the same
except for the link DMA channel that will be assigned at
run-time. A value of DMA_CHAN_INVALID from the driver
during hw_free indicates a request to free the current
link DMA channel in use. The current channel in use
is freed before assiging the new channel requested in
the DAI_CONFIG IPC.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.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>
Change symbols to be more explicit.
There are different sizes of the same pattern, so they
should indicate which one has what size.
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>
Mux component implementation. Support for mux and demux operation
modes, channel routing and summation with saturation.
Mux component can operate in 2 modes:
demux - with single input stream and multiple output streams
(up to MUX_MAX_STREAMS)
mux - with multiple input streams and single output stream
It can also work with 1:1 I/O in both modes to act as
channel router / summator.
It is configured via binary blob specifying channel routing
using bitmasks.
In case of demux mode every output stream has an array of bitmasks,
one mask per channel, specifying which of the input channels should
be used to compose it.
Similarly for mux, each input stream has bitmask for each of it's
channels to specify to which output channel it contributes.
Signed-off-by: ArturX Kloniecki <arturx.kloniecki@linux.intel.com>
This patch changes the secondary DMIC FIFO configuration into 32 bits
mode for better quality. Since there is volume component in DMIC
capture pipelines the conversion to other PCM formats can happen
there. Using volume controller with 32 bit input gives a lot better
audio quality when the microphone signal needs amplification.
The scheduling of 16 kHz DAI is changed to 1000us. The comment
of 1000 us is correct but the parameter 48 is not. With 16 frames
the scheduling becomes the desired. This change should also save
some RAM due to smaller buffers.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch restores the missing configuration into macro
intel-generic-dmic.m4. Without this patch the 48 kHz DMIC DAI
is not created. Both DMIC FIFOs are available at any channels
number and PCM format so there is no need to delete a DAI when
4ch configuration is used.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Adds skeleton drivers for:
* ESAI, Enhanced Serial Audio Interface
* EDMA, Enhanced DMA Controler
* dummy DMA, simple dummy DMA to emulate API for copying data
between Host and DSP.
* timer, ipc - imx8 specific implementation
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
This adds minimal support for platform drivers (dai, dma, clk)
and general platform initialization.
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>