This commit adds CHANNELS define in sof-tgl-rt711-i2s-rt1308.m4
topology in order to properly set pipeline pcm channels and dmic
configuration (STEREO_PDM0 or FOUR_CH_PDM0_PDM1 mode).
Signed-off-by: Bartosz Kokoszko <bartoszx.kokoszko@linux.intel.com>
This places all SectionWidget.TONE* topology widgets, created by
the W_TONE() macro on the same core, on which the respective pipeline
is scheduled.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This places all SectionWidget.MUXDEMUX* topology widgets, created by
the W_MUXDEMUX() macro on the same core, on which the respective
pipeline is scheduled.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This places all SectionWidget.MIXER* topology widgets, created by
the W_MIXER() macro on the same core, on which the respective
pipeline is scheduled.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This places all SectionWidget.KPBM* topology widgets, created by
the W_KPBM() macro on the same core, on which the respective pipeline
is scheduled.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This places all SectionWidget.DETECT* topology widgets, created by
the W_DETECT() macro on the same core, on which the respective
pipeline is scheduled.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This places all SectionWidget.DCBLOCK* topology widgets, created by
the W_DCBLOCK() macro on the same core, on which the respective
pipeline is scheduled.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This places all SectionWidget.SELECTOR* topology widgets, created by
the W_SELECTOR() macro on the same core, on which the respective
pipeline is scheduled.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This places all SectionWidget.EQFIR* topology widgets, created by
the W_EQ_FIR() macro on the same core, on which the respective pipeline
is scheduled.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This places all SectionWidget.<DAI type><DAI index>.IN topology
widgets, created by the W_DAI_IN() macro on the same core, on which
the respective pipeline is scheduled.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This places all SectionWidget.EQIIR* topology widgets, created by
the W_EQ_IIR() macro on the same core, on which the respective pipeline
is scheduled.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This places all SectionWidget.PCM*C topology widgets, created by
the W_PCM_CAPTURE macro on the same core, on which the respective
pipeline is scheduled.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This places all SectionWidget.<DAI type><DAI index>.OUT topology
widgets, created by the W_DAI_OUT() macro on the same core, on which
the respective pipeline is scheduled.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This adds an optional "core" parameter to the W_BUFFER() macro, which
then allows buffers to be placed on the same core as the rest of the
pipeline. So far we only modify pipe-volume-playback.m4 to do that,
other pipelines can be modified later as needed.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This places all SectionWidget.PGA* topology widgets, created by
the W_PGA() macro on the same core, on which the respective pipeline
is scheduled.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This places all SectionWidget.PCM*P topology widgets, created by
the W_PCM_PLAYBACK macro on the same core, on which the respective
pipeline is scheduled.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
We need a way to explicitly place components on specific DSP cores.
Add a SOF_TKN_COMP_CORE_ID word token for that.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
For headset playback or capture, default pipe is volume. If The high pass
filter is required to prevent HDA codec headset glitches, it can be set by
HSMICPROC=eq-iir-volume. It use use 40 Hz high pass filter with +0 db
boost. If there is DMIC, this set default pipe as eq-iir, which use
the same 40 Hz high-pass filter too. For DMIC16K, 40 Hz high-pass for 16khz
version filter is used.
Default coefficient for FIR/IIR is changed fr m coef flat to coef pass.
Pass configuration has the advantage of low system load.
eq_fir_coef_flat.m4 to eq_fir_coef_pass.m4
eq_iir_coef_flat.m4 to eq_iir_coef_pass.m4
Below pipe files are renamed for naming convention,
pipe-eq-volume-playback.m4 -> pipe-eq-iir-eq-fir-volume-playback.m4
pipe-eq-capture-16khz.m4 -> pipe-eq-iir-volume-capture-16khz.m4
pipe-eq-capture.m4 -> pipe-eq-iir-volume-capture.m4
Signed-off-by: Fred Oh <fred.oh@linux.intel.com>
The patch shows a proposal how to propagate pipeline filter
coefficients data definition at topology top level. It is an
useful way to avoid to create different new pipeline macros for
different filter. Define filter coefficients data with macro
DEF_EQFIR_PRIV and DEF_EQFIR_COEF, which will be replaced
unique name by adding PIPELINE number. For IIR filter, equivalent macro
is DEF_EQIIR_PRIV and DEF_EQIIR_COEF.
Makefile define each pipeline processing HSEARPROC, HSMICRPOC, SPKPROC,
DMICPROC etc. Each variable should support default value to minimize
current topologies. When new filter blob is required, define
PIPELINE_FILTERx in makefile. This method provides more flexible way
to support variable number of filters in the pipeline.
The other clean up for topology macros include definions for unique
volume tokens and unique filter coefficient definitions.
Signed-off-by: Fred Oh <fred.oh@linux.intel.com>
Add macro for binary blob generation for muxdemux. With this macro the
stream routing matrix will be easier to visualize and manipulate.
Signed-off-by: Jaska Uimonen <jaska.uimonen@intel.com>
Bit and byte manipulation macros are needed for building binary blobs,
so add them. Add also macro to generate sof_abi_version.
Signed-off-by: Jaska Uimonen <jaska.uimonen@intel.com>
This updates the minimal host buffer size to the
minimum value which enables sefe draining for all
pcm parameters.
Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com>
This patch provides an optional support for codec master mode and uses
a macro to change the frame sync as needed. The scheduling is also
changes to to DMA instead of TIMER.
The user is still required to manually copy the desired topology as
sof-tplg/sof-apl-pcm512x.tplg, but a manual configuration of the ACPI
initrd overlays and BIOS settings is required as well, so there's no
turn-key solution possible anyways.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Add generic dmic kwd template.
Need to define flowing variable to make it work:
CHANNELS: channel for the DMIC
KFBM_TYPE: kfpm or vol-kfpm
DMIC_PCM_48K_ID: PCM ID for 48K DMIC
DMIC_PIPELINE_48k_ID: pipeline ID for 48K DMIC
DMIC_DAI_LINK_48K_ID: dai link ID in machine dirver for
48K DMIC
DMIC_PCM_16k_ID: PCM ID for KWD 16K DMIC
DMIC_PIPELINE_16k_ID: pipeline ID for 16K DMIC
DMIC_PIPELINE_KWD_ID: pipeline ID for KWD
DMIC_DAI_LINK_16k_ID: dai link ID in machine driver
for 16K DMIC
Signed-off-by: Pan Xiuli <xiuli.pan@linux.intel.com>
glk da7119 bobba platform has DMIC already installed. It is good platform
to test DMIC with and without EQ.
Signed-off-by: Fred Oh <fred.oh@linux.intel.com>
This patch adds FIR coefficients for loudness effect, mid-boost, and
pass-through. They are useful when testing FIR pipelines.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch fixes the high-pass coefficients those produce 0 dB gain
instead of the intended +20 dB. Fortunately none of these have
been used in topology builds.
The 50 Hz +20 dB coefficient blobs those are used in some DMIC
capture pipelines did not have this issue due to being generated
before these and not modified when these were introduced.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds IIR responses band-pass, bass-boost, loudness, and
pass-through for inclusion to topology.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Successfully tested with both Make and Ninja on Linux.
Non-portable but approved by @jajanusz in former PR #2626
With this commit:
$ make -C tools/build_tools/ | wc -l
770
$ VERBOSE=anything make -C tools/build_tools/ | wc -l
10387
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
Add EQIIR and EQFIR to first playback pipeline. This help to expand more
equalizer testing across platforms.
Signed-off-by: Fred Oh <fred.oh@linux.intel.com>
Add EQIIR and EQFIR to first playback pipeline. This help to expand more
equalizer testing across platforms.
Signed-off-by: Fred Oh <fred.oh@linux.intel.com>
This commit includes a new test case in tplg-build.sh. It also includes
the new simple pipelines pipe-dcblock-capture/playback. Those new
pipelines are used by tplg-build.sh to generate the test pipelines.
Signed-off-by: Sebastiano Carlucci <scarlucci@google.com>
This commits adds the scripts to generate the bytes control blob
for the DCB. It also provides some generic scripts to convert
valid binary blob to a csv or binary file (usable by sof-ctl)
or an m4 byte control topology file.
This commit adds two new folders under tools/tune
- dcblock: scripts to generate the blob in Octave
- common: scripts to convert any generic blob to a config file.
Signed-off-by: Sebastiano Carlucci <scarlucci@google.com>
This change provides a DC Blocking Filter (DCB) component. A DCB is a
high-pass filter used to remove any DC offset from a signal. The
coefficients for the component can be set individually for each channel.
Currently, only the following formats are supported:
s16_le
s24_le
s32_le
Signed-off-by: Sebastiano Carlucci <scarlucci@google.com>
Instead of making new files for audio equalizer topology, reuse existing
topology and replace only volume pipeline by macro replacement.
Signed-off-by: Fred Oh <fred.oh@linux.intel.com>