Take over ownership of drivers/dw, platform/suecreek and some other Sue
Creek related files.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Tracing functions can sleep on some platforms, remove them out of
spin-lock protected areas, even though sometimes that can produce
inconsistent output. Since dw_dma_stop() can be called from an
atomic context, use a non-sleeping tracing function.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
On some versions of the DesignWare DMA controller IP the peripheral
ID field in CFG_HI is split into two parts. Fix this for Sue Creek,
other platforms will have to verify that field too.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Fixed flow issue in which channels would be invalid number
and being later used to stop dma. When freeing
stream that have not even started FW tried to stop dma
which should not be the case since it was not started.
Signed-off-by: Jakub Dabek <jakub.dabek@linux.intel.com>
platform_boot_complete() informs the host, that the SOF
initialisation has completed successfully. If this fails, the host
will anyway be unable to use the sound card, so we can just panic in
such a case.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Sue Creek uses SPI for IPC messages. This patch removes all DMA IPC
artefacts and makes necessary for SPI adjustments in sue-ipc.c. Note,
that it still uses the purely software IPC mailbox for uniformity
with other architectures.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This patch enables creation of an SOF image, that can be loaded over
SPI and run on Sue Creek platforms. With this patch an image still has
to be manually created by padding the boot loader and concatenating it
with the SOF proper rimage (see comments in memory.h). It also contains
a hard-coded 9KiB offset to the beginning of the manifest. More work is
required to fully automate image creation.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
On Sue Creek the DW SSI / SPI controller can use DMA, add it to the
DMA controller #0.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
On Sue Creek tracing is performed over a UART, since no direct DMA
connection to the host is available. Disable DMA tracing on that
platform.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Fix bugs in Sue Creek support for rimage:
- use a correct manifest offset
- place the image higher into RAM to avoid overwriting itself when
copying the SOF proper.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Add platform data and initialisation for the SPI slave controller on
Sue Creek.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Definition for an IPC structure for a generic notification event
that in the future can be sent by various FW components to the host.
Signed-off-by: Lech Betlej <lech.betlej@linux.intel.com>
The DesignWare SSI IP can perform as an SPI controller. This patch
adds a driver for the SSI's SPI slave mode and enable building it on
the Sue Creek platform.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Sue Creek uses a DesignWare GPIO controller IP for several functions,
including a line, used as an interrupt from the board to the host to
be used with the SPI communication. This patch adds a minimal generic
GPIO API and an implementation for the DW GPIO IP.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This driver has only one function: it can configure a pin for the
GPIO role.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This patch enables the FIFO B in addition to previously supported
FIFO A. It allows in topology to use in pipelines the DMIC DAI
type with indices 0 and 1. The DAI instances can be operated with
different sample rate and different PCM format. The other
topology parameters for microphones need to be the same (number
of channels and enabled microphones). If the request via topology
differs for those parameters the latter request overrides the
first request. Typical usage for this added feature is to provide
compact 16 kHz / 16 bit capture version for speech in addition to
normal 48 kHz / 32 bit media quality audio capture.
The DMIC HW actually provides a bit more freedom for FIR/FIFO A/B
usage difference but all of that is not exposed yet via the
driver due to added complexity.
Some trace prints for DMIC parameters and used configuration are
modified to print shorter lines for easier reading. The print
order is adjusted to be more logical.
The patch modifies two topologies to showcase the feature. The
sof-apl-dmic-2ch/4ch topologies for APL nocodec machine driver
are changed to instantiate in addition PCM7 set for 16 kHz 16 bit
format in addition to earlier PCM6.
Note: The required change to pipe-passthrough-capture.m4 PCM
capability to enable other than 48 kHz rate is not done to not
break important test cases. Another PR addresses the PCM
capabilities and after it is merged allowing 16 kHz PCM for DMIC
capture can be done safely.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This was never properly supported and generates errors. Will re-add when it
actually works
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Create a separate directory for DesignWare drivers and move dw-dma.c
into it with no changes.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Add a configuration parameter "scatter" to specify, that the source
address should be reloaded while the destination address should be
incremented by the transfer length to contiguously fill destination
memory.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
The DW DMA driver prepares configuration register values in linked
list elements. If linked lists of DMA descriptors are used for DMA
those registers are automatically read in by the hardware for each
transfer. The driver also uses those prepared values to explicitly
write them to respective registers. The DONE bit of the CTL_HI
field in linked list elements is automatically set by the hardware
when the respective transfer has completed. It has to then be
cleared by the software to re-use the entry. In the CTL_HI register
the DONE bit is writable, but setting it doesn't seem to be needed.
Remove the DONE bit manipulation at configuration time.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Use local version that still in review stage that we can have test
before final merge in upstream.
Signed-off-by: Pan Xiuli <xiuli.pan@linux.intel.com>
Install all FW and all TPLG files into
root@hostname/ip:/lib/firmware/intel folder.
install sof-logger and LDC files into root@hostname/ip:~/
Signed-off-by: Pan Xiuli <xiuli.pan@linux.intel.com>
rballoc() always allocates memory from the BUFFER zone, in fact the
"zone" argument for that function is redundant. Using any other zone
name with it is misleading. In fact all current calls to rballoc() use
the RUNTIME zone. Replace all uses with RZONE_BUFFER.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Currently the allocator only considers the first suitable heap for
buffer allocations. If it is full, no attempt is made to allocate
buffers from other heaps. This doesn't usually cause problems, because
on all platforms the first buffer heap is the largest and the following
buffer heaps are smaller and specialised (HP and LP). Still it is better
to try all heaps. This patch implements such an approach.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>