Adapt the apl KWD topology to imx8m by switching to
SCHEDULE_TIME_DOMAIN_DMA on capture pipeline and
creating a no LP capture file for KFBM component.
Signed-off-by: Cristina Feies (ilie) <cristina.ilie@nxp.com>
The driver configures a lowest feasible bus clock to save power.
Since the 48 kHz and 16 kHz DMIC DAI can now be instantiated in the
runtime there is possibility that the min. 500 kHz clock allowed could
be too low for a new 48 kHz capture when existing 16 kHz capture is
running.
The topologies those define a 48 kHz DMIC DAI need to increase the min.
clock to a sufficient rate. This patch changes every 500 kHz value to
2.4 MHz. This change does not change the external microphone clock in
any platform. The lower than 2.4 MHz clock rates never happened in
previous version to due to the 48 kHz DAI request in these topologies.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
In some cases we need to change dai configuration in firmware. ASoC
supports already setting multiple hw_configs, but sof M4 scripts lack
the mechanism to do this. Thus enable defining multiple config items in
the dai. Enable now support only for SSP by defining new
SSP_MULTI_CONFIG macros that should not clash with the single dai config.
Signed-off-by: Jaska Uimonen <jaska.uimonen@intel.com>
This patch is based on sof-cml-rt1011-rt5682.m4 but omits the
hard coded keyword pipeline and replaces it with a generic
16 kHz capture pipeline. The use of intel-generic-dmic.m4 to
set up the capture pipeline simplifies the topology a lot. This
change makes the topology for CML I2S quite similar to sof-hda-generic
to add audio processing.
All endpoint processing can be defined from top level CMakeLists.txt
with macros HSMICPROC, HSEARPROC, SPKPROC, DMICPROC, DMIC16KPROC.
A sample topology with equalizers in headset and speaker paths is
added.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Add a new token in scheduler tokens to flag a pipeline
as dynamic. Modify the DAI_ADD ans PIPLINE_PCM_ADD macros
to indicate if the pipeline should be dynamic or now. It is
also possible to make all pipelines in a topology dynamic
by defining the macro DYNAMIC during build.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
This patch adds the include of mixercontrol.m4. The topologies build
fails if none of the earlier parsed pipelines contains the same
include.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The mistake in the topology macro causes overwrite DMICPROC with
volume if HSPROC is not defined. This patch fixes the macro line
to handle properly HSPROC.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Add cmake -DINIT_CONFIG= option that can point at any initial file.
"make clean" does not delete .config any more.
Note reconfiguration does NOT causes recompilation because -imacros
hides the generated .h from CMake's dependency scan. This is not a
regression, that problems exists since -imacros was introduced. At least
it's now possible to "make clean" and rebuild without losing the .config
file.
Fix for #3617
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
This patch fixes the error that happens with the hard-coded PGA
names Dmic0 and Dmic1 in pipelines pipe-eq-iir-volume-capture.m4
and pipe-eq-iir-volume-capture-16khz.m4. Pipelines for beamformer
TDFB have the same hard-coded PGA names and are fixed too.
If impacted pipelines are used for any other purpose than DMIC endpoints
the topology graph gets messed up. With this change the caller macro,
e.g. intel-generic-dmic.m4 needs to set the PGA_NAME macro when the
respective pipeline is instantiated. If it is not set the default
name via N_PGA() macro is used.
The macro intel-generic-dmic-kwd.m4 is updated to set the Dmic0
PGA name as well as the earlier missed PIPELINE_FILTER1 and
PIPELINE_FILTER2 definitions for passing filter coefficients.
Fixes: #3378
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The main topology directory contains a number of topologies those
are not used directly by Linux kernel machine drivers. Also there
are variant topologies built those are modified versions of the
main topology. The topologies for testing and devolopment are moved to
directory development. The topologies those may be used by end users
to enhance the audios are moved or built to dsp_enhancements directory.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch replaces use of pipe-volume-capture macro or
pipe-low-latency-capture to pipe-volume-switch-capture in nocodec
topologies for APL, BDW, CHT, CNL, ICL, and TGL based platforms. It
allows to test of volume component mute switch control in SSP loopback
that is used by default in nocodec topologies. The testing of mute
switch feature is simplest to do with loopback topologies. Nocodec
topologies are not in mainstream usage so this is the safest option to
enable testing.
The mute switch add should be possible to all capture topologies but
it can be done later once it is confirmed it is safe to do (avoid
accidental muted audio or problems with UCM).
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
we have a set of topologies that don't seem aligned with the
mainstream ones.
All these topologies should be given the boot if they are not used.
FIXME: The case of tools/topology/sof-cml-rt5682-kwd.m4 is rather
strange, M4 seems to go in some sort of infinite recursion if
'DMIC16k' is defined.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
The macro used DAI link ID when it should have used PCM ID
Co-developed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Fix macros (capitalized K), use them both for regular and -kpb
capture, fix names
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
This problem appeared after renumbering the devices for SoundWire
topologies.
Before this patch, the devices appear as:
pcm=JackIn;id=0;type=playback
pcm=JackOut;id=1;type=capture
pcm=DMIC;id=2;type=capture
pcm=DMIC16kHz;id=3;type=capture
pcm=HDMI 1;id=5;type=playback
pcm=HDMI 2;id=6;type=playback
pcm=HDMI 3;id=7;type=playback
and after:
pcm=JackIn;id=0;type=playback
pcm=JackOut;id=1;type=capture
pcm=HDMI 1;id=5;type=playback
pcm=HDMI 2;id=6;type=playback
pcm=HDMI 3;id=7;type=playback
pcm=DMIC;id=10;type=capture
pcm=DMIC16kHz;id=11;type=capture
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
The topologies changed in this patch relied on dailink defaults, and
never defined PCM IDs.
We want dailinks to be defined in callers, so let's remove those
defaults from intel-generic-dmic.m4
To be backwards 'bug-compatible' the PCM ID remains the same as the
dailink, but this is completely arbitrary and might be modified if
needed.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
errprint does not stop the compilation as intended, it just prints a
message which is removed by the makefile.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
The topology handling requires names to be unique, regardless of
direction. It's an undocumented 'feature' of the ALSA topology parser.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Add macro to allow the use of "BufferedMic" instead of
"DMIC16kHz" in KPB usages.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Confusion between input and output, and PCM name and pipeline ID.
Copy/paste likely here.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
This file was used for early enablement of SoundWire on a platform,
before we had support for amplifiers. This is no longer needed, let's
remove it.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Add a topology file for Bay Trail boards with a WM5102 codec
connected to SSP0.
These setups works with the standard settings from sof-byt-codec.m4.
This has been tested on a Lenovo Yoga Tablet 2 1015L.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
We used the same macros in .m4 files but missed the additional
configuration needed in CMakeLists.txt
Reported-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
This patch eases the definition of headset post processing filters
blobs. First, the macro name PPROC is changed to HSPROC to indicate
the processing targets headset endpoint.
The CMakeLists.txt for topologies is edited to add build of topology
sof-hda-generic-eq.tplg that does not include DMIC endpoints for
devices without such. Previously there was no variant without
DMIC enable.
The main macro sof-hda-generic.m4 is enhanced to define HSPROC as
volume to use pipeline pipe-volume-playback.m4 when it has not been
defined in CMakeLists.txt.
The definitions for PIPELINE_FILTERx are copied from endpoint specific
HSPROC_FILTERx if they were defined. If they were left undefined
the pipeline will apply default processing configuration (e.g.
for EQs pass-through).
In the example the EQs are left to pass-through. The topology
sof-hda-generic-eq.tplg shows an example of explicitly setting
the filter coefficients at the top level. The FILTER1 is impacts the
first algorithm in pipeline (IIR) and FILTER2 the second algorithm
algorithm (FIR) in the used HSPROC definition eq-iir-eq-fir-volume.
In this case volume does not support such but for future there could
be FILTER3, FILTER4, ... added if need. The current m4 macros support
now only HSPROC_FILTER1 and HSPROC_FILTER2.
The patch adds undefine to PIPELINE_FILTERx in intel-generic-dmic.m4 to
make sure the macro is not set by other than DMICPROC_FILTERx. The
same is done for 16 kHz DMIC capture. Currently there were no issues
caused by it.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Somehow we use different configurations for the DMIC, remove
everything in this file and rely on the same macros.
The only difference with HDaudio is the pipeline and PCM device
numbers.
the old topology names sof-icl-rt700 and sof-cml-rt700 alias to the
same 4ch topology, when the kernel looks for the 2ch or 4ch versions
we can remove it. Make then break.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Somehow we use different configurations for the DMIC, remove
everything in this file and rely on the same macros.
The only difference with HDaudio is the pipeline and PCM device numbers
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
This topology works on i.MX8MP with wm8960 codec.
When loaded, one will have a sound card with two playback subdevices.
This way, samples pushed to the two subdevices will be mixed and
sent to SAI3 and then to wm8960 codec.
Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com>
This topology works on i.MX8QM and i.MX8QXP with cs42888 codec.
When loaded, one will have a sound card with two playback subdevices.
This way, samples pushed to the two subdevices will be mixed and
sent to ESAI0 and then to cs42888 codec.
Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com>
This topology works on i.MX8QM and i.MX8QXP with wm8960 codec.
When loaded, one will have a sound card with two playback subdevices.
This way, samples pushed to the two subdevices will be mixed and
sent to SAI1 and then to wm8960 codec.
Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com>
pipe-codec-adapter-capture.m4 is implemented as a common pipeline
module of a capture codec w/ Codec Adapter API.
For codec developers, a upper-layer tplg file should be provided for
the specified codec with the information of control bytes, schedule
core, and byte-control names.
Signed-off-by: Pin-chih Lin <johnylin@google.com>
pipe-codec-adapter-playback.m4 is implemented as a common pipeline
module of a playback codec w/ Codec Adapter API.
For codec developers, a upper-layer tplg file should be provided for
the specified codec with the information of control bytes, schedule
core, and byte-control names.
Signed-off-by: Pin-chih Lin <johnylin@google.com>
To support exist function - fullfile() path addition is to prevent Matlab (differently than Octave)
to give false positive with some other directory location with it's search path
Added correction to isempty.
Signed-off-by: ShriramShastry <malladi.sastry@intel.com>
For sof-tgl.ri and sof-tgl-h.ri the old match function will
always return tgl layout. Add suffix in match to make sure
we always match the right name.
Signed-off-by: Pan Xiuli <xiuli.pan@linux.intel.com>