to align with machine driver
The physical link iDisp1 ID for HDMI should be changed to 3,4,5
to align with machine driver. ID 2 is defined for DMIC16k.
Signed-off-by: Zhang Keqiao <keqiao.zhang@linux.intel.com>
This patch provides needed maintenance. The pipelines
missed the volume ramp tokens and caused topology build fail for
topologies those would use the pipeline macros
pipe-eq-fir-volume-playback.m4 and pipe-eq-iir-volume-playback.m4.
The embedded filter coefficients in these pipelines were replaced
by included default FIR and IIR filter coefficients to fix ABI
incompatibility in the configuration blobs and ease future
maintenance of these pipelines.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
driver
The BE id for amplifier pipeline should be changed to 6 to align with
machine driver (The commit ASoC: Intel: sof-rt5682: correct naming for
dmic16k).
Cc: Sathya Prakash M R <sathya.prakash.m.r@intel.com>
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
Add volume component, change to use 16KHz sample rate, and modify the
PCM ID from 5 to 8, as it is in lower priority comparing with pipelines
like amplifier.
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
As dmic only support 16 bit or 32 bit, we configure dmic dai to be
s32_le, and pipelines to be s24_le.
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
We need volume component after dmic for either volume change or format
converting, here add volume component between dmic and kpb.
And after this, our kwd can support all s16_le, s24_4le, and s32_le PCM
capabilities.
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
It is derived from sof-cml-rt5682.m4, keyword detect pipelines added to
it for Keyphrase Detection feature support.
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
For detector component, the size of configure blob can be up to 300KB,
here enlarge the max to meet this requirement.
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
This patch adds to all DMIC related topologies the new token
SOF_TKN_INTEL_DMIC_UNMUTE_RAMP_TIME_MS. The value is set to 400
to correspond to 400 milliseconds long unmute ramp time. The
topology defined unmute will override the firmware internal
hard coded value if it is set in topology.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch provides default parameters for newly added
detect_preamble and history_depth. Both by default are
set to max buffering time of KPB.
Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com>
Byt media pipeline has different parameters in topology for scheduling
deadline and frame count than apl. This produces funny 4-8x speed
playback. So unify with apl media pipe.
Signed-off-by: Jaska Uimonen <jaska.uimonen@intel.com>
Some of interface headers are not needed by kernel,
but are needed by user-space applications, so we can split them
into multiple directories that indicate their purpose.
Signed-off-by: Janusz Jankowski <janusz.jankowski@linux.intel.com>
Pipeline format determines the buffer size calculation. With the
pipeline format set to S16_LE, hw_params fails for S24_LE and S32_LE
formats. So, change the pipeline format to s32le to support all
three formats.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
This patch changes the secondary DMIC FIFO configuration into 32 bits
mode for better quality. Since there is volume component in DMIC
capture pipelines the conversion to other PCM formats can happen
there. Using volume controller with 32 bit input gives a lot better
audio quality when the microphone signal needs amplification.
The scheduling of 16 kHz DAI is changed to 1000us. The comment
of 1000 us is correct but the parameter 48 is not. With 16 frames
the scheduling becomes the desired. This change should also save
some RAM due to smaller buffers.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch restores the missing configuration into macro
intel-generic-dmic.m4. Without this patch the 48 kHz DMIC DAI
is not created. Both DMIC FIFOs are available at any channels
number and PCM format so there is no need to delete a DAI when
4ch configuration is used.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Currently we have 1.5 times buffering after SRC in media pipeline. This
will not work for S24 or S32 playback as SRC will use the bigger buffers
with non-integer sample rate conversions as 44.1kHz to 48kHz. So add as
big buffer after SRC as before it.
Signed-off-by: Jaska Uimonen <jaska.uimonen@intel.com>
Demux topology doesn't have format conversions so playback files need to
be converted to S24 or S32 format. As this is a bit cumbersome add
volume component to demux topology to enable standard 16 bit playback
from alsa. Also change the demux capture pipe PCM format range.
Signed-off-by: Jaska Uimonen <jaska.uimonen@intel.com>
Add virtual widgets to remove error warnings in kernel dmesg logs, this
is also aligned to sof-glk-da7219 topology file.
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
This patch fixes two things:
- Configures HDA pipelines to be timer driven.
- Moves definition of pipe-kfbm-capture to avoid overwrite
of deadline and frames for other pipelines.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
The example and test topologies demonstrate new non-symmetrical
microphones/channels setup for capture via FIFOs A and B.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
settings
We should load_mips to be 0, align values with default settings, that
is:
load_mips = 0, load_memory_size = 0, keyphrase_length = 0x780,
activation_shift = 0x3, activation_threshold = 0x3fff.
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
Add whl define to cmakefile to compile the cml demux topology
correctly with SSP names and indexes defined.
Signed-off-by: Jaska Uimonen <jaska.uimonen@intel.com>
This topology will add a capture branch back from playback pipeline's
mux component. It can be used for example as a echo cancellation
reference signal.
Signed-off-by: Jaska Uimonen <jaska.uimonen@intel.com>
This patch renames the macro to pipe-src-volume-playback.m4 for
consistency with other audio processing plus volume
pipelines. The topologies those use it are modified for the new
file name.
A new macro for testbench usage called pipe-src-playback.m4 is
added. It is plain SRC component pipeline without volume. The
volume component in the pipeline caused difficulties with test.
The script tools/test/topology/tplg-build.sh will use the
pipeline to create test topology for SRC component.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
We design to use bytes kcontrol to send kpb configuration data via IPC
from topology, here implement it.
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
This patch adds volume configuration tokens as fifth parameter
for pga.m. All the topologies those use W_PGA() are updated to
use a linear (type=0) ramp with length of 250 ms.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Add topology file sof-glk-da7219-kwd.m4 which is used for Keyword
Detection feature integrated on GLK platform.
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
DMIC16k only supports 16KHz sample rate. It should use
pipe-volume-capture-16khz.m4 to create the pipe which supports
the 16KHz recording.
Signed-off-by: Libin Yang <libin.yang@intel.com>
DMIC16k only supports 16000Hz sample rate. pipe-volume-capture.m4
only supports 48000Hz. Add pipe-volume-capture-16khz.m4 to support 16KHz
record.
Signed-off-by: Libin Yang <libin.yang@intel.com>
This patch does the following:
1. Modify pipe-pcm-media to use the SCHED_COMP macro to set the
scheduling comp for the media pipeline.
2. Add low-latency and media pipelines to the apl nocodec
and apl pcm512x.
3. For the byt codec and nocodec topologies, modify the
PIPELINE_PCM_ADD macro to pass the scheduling comp name
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
This will be used by pipelines like the media pipeline, which will
need the information to set up their scheduling comps.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Add the scheduling comp argument to PIPELINE_PCM_ADD that
will be used to pass the name of the scheduling comp
when the pipeline is created.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Now sof kernel driver supports two dmic dai links: DMIC01 PIN,
which supports rate of 48k, and DMIC16k Pin, which supports rate
of 16k. And if four channels dmic is used, we only support one dmic
dai link. CHANNELS would check in intel-generic-dmic to generate
the correct topology file.
Tested on whiskylake & icelake & apollolake up2
Signed-off-by: Rander Wang <rander.wang@linux.intel.com>
The macro in tlv.m4 defines a volume scale from -64 dB with 2 dB
steps for playback pipelines. Hence the name m90s3 is incorrect.
The new name m64s2 is a correct description of the defined volume
scale. It's useful since there's another volume scale defined for
capture pipelines.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch replaces the -64 to 0 dB volume scale for capture with
more practical -50 to +30 dB gain. The step is 1 dB. It allows to
compensate for different microphone model sensitivities when constant
acoustical decibels to digital decibels level is needed in a
microphone capture application.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Increases number of periods for low latency playback pipeline
from 1 to 2 for volume and mixer components. 1 period
is not good enough to have continuous DMA transfer across
the whole pipeline, especially with the new copy flow,
which requires playback pipeline preload.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
This patch fixes 2ch dmic capture topology. It appeared as topology
completion fail in SOF boot. The missing quote characters in m4
caused the STEREO_PDM0 macro triggered lines to no not be included
into conf file.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Use the SOF project root directory in get_abi.sh to read the
ABI macros instead of using the relative path.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
We can add ABI information to the Manifest section. So kernel can
check if the topology is compatible with the kernel.
Signed-off-by: Bard liao <yung-chuan.liao@linux.intel.com>
Abort build if not all mandatory arguments are passed to
the macros. This should help to catch invalid usage.
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Rename 'deadline' to 'period' to indicate pipeline scheduling period,
and add time domain to indicate the pipeline scheduling domain (e.g. DMA
interrupt, timer interrupt).
Please be noticed that this might introduce an abi change so consequent
abi changes in both FW and driver side are needed.
Haven't set the flag in topology/sof/sof-xxx.m4 yet, that means it will
use io/interrupt scheduling for those topologies/pipelines at the
moment, if wanna to change them, please change them specific there.
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Add quirks parameter in SSP_CONFIG_DATA(). Enable LBM in dupulex pipelines
by setting quirks as SOF_DAI_INTEL_SSP_QUIRK_LBM 64(1<<6). SSPx.IN port get
PCM data from SSPx.OUT. Note both mclk and quirks are optional parameter.
When quirks set, mclk should have value or initialize to default value
which is 0.
Signed-off-by: Fred Oh <fred.oh@linux.intel.com>
Support quirks setting from topology. quirk are used to set
ssc1/ssc2 registers according to its bit value.
Signed-off-by: Fred Oh <fred.oh@linux.intel.com>
This is useful for headless devices such as Up2 with no external
HDAudio codec but an HDMI/DP output.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Use the same m4 file to generate the topology for all bdw
boards based on the CODEC name defined during compilation.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
BYT with RT5645, RT5640, RT5651 and DA7213 all have similar
topologies with the only difference in codec name. Merge
them all into a single m4 file and set the codec name
using the macro defined during compilation.
This will also take care of adding the virtual widgets
for all the BYT topologies for compatibility with the
machine drivers.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Merge the 2 m4 files and use the PLATFORM defined during
compilation to generate the appropriate topology.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Use the same m4 files to generate both 2ch and 4ch topologies
by defining channels during compilation.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
The only difference between them is the SSP index and name.
Use a macro during compilation to indicate which platform
we're building for and set these appropriately.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Add pipeline with keyword detect and channel selector comps.
This should be connected to a capture pipeline such as
pipe-kfbm-capture.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
Add support for constructing and adding keyword detect
component in topology
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
Add support for generic capture pipeline with a KPBM between PCM and
other pipelines. This can be used for Keyword detection use case.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
We can use widget type combined with component type to identify specific
process type, the subtype is no need anymore, here remove it.
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
Add virtual widgets for ssp2 RX/TX for compatibility with the
bytcr_rt5651 machine driver. This is needed now because a recent
change in the driver removed these from the dai definitions
which results in card registration failure.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Some properties are not populated from the topologies and not being used
by DSP either. Need to clean up token data structures. These are
identified as unused.
comp_tokens: preload_count
dai_tokens: dmac_config
Signed-off-by: Fred Oh <fred.oh@linux.intel.com>
the kcontrol item name doesn't follow the SOURCE:DIRECTION:FUNCTION, and
can't separate playback and capture when display in alsamixer.
This fix is to move the pipeline id from the end of the name to the
head, this will make alsamixer to serperate playback and capture when
press F3 F4.
Signed-off-by: Zhu Yingjiang <yingjiang.zhu@linux.intel.com>
Some pipelines might need to share the scheduling comp
with other pipelines. In this case, the scheduling comp
name should be passed as an argument.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
The token can be used for more generic processing, not only effect
component, let's rename it.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
This route is automatically created when the host comp is created
during topology loading. So remove it to avoid duplicating
the connection in the dapm graph.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
alsatplg allows setting inverted bclk and fsync polarities
by setting either bclk_invert or fsync_invert to "true".
This patch adds a default parameter in the SSP_CLOCK m4
macro which allows setting inverted bclk and fsync polarities.
Signed-off-by: Dragos Tarcatu <dragos_tarcatu@mentor.com>
Add topology for WHL with RT5682. This will be merged with
sof-cml-rt5682 in the future to avoid maintaining 2 files
with just the difference in SSP port numbers.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
The CML board has the rt5682 connected to SSP0 and the
machine driver defines the dai link for the headset
with the name "SSP0-codec" too. So change the topology
file accordingly.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
missing 2 in DAI_ADD() macro. This seems to be the only place where this
typo/mistake happens
we really need a parameter checker or move away from M4...
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Nocodec machine driver adds all the BE dai links with
ID's linearly incrementing from 0. So the link ID
should match with the SSP dai index.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
This patch enables the FIFO B in addition to previously supported
FIFO A. It allows in topology to use in pipelines the DMIC DAI
type with indices 0 and 1. The DAI instances can be operated with
different sample rate and different PCM format. The other
topology parameters for microphones need to be the same (number
of channels and enabled microphones). If the request via topology
differs for those parameters the latter request overrides the
first request. Typical usage for this added feature is to provide
compact 16 kHz / 16 bit capture version for speech in addition to
normal 48 kHz / 32 bit media quality audio capture.
The DMIC HW actually provides a bit more freedom for FIR/FIFO A/B
usage difference but all of that is not exposed yet via the
driver due to added complexity.
Some trace prints for DMIC parameters and used configuration are
modified to print shorter lines for easier reading. The print
order is adjusted to be more logical.
The patch modifies two topologies to showcase the feature. The
sof-apl-dmic-2ch/4ch topologies for APL nocodec machine driver
are changed to instantiate in addition PCM7 set for 16 kHz 16 bit
format in addition to earlier PCM6.
Note: The required change to pipe-passthrough-capture.m4 PCM
capability to enable other than 48 kHz rate is not done to not
break important test cases. Another PR addresses the PCM
capabilities and after it is merged allowing 16 kHz PCM for DMIC
capture can be done safely.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This was never properly supported and generates errors. Will re-add when it
actually works
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
sof audio pipeline with the format of 24bit doesn't
work on HDA platform. It is caused by sample data layout. SOF supports
S24_LE, and each sample format is like pattern of 0ddd, d stands for
data. Samples are padded with 0‟s at the MSB.
Link dma copys samples directly to hda bus, but hda bus requires samples
layout like pattern of ddd0. Samples are padded with 0‟s at the LSB to
left justify the sample within the container.
Now there is a volume at the end of hda pipeline. We only need to
convert dai type from S24_LE to S32_LE to make volume convert hda data to
correct format
Signed-off-by: Rander Wang <rander.wang@linux.intel.com>
add the topology file for Cometlake with codec rt5682, a
analog codec with SSP1, and DMIC, HDMIs
Signed-off-by: Zhu Yingjiang <yingjiang.zhu@linux.intel.com>
remove the HDA_DAI_CONFIG macro and reuse the DAI_CONFIG
macro with type HDA. This will ensure the hw_config
section gets added for HDA dai's as well.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
This patch adds a volume component after SRC to be able to convert
the variable pipeline s16/s24/s32 PCM format into PCM format used
by DAI. The PCM capabilities are changed to allow all formats.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds to IIR EQ capability to convert from s32 source to
s16/s24/s32 sink formats in normal PCM samples equalization. The
feature is useful in microphone equalization where input dynamic
range is high but where pipeline needs to be lower word length. A
typical IIR high-pass response when combined with gain will reduce
the dynamic range by suppressing lowest frequencies from signal to
better fit the smaller sample word length.
The PCM capability in topology macro pipe-eq-capture.m4 is changed to
allow the s16/s24/s32 formats.
The patch also includes 4096 bytes increase to SOF_TEXT_SIZE for CNL
platform.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch updates the provided example responses as data for
sof-eqctl and in the include files for topologies. The updates into
Matlab scripts are included also. The FIR and IIR example script is
updated to contain all examples.
The patch includes also a bug fix into IPC handler where the check
against SOF_IPC_MSG_MAX_SIZE is off by one and caused it to reject
all set data commands (to the EQs).
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds 50 kHz into SRC generator script for std and tiny
profiles. The src generator script is cleaned up and the default
conversion matrix is moved into caller script for easier maintenance.
The plots appearance is improved and the generated coefficients code
look is improved to pass the git pre- and post-commit script
requirements.
The SRC test bench scripts are updated for changed locations. A SRC
playback topology is used for test bench and real device usage.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
By default topology is using too many capture and playback PCMs, DAIs and
pipelines for available host GW DMAC channels. Comment out some so that
DMAC channels stay within bounds. This also gives users options to
re-enable for theer given test HW.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
The requirement for DMIC capture is to support upto 4ch
and 16-bit format. So modify the topology accordingly.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Somehow those two files should only differ on SSP connections and MCLK
ID1, so it's pretty obvious no one has tested this since August...
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
This refinement follows commit on WHL
topology: whl: refine topology for hda on whl
Fix the issue that ipc timeout when simutalously playback
and capture. Now in FW, playback and capture are supported
by different dai. So dai index should be different for playback
and capture in the same be dai, or playback would use the same
dai as capture
Signed-off-by: Rander Wang <rander.wang@linux.intel.com>
This patch adds the ABI header into topology EQ data files and updates
the pipe-eq-volume-playback.m4 to include the coefficients from m4
directory like other topology files to prevent duplication of
response data.
The CONTROLBYTES_MAX is decreased to 304 due to larger IPC header size.
The update is not critical since the kernel contains other checks to
cover this. However it's done to avoid confusion.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Modify hard-coded virtual widgets to prevent kernel
warnings generated by the machine driver. No need to
add virtual_dapm_routes. Just adding the required virtual
widgets suffices to suppress the warnings.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Modify virtual_widget macro definition to take type as
an input so it can used for different types and update
its users.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Fix the issue that ipc timeout when simutalously playback
and capture. Now in FW, playback and capture are supported
by different dai. So dai index should be different for playback
and capture in the same be dai, or playback would use the same
dai as capture
Signed-off-by: Rander Wang <rander.wang@linux.intel.com>