The controls names for IIR, FIR need to be same as in
sof-hda-generic for UCM to find the controls and set up
the components for processing.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
HDA host DMA has limitation on the number of BDL entries which translates
to number of periods, this limit is 256.
The Chrome ALSA compliance test is eagerly try to use as many periods as
it can which exceeds the BDL limit and the stream cannot be started.
Fixes: b3a6d1c570 ("topology2: common: pcm_caps: Increase periods_max from 16 to 1024")
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
The rate_min/rate_max is obsolete, should use rates with
list of rates to support. Without this change the playback
of non-48 kHz content happens with 48 kHz rate with pitch
shift effect. Aplay shows only a warning.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
We need to face with reality that the pause/resume is a feature that is not
well tested (end users are using audio via audio servers and they don't
use pause/resume) causing constant issues with no real life benefit:
With IPC4 multiple pause/resume will make the delay reporting to be
exponentially shoot out, making the reported delay to be unusable.
Looks like suspend/resume with paused stream has been broken for a long
time and just got noticed (since it was not tested).
Add a new token to allow selected PCMs to advertise pause support and
keep it false by default.
The kernel side will allow ignoring the flag to keep the pause advertised
for continued testing while protecting accidental use of it by users.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://github.com/thesofproject/linux/issues/5035
The NHLT binary is not needed in these audio processing development
and test topologies. With the current build options the NHLT would
work only with cAVS2.5 platforms (TGL). Without NHLT add these are
safe to use in all platforms where the NHLT blob is retrieved from
BIOS.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Add DMA_DOMAIN variable and based on this we set
SCHEDULE_DOMAIN to SCHEDULE_TIME_DOMAIN_DMA, otherwise
is SCHEDULE_TIME_DOMAIN_TIMER.
Now, only i.MX8MP is using SCHEDULE_TIME_DOMAIN_DMA.
Therefore the DMA_DOMAIN is added only for 8MP topologies.
Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com>
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
This patch defines e.g. for sof-hda-generic-2ch.tplg DMIC0 only
stereo formats as s16/24/32. Similarly for e.g. sof-hda-generic-4ch.tplg
only four channels formats are defined.
The reduction of input formats options avoids the issue with kernel
that it possibly selects invalid channels count for DMIC0 DAI when
the channels count in connected pipelines varies due to processing
components.
The output formats are reduced similarly since copier always has
the same input and output channels count.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The tplg1 blobs are still used with IPC3 testbench test pipelines.
The updated script example_drc.m exports the blob used for DRC
test with name "speaker_default" so, the blob file name to include
to test pipeline is changed. The blob content is same as before.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
For some reason the sof-mtl-rt712-l0 topology was not created despite
being listed in the kernel, and we now need the rt712 VB support with
an additional SmartMic path.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
This patch adds s16/s24/s32 format test topologies for the
time domain fixed beamformer component.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch allows the kernel to choose 16 bit format if the DMIC
NHLT is missing the recommended 32 bit mode blob. The 24 bits is
also in theory possible so it is added for completeness.
The DAI copier is converting the output format for internal pipelines
into S32_LE format, so the other operation is not impacted. For systems
with 32 bit DMIC NHLT there is no impact.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Clarify documentation of SAMPLE_TYPE_MSB_INTEGER sample type
value and fix documentation of SAMPLE_TYPE_LSB_INTEGER. These
definitions are often confused with integer endianness, which is
not related. Clarify this better.
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Two configurations for sof-mtl-rt713-l0-rt1318-l12-rt1713-l3 and
sof-mtl-rt713-l0-rt1318-l1-rt1713-l3.
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
The new lnl.conf is copy of mtl.conf but DMIC_DRIVER_VERSION needs
to be increased by one for a small registers change.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Commit c77a4feb2f ("topology2: pcm_caps: Remove defaults for
rate_min/rate_max") changed how rate constraints are described in
topology. After this change, the rate_min/max was ignored by SOF Linux
driver and the rate was incorrectly limited to 48000Hz for these
topologies.
Fix this issue by enumerating the supported sampling rates with "rates".
Link: https://github.com/thesofproject/sof/issues/9067
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Switch to Zephyr native drivers and timer domain. This
includes:
1) Switching all imx8ulp topologies to timer domain.
2) Disabling Zephyr DMA domain
3) Various interrupt-related fixes via Kconfig-related
ifdef logic.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
There is no benefit on changing the period/buffer size_max as it is set
by default to a reasonably large value already.
What matters is the buffer_size_min: it needs to be larger than the
amount of data that one DMA burst will transfer, which is equal to the
DeepBuffer size. For safety reasons the minimum buffer size has to be
larger than this.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Increase the default period_size_max to a much larger value which is
commonly used by sound cards from 16384 to 2097152.
Adjust the buffer_size limits to minimum 384 (2 * period_size_min) and the
maximum to 4194304 (2 * period_size_max).
Applications do not need to use these large buffers, but there is no
technical reason to not allow them, like they available on other sound
hardware.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
There is no technical reason to limit how many periods applications use.
Generic sound cards tends to allow 32768 periods (period size range
is 16 - 524288) but that is an overshot, let's raise the limit to 1024.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
This commit includes all necessary changes for switching
to timer domain and Zephyr native drivers on imx8 and imx8x.
This consists of:
1) Switching all imx8 topologies to timer domain.
2) Disabling Zephyr DMA domain
3) Various interrupt-related fixes via Kconfig-related
ifdef logic.
This commit includes all necessary changes for switching
to native Zephyr drivers on imx8/imx8x.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
This patch adds following hardware configuration on LNL product:
SDW link0: RT714 DMIC
SDW link1: RT1318 Left Speaker
SDW link2: RT1318 Right Speaker
Signed-off-by: Mac Chiang <mac.chiang@intel.com>
With ChainDMA the HDMI PCM can support IEC958_SUBFRAME_LE and the rate
is not limited to 48K only.
To be able to use bytestream passthrough (DD/DTS/etc).
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
The development topologies are with -/2ch/4ch DMIC for cavs25
and ace1 platforms for testing HDA with 96 kHz rate.
The build topologies names are:
- sof-hda-generic-cavs25-4ch-48k-96k
- sof-hda-generic-cavs25-2ch-48k-96k
- sof-hda-generic-cavs25-4ch-96k
- sof-hda-generic-cavs25-2ch-96k
- sof-hda-generic-ace1-4ch-48k-96k
- sof-hda-generic-ace1-2ch-48k-96k
- sof-hda-generic-ace1-4ch-96k
- sof-hda-generic-ace1-2ch-96k
- sof-hda-generic-96k
The DMIC1 PCM ID with 96 kHz is set to 22 (capture ultrasonic).
PCM IDs definition is in:
https://github.com/thesofproject/sof/files/14021187/PCMDeviceList.txt
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch modifies cavs-mixin-mixout-hda.conf with added input
and output format attributes for in_rate and out_rate. The bit_depth
attributes need to be added to as well to avoid corrupt audio.
The HDA_ANALOG_CAPTURE_RATE and HDA_ANALOG_PLAYBACK_RATE are by default
set to 48000. The topologies' characteristics are not changed with
this patch.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Topologies with DMIC1 passthrough capture are added to development
directory with 16 and 96 kHz rates. Also a topology with DMIC0
changed to 96 kHz is added as example to test DMIC0 with other
than default rate.
The new topologies are:
- sof-hda-generic-cavs25-4ch-48k-16k
- sof-hda-generic-ace1-4ch-48k-16k
- sof-mtl-sdw-cs42l42-l0-max98363-l2-4ch-48k-16k
- sof-mtl-sdw-cs42l42-l0-max98363-l2-4ch-48k-96k
- sof-mtl-sdw-cs42l42-l0-max98363-l2-4ch-96k
- sof-mtl-max98360a-rt5682-4ch-48k-16k
- sof-mtl-max98360a-rt5682-4ch-48k-96k
The DMIC1 PCM ID with 96 kHz is set to 22 (capture ultrasonic).
PCM IDs definition is in:
https://github.com/thesofproject/sof/files/14021187/PCMDeviceList.txt
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch optionally includes dmic1-passthrough.conf if
DMIC1_ENABLE is set in topologies build to passthrough.
The sample rate of DMIC1 DAI can be set to 8 - 96 kHz with
macro DMIC1_RATE.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The added DMIC0_RATE allows to use the DAI, pipelines, and PCM with
any supported rate for DMIC in range 8 - 96 kHz. E.g. configure
DMIC0 to 96 kHz.
There is no change to existing functionality with default 48 kHz rate.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The input audio format and output audio format definitions are
missing for the copiers and IIR. The formats are added in
preparation to be able to set non-default sample rate for all
widgets.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The needed defaults for DMIC1 for PCM ID and sample rate are added
similarly as for DMIC0 for later use. DMIC1 related pipelines are
not used by default so DMIC1_ENABLE is set to false.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This quick fix avoids build of NHLT blob for the default (TGL)
for LNL HDA generic platform.
The DMIC part of NHLT from TGL is not suitable for LNL, while a
blob for MTL can be used. A proper lnl.conf will be added later.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The widget name size will exceed the character limit and lead to below
error
failed to find module info for widget
alh-copier.SDW0-Playback-SimpleJack.0 with UUID
00000000-0000-0000-0000-000000000000
Shorten the stream name to fix it.
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Add constraints on valid pipeline priority values and document
the semantics so that 0 is considered the highest priority and such
pipeline should be run first.
The range matches definitions in include/ipc4/pipeline.h and
SOF_IPC4_MAX_PIPELINE_PRIORITY.
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
This device has RT711 on link0, RT1316 on link3 and 2 PCH-attached DMICs.
Add 3 configurations with no DMIC, 4 DMIC and 2 DMIC. For now no
support for -pdm1.
Link: https://github.com/thesofproject/linux/issues/4880
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Starting with this commit, i.MX93 now uses the timer domain
in conjunction with the Zephyr native drivers.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
The BT codec used by the IW416 chip expects FSYNC to be
asserted for only one BCLK. Also, FSYNC should be active HIGH.
As such, change from I2S protocol to DSP_A protocol since the
configurations made for this protocol inside the SAI driver
are more suited.
Also, by default, the BT codec drives data on BCLK rising
edge and samples it on falling edge. With the DSP_A protocol,
the SAI driver also has the same configuration, which is wrong
since we can't drive and sample on the same edge and cycle. As such,
invert BCLK polarity such that the SAI will drive on rising edge
and sample on falling edge.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
8ULP has two supported BT HFP scenarios: NBS and WBS. For
NBS the frequency of FSYNC is 8k, while for WBS the frequency
of FSYNC is 16k. Since the BCLK is computed as:
Freq(BCLK) = TDM_SLOTS * TDM_SLOT_WIDTH * Freq(FSYNC)
then that means we're going to end up with two different BCLK
frequencies (one for each supported scenario).
Currently, what we do is pass the frequency of FSYNC
as a build argument, while keeping the frequency of BCLK
constant (set to 256000, which would be the same value as the
one used in WBS). This causes the following issues:
1) The Zephyr native SAI driver returns an error
when trying to commit the configuration because the
frequency of BCLK doesn't abide by the aforementioned
formula.
2) We end up consuming twice as many samples in a given
unit of time.
To fix these issues, use the aforementioned formula to compute
the frequency of BCLK.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Rename the `RATE` parameter to `FSYNC_RATE` in order to
remove ambiguity regarding what the parameter is.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
All topologies are built in parallel. The same name will lead
to file overrides. Therefore, correct to use the respective file
names properly.
Signed-off-by: Mac Chiang <mac.chiang@intel.com>
The CHAIN_DMA has been replaced with HDMI_USE_CHAIN_DMA, which was already
enabled by default on iDisplay HDAudio codec in hdmi-default.conf.
Signed-off-by: Mac Chiang <mac.chiang@intel.com>
When Google RTC AEC is not ready to launch, it shouldn't be included
in production builds for Chromebook. This commit removes Google RTC
AEC from the current variants while making another copy with suffix
"-google-aec".
Signed-off-by: Pin-chih Lin <johnylin@google.com>
Multicore is not working correctly for Intel cAVS2.5 in Zephyr
upstream and the fixing will take a longer time, so disable
this feature in nocodec configuration.
Link: https://github.com/thesofproject/sof/issues/8942
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
This patch replaces pipeline mixout-gain-dai-copier-playback with
mixout-gain-efx-dai-copier-playback. The purpose is to allow
enhance of audio playback quality with equalizers (IIR and FIR)
and dynamic range control (DRC).
The components are programmed by default to passthrough for minimal
overhead. They can be activated via sof-ctl or UCM with ALSA controls.
- Post Mixer Analog Playback IIR Eq bytes
- Post Mixer Analog Playback FIR Eq bytes
- Post Mixer Analog Playback DRC bytes
- Post Mixer Analog Playback DRC switch
The recommendation is to keep headphone playback flat and enable
processing only when HDA output is in speaker mode.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Add the .dot file header/footer macros. These are benign if unused,
and it seems like most other devices have them defined.
Signed-off-by: Andy Ross <andyross@google.com>
Since there is no NHLT blob included to these topologies, the same
topology works for all HDA platforms, e.g. TGL, MTL, LNL.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>