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>
Move gain-playback/capture pipelines out of cavs folder
since these can used by others.
Update cavs topologies to fix compilation by adding
include/pipelines as searchdir.
Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com>
Move common_definitions.conf to common folder since this
will be used by other companies to define their topologies.
Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com>
Add the conf file for the OpenVino noise suppression module and
introduce the module in the capture path in the plugin topology when
noise suppression is enabled. ATM, only 16K capture is supported by the
model, so change the input/output rates for the host/dai modules in the
plugin capture pipeline.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
On 8ULP SAI is connected to BT which supports
only 1 channel for both playback and record.
Fixes: aaff352314 ('topology1: pipe-volume-capture.m4: Set minimum number of channels to 2')
Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com>
Add a mute switch to gain widget for DMIC. Also register this switch
as MIC mute LED mixer control on Linux side.
Signed-off-by: Brent Lu <brent.lu@intel.com>
The topology uses passthrough pipelines for playback/capture and
supports only 48k, 2ch, 16bit format for now.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
This patch adds build of hda-generic development topologies to
test ASRC component with s32/24/16 format.
Signed-off-by: Andrula Song <andrula.song@intel.com>
Adding make file changes to generate the topology file for the products
which doesn't have no ssp-based audio codec but need to support
HDMI audio playback and HDMI-in capture via I2S.
Signed-off-by: Balamurugan C <balamurugan.c@intel.com>
override the default HDMI DAI link id's by using make
define parameters instead of fixed in file.
Signed-off-by: Balamurugan C <balamurugan.c@intel.com>
Adding HEADSET_CODEC macro and guarded the SSP configuration handling
under this macro.By this changes we can generate the topology
configuration for the products which has no headset codec.
Signed-off-by: Balamurugan C <balamurugan.c@intel.com>
The layout is configured as:
- Link0: CS42L43 Jack and mics
- Link2: 2x CS35L56 Speaker (amps 3 and 4, right)
- Link3: 2x CS35L56 Speaker (amps 1 and 2, left)
Signed-off-by: Maciej Strozek <mstrozek@opensource.cirrus.com>
Remove the temporary workaround and add HDMI on all MeteorLake
products. If this breaks stuff, well we need to fix hit ASAP.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
The sof-adl-rt711-l0-rt1316-l13-rt714-l2 similar to
sof-adl-rt711-l0-rt1308-l12-rt715-l3 with the SDW DMIC on different link.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
The sof-adl-rt711-l0-rt1308-l12-rt715-l3 is identical configuration as
sof-tgl-rt711-rt1308-rt715
At the same time update the comments for better organization.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
The target name for the production should have been more precise as it
ended up:
ninja -C tools/build_tools/ help
topology2_dev: phony
...
topology2_dev_sof-tgl-nocodec: phony
topology2_dev_sof-tgl-nocodec-crossover-2way: phony
...
topology2_prod: phony
...
topology2_sof-hda-generic: phony
topology2_sof-hda-generic-2ch: phony
...
Change it to be consistent:
topology2_dev: phony
...
topology2_dev_sof-tgl-nocodec: phony
topology2_dev_sof-tgl-nocodec-crossover-2way: phony
...
topology2_prod: phony
...
topology2_prod_sof-hda-generic: phony
topology2_prod_sof-hda-generic-2ch: phony
...
No functional change.
Suggested-by: Marc Herbert <marc.herbert@intel.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Merge the avs-tplg and sof-ace-tplg under a common production directory.
After a successful build CMake will copy the topology files to a target
directory from where they can be copied to DUT/release:
$ tree tools/build_tools/topology/topology2/target
tools/build_tools/topology/topology2/target
├── development
│ ├── cavs-sdw-hdmi.tplg
│ ├── cavs-sdw-src-gain-mixin.tplg
...
│ ├── sof-tgl-nocodec-rtcaec.tplg
│ └── sof-tgl-nocodec.tplg
├── sof-ace-tplg -> sof-ipc4-tplg
└── sof-ipc4-tplg
├── sof-adl-rt711-4ch.tplg
├── sof-adl-rt711-l0-rt1316-l12-rt714-l3.tplg
...
├── sof-tgl-rt712.tplg
└── sof-tgl-rt715-rt711-rt1308-mono.tplg
The sof-hda-generic-2/4ch.tplg will be generated without embedded NHLT as
it is not used under normal circumstance.
Two flavor of the generic topology is generated for CAVS2.5 and ACE1/2 with
included NHLT binary in case it is used by existing users, but it is
unlikely.
As noted in the documentation, on the deployed system a symlink is needed
for ACE1/2 platforms for backwards compatibility:
sof-ace-tplg -> sof-ipc4-tplg
Link: https://github.com/thesofproject/sof-docs/blob/master/getting_started/intel_debug/introduction.rst#2-topology-file
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
This patch adds build of hda-generic development topologies to
test SRC LITE component with all s16/s24/s32 formats
Signed-off-by: Andrula Song <andrula.song@intel.com>
The default for DEEPBUFFER_FW_DMA_MS is 100, remove the
DEEPBUFFER_FW_DMA_MS parameter set for individual topologies when the value
set is also 100
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
The DeepBuffer stream is D0I3 compatible for some time now on all IPC4
platforms, The CAVS2.5 topologies just did not got updated.
Swap the default for the DEEPBUFFER_D0I3_COMPATIBLE to true.
New, experimental platforms can change this if needed until the feature is
verified.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
This patch adds build of hda-generic development topologies to
test SRC component with s24/16 format.
Signed-off-by: Andrula Song <andrula.song@intel.com>
This patch adds build of hda-generic development topologies to
test SRC component with s32 format.
Signed-off-by: Andrula Song <andrula.song@intel.com>
The pipelines for PCM0 and PCM1 only support S32_LE audio
format. Fix the PCM capability descriptions to match the actual
pipeline definitions. This allows to run test suites that enumerate
all support PCMs and their formats.
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
The mixer control for switch is added to widget definition
of drc.conf.
In cavs-mixin-mixout-efx-hda.conf the existing control name
is changed to have "bytes" similarly as multiband-drc has. The
switch control is added for the widget to implement the switch.
The controls definitions files in benchmark topologies are replaced
to new format from current .conf generator script. The bytes control
is same as before, and the mixer control for switch is added.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This blob exercises fully the features of DRC and is
therefore useful for performance evaluation in all
operation regions.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This blob exercises fully the features of DRC and is
therefore good for testbench runs to evaluate performance
in all operation regions.
The pipeline pipe-drc-playback.m4 is used only with testbench
so it is safe to change to use this blob.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds build of hda-generic development topologies to
test IGO NR component with all s16/s24/s32 formats.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Currently, the minimum number of channels for the capture PCM
is set to the same value as the maximum number. This restricts
the number of channels supported by the PCM to the maximum number.
This is wrong if we want to allow arecord to work with multiple channel
values. As such, follow the example of "pipe-volume-playback.m4" and
introduce a new macro: LOCAL_CHANNELS_MIN. This will be set to
"CHANNELS_MIN" if said macro is defined, otherwise it will be set to
2.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Remove the rest of channels and rate attribute values from pipeline
instamces and remove rate attribute definition from
pipeline-common.conf. There was no channels attribute definition in
pipeline-common.conf, not to mention *_min and *_max attributes.
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
This commit removes all defined values for rate, rate_min, rate_max,
channels, channels_min, and channels_max, from all pipeline
definitions under include/pipelines/cavs. The commit also removes them
from the usage examples in the comments.
The removed pipeline level attribute values are obsolete.
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
Make the HDMI_USE_CHAIN_DMA set to true by default as enabling it for every
configuration just does not scale.
The generic HDA topologies enabled this for all IPC4 platforms already.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
In practice all HDA links (on LNL SDW/SSP/DMIC also) can use ChainDMA, but
the flag is used to enable this only for display links.
Rename the flag to be precise about this.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
From 48k input, the obs for 11025/22050/44100/88200/176400 setting
need take care, previous implementation left 5 words redundancy
for output, this change removed redundancy, since actual output
buffer size always use double obs size.
Signed-off-by: Baofeng Tian <baofeng.tian@intel.com>
22050Hz obs also need a separate setting, this was missed when first
create this file, now move it to the group with obs setting.
Signed-off-by: Baofeng Tian <baofeng.tian@intel.com>
This patch adds build of hda-generic development topologies to
test RTNR component with all s16/s24/s32 formats.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch allows to build topologies to use the RTNR
component. Two bytes control blobs are converted from
topology1 to IPC4 format.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
To indicate the SoundWire amp need to use 24 bit format.
I use a flag instead of a macro like $SDW_AMP_FMT to set valid_bit_depth
because bit_depth and valid_bit_depth may not be the same.
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
The multi-core topology was created since multi-core feature had a few
bugs at that time so it was for validation test. Now this feature works
fine so merge it into nocodec topology then it will be tested by
github CI. And we don't need to maintain a dedicated multi-core topology.
Signed-off-by: Rander Wang <rander.wang@intel.com>
It was confirmed that the IPC4 version of Google RTC AEC
is not using the bytes control, so it can be safely removed
from topology.
This fixes topologies build error:
ALSA lib conf.c:838:(get_char_skip_comments)
Cannot access file include/components/google-rtc-aec/rtc-aec-blob.conf
Fixes: 64fcebbd64
("Tools: Topology2: Add nocodec topology to test google-rtc-aec")
Fixes: #8357
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>