Initial _ACTIVE fields are replaced by a single clock control
This change can lead to regressions, it needs to be aligned with the same
change at the kernel level.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
This patch adds removing of extra zeros in the FIR coefficients. The
zeros can happen in some responses due to fixed point quantization of
very small values. The zero taps consume DSP resources for nothing so
better to clean them out for EQ configuration data.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds export function for the m4 syntax bytes data and adds
the export of such blob to example designs. The example EQ designs are
edited to make this format export too.
In addition the example FIR length is adjusted to be near current IPC
length maximum (384) and improve the effect quality.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Define 3 new PCMs and backends for HDMI/DP playback on GLK platform.
Here are the updated pipelines in sof-glk-da7219.m4:
PCM0 ----> volume (pipe 1) ---> SSP1 (speaker - maxim98357a, BE link 0)
PCM1 <---> volume (pipe 2,3) <--> SSP2 (headset - da7219, BE link 1)
PCM99 <---- volume (pipe 4) <--- DMIC0 (dmic capture, BE link 2)
PCM5 ----> volume (pipe 5) ---> iDisp1 (HDMI/DP playback, BE link 3)
PCM6 ----> Volume (pipe 6) ---> iDisp2 (HDMI/DP playback, BE link 4)
PCM7 ----> volume (pipe 7) ---> iDisp3 (HDMI/DP playback, BE link 5)
There is also support for changing HDMI/DP pipelines to pass-through for
validation purpose, which is commented off by default.
Pleaes note that 3 virtual widgets hifi1~3 are removed, because they'll
be created by HDMI codec driver. This m4 was verified on GLK platform.
This patch creates sof_apl_hdmi.m4 to define topology for 3 playback
pipelines, FE and BE links for HDMI/DisplayPort(DP) audio. This can be
a reference to verify audio over HDMI/DP on APL platforms.
The HDMI/DP frontends are named as HDMIx, to reuse the generic HDA DSP
machine driver which checks the link names and will do extra
initialization on HDMI/DP frontends if "HDMI" is found in the link name.
This m4 does't include topology for using external HD-A analog codecs. We
will create another m4 file to include both HDA display and analog audio.
Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com>
This patch adds a new file hda.m4.
This file defines macro HDA_DAI_CONFIG(idx, link_id, name) for user to
define configurations for HDA Backend links. The link's data tuple will
carry the HDA type info for kernel driver to check the link type.
Pleae note that there are no HW configurations defined for HDA BE links
because current HW configurations is more suitable for SSP BE links, but
not for HDA. We'll decide what HW configurations are suitable for HDA BE
links later.
Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com>
This patch fixes the command line sample rate parameters passing
into host testbench (-r & -R).
In my computer at least the print command of non-visible plots stopped
working into error so I disabled the print commant that creates PNG
graphics files. It's OK since the purpose of this script is batch testing.
The visible plot files can be enabled from SRC test script to see plots
if need for deep dive.
The patch includes also fix for text output for "help src_test". The
input and output word lengths were missing from sample command.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch changes code to allocate filter poles and zeros to biquads
to allow seeing poor SNR due to strong scaling vs. available fixed point
filter word length. The issue was severe especially with Matlab version
of tf2sos() function. The replacement is straighforward z, p frequency
sort. The scaling of biquads was changed to max -6 dB instead of previous
-3 dB to be more safe against internal signal clipping.
The IIR design was changed entirely to be based on zeros and poles
(z, p, k) in intermediate storate instead of polynomial coefficients.
This improves the accuracy especially of low frequencies high-pass
designs.
The default max. IIR order is increased from 12 to 16.
Finally since the grpdelay() function in octave-signal package calculates
incorrect result the group delay computation and plotting is disabled
for now in Octave. It works in Matlab.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This SPDIF transmitter/receiver is used by the HifiBerry DIGI+ and
DIGI IO. The wm8804 operates as bit clock and frame master.
TODO in future update: add support for capture on the DIGI+ IO (this
may be done with a different topology file to avoid confusing users
with a non-working PCM capture patch)
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
This patch decreases pipeline buffers usage from 5x or 4x periods to 3x
to avoid DAI error in APL platform when allocating buffers. The smaller
buffers are sufficient since the test topology pipelines are scheduled
every 1ms (earlier assumption was every 5 ms).
The PCM capability is updated to 8 channels similarly as with low delay
pipeline. The highest sample rate is increased from 96 kHz to 192 kHz.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch cleans up the scripts and improves the accuracy of speaker
case with more carefully set manual equalizer design parameters.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds checks into places where Octave and Matlab handle
the used functions differently. In previous version the difference
in bilinear transform caused IIR designs to fail totally in Matlab.
There remains an issue with IIR EQs design with Matlab. In that case
a warning text is printed since the problem with tf2sos() does not happen
with all designs (example_spk_eq is impacted). It will be investigated
and fixed later. The problem does not happen with Octave.
Equalizer defaults had accidentally by default boost of one dB compared
to desired filter scaling. the offset (norm_offs_db) is now restored to
0.
In parametric equalizers design renamed BW to Q for the correct purpose
(peaking filter Q-value).
Fixed bug in filters normalization where loudness based scaling of IIR
filters was using calculated value for the FIR part.
Also cleaned up lot commented out lines and simplified some functions
parameters usage.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Timeout errors happen randomly but need to be checked.
This helps check issues reported at
https://github.com/thesofproject/sof/issues/209
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
The occurrence of DMA trace overflows has become so bad I need to
filter out these error messages to test module load/unload. Sad but
what can I say.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
This patch adds support to SOFT to setup FIR and IIR equalizer types.
The examples scripts for simple FIR loudness effect, IIR loudness effect
and speaker equalization case demonstrate the usage of the tool. The
output ".txt" files will be possible to apply with alsactl to setup
the equalizers in SOF.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The APL and GLK topologies are identical except for a swap of SSPs and MCLKs.
Tested on Reef and GLK
TODO:
1. there is currently a kernel bug where only duplex pipelines can be
assigned to the same PCM number. For now mark DMIC as device 99 to
track this is a work-around to be modified in the near future
2. Edit the Virtual routes/widgets to remove kernel warnings (no
functional impact)
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
PR43 and commit dc10876c20 ('topology: changes to SectionPCM
macros') went a bit too far and removed a much-needed alignment
between pcm id and dummy dai id. Tested on APL/Reef Chromebook
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
This patch addresses the following:
1. Move PCM_PLAYBACK_ADD to pcm.m4
The macro was in the wrong m4 file (buffer.m4)
2. Remove pipeline_id argument and "index" from SectionPCM
"index" is not a member of struct snd_soc_tplg_pcm. So this
information is not used in the kernel at all.
Secondly, the PCM ID could be associated with more than
one pipeline especially in the case of DUPLEX PCM's. So better
to remove it to avoid ambiguities.
3. Remove dai_id
This dai_id is the ID given to the CPU DAI when the FE DAI link
is created. In the case of SOF, we should use an linearly increasing
unique ID for CPU DAI ID's. If this argument is omitted, the kernel
automatially assignes an ID based on the component->num_dai
which is linearly incremented every time a new DAI link is added.
4. Finally update users to align with the new definitions.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>