The KPB component has changed its buffering
algorithm therefore its test cases needs to
be changed accordingly.
Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com>
This sets HOST copy mode to blocking before
draining starts and resets it back to
normal mode once draining is done.
Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com>
From now on, modules (including components) that wish to be self-registered
and initialized on boot up shall use the DECLARE_MODULE macro.
Signed-off-by: Slawomir Blauciak <slawomir.blauciak@linux.intel.com>
Now sof kernel driver supports two dmic dai links: DMIC01 PIN,
which supports rate of 48k, and DMIC16k Pin, which supports rate
of 16k. And if four channels dmic is used, we only support one dmic
dai link. CHANNELS would check in intel-generic-dmic to generate
the correct topology file.
Tested on whiskylake & icelake & apollolake up2
Signed-off-by: Rander Wang <rander.wang@linux.intel.com>
This patch alters the volume IPC and ramp to use sQ8.16 gain
values instead of previous Q2.16 kind of unsigned gain value.
The driver has never set the min/max volume values in volume
new() IPC so the macro values VOL_MAX (+42 dB) and VOL_MIN (mute)
are used instead as limits.
The overflow in generic C code with s16 format is fixed. The
comments about volume Q format are updated.
The optimimized xt-xcc version of volume is changed to use 64
bits for multiply result to avoid loss of LSB bits in left shift
after multiply. With 64 bit result there is no need to scale the
volume multiplier as it was done with use of 32 bit multiply
result.
The cmocka volume type is changed to signed integer to match
component type used in this patch. The xtensa AE integer types
are signed so better to avoid unsigned gain values. The volume
scale in reference volume does a small error and cannot handle
above 0 dB max so it is changed as well. The test levels are
changed to exercise gains above and below 0 dB.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The macro in tlv.m4 defines a volume scale from -64 dB with 2 dB
steps for playback pipelines. Hence the name m90s3 is incorrect.
The new name m64s2 is a correct description of the defined volume
scale. It's useful since there's another volume scale defined for
capture pipelines.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch replaces the -64 to 0 dB volume scale for capture with
more practical -50 to +30 dB gain. The step is 1 dB. It allows to
compensate for different microphone model sensitivities when constant
acoustical decibels to digital decibels level is needed in a
microphone capture application.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This is a testing component acting as a dummy keyword
detector comp. Add the init/free and cmd op so as to be
able to accept switch cmd from userspace.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Slawomir Blauciak <slawomir.blauciak@linux.intel.com>
Provides ipc_send_comp_notification function for
sending custom notifications to the host.
Signed-off-by: Slawomir Blauciak <slawomir.blauciak@linux.intel.com>
The kpb's comp_data struct is located in a public header,
which will be used by different components.
As such, it would cause conflicting definitions.
Signed-off-by: Slawomir Blauciak <slawomir.blauciak@linux.intel.com>
Removes check for host buffer alignment to period size.
This check is deprecated as we are correctly handling
split transfers.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Cleanups the whole DW-DMA driver:
- Move platform register defines to proper headers.
- Make driver independent of platform.
- Use the same accepted style of trace logs.
- Other minor tweaks.
Signed-off-by: Tomasz Lauda <tomasz.lauda@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>
Unifies code responsible for interrupt handling
for all platforms. This way we can eliminate #if
based on platform type and rather use feature ones.
Support for hardware linked list defines what kind
of interrupt we expect - block or transfer. There
is no point of supporting both of them simultaneously.
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>
Increases number of periods for low latency playback pipeline
from 1 to 2 for volume and mixer components. 1 period
is not good enough to have continuous DMA transfer across
the whole pipeline, especially with the new copy flow,
which requires playback pipeline preload.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
This patch fixes 2ch dmic capture topology. It appeared as topology
completion fail in SOF boot. The missing quote characters in m4
caused the STEREO_PDM0 macro triggered lines to no not be included
into conf file.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Fix logic for saving the snapshot file argument. getopt()
is called at least once after snapshot option is parsed and
getopt() will erase the optarg value when exiting the while
loop. Without this patch, argument is always NULL and snapshot
cannot be taken.
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Changes implementation of dw_dma_stop function for
baytrail and cherrytrail platforms. On this platforms
we cannot simply disable channel during transfer,
because it will hang DMA. Previously we were waiting
for transfer finish, which could take up to one period
size (1 ms in most cases). This patch uses suspend and
drain FIFO mechanism, which lowers time needed to stop
DMA channel to steady ~0.34 ms.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Changes pipeline behavior to trigger pipelines with
the same scheduling component. This change allows
for properly triggering topologies with mixer.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>