sof/tools/topology/sof-apl-dmic.m4

102 lines
3.0 KiB
Plaintext
Raw Normal View History

#
# Topology for Apollo Lake with direct attach digital microphones array
#
# Include topology builder
include(`utils.m4')
include(`dai.m4')
include(`pipeline.m4')
# Include TLV library
include(`common/tlv.m4')
# Include Token library
include(`sof/tokens.m4')
# Include Apollolake DSP configuration
include(`platform/intel/bxt.m4')
include(`platform/intel/dmic.m4')
define(DMIC_PDM_CONFIG, ifelse(CHANNELS, `4', ``FOUR_CH_PDM0_PDM1'',
`ifelse(CHANNELS, `2', ``STEREO_PDM0'', `')'))
#
# Define the pipelines
#
DMIC: Enable capture from secondary FIFO 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>
2019-01-18 01:42:08 +08:00
# PCM6 <----- DMIC6 (DMIC01)
# PCM7 <----- DMIC7 (DMIC16k)
#
dnl PIPELINE_PCM_ADD(pipeline,
dnl pipe id, pcm, max channels, format,
dnl frames, deadline, priority, core)
# Passthrough capture pipeline 6 on PCM 6 using max channels defined by CHANNELS.
DMIC: Enable capture from secondary FIFO 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>
2019-01-18 01:42:08 +08:00
# Schedule 48 frames per 1000us deadline on core 0 with priority 0
PIPELINE_PCM_ADD(sof/pipe-volume-capture.m4,
6, 6, CHANNELS, s32le,
DMIC: Enable capture from secondary FIFO 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>
2019-01-18 01:42:08 +08:00
48, 1000, 0, 0)
# Passthrough capture pipeline 7 on PCM 7 using max channels defined by CHANNELS.
# Schedule 48 frames per 1000us deadline on core 0 with priority 0
PIPELINE_PCM_ADD(sof/pipe-volume-capture.m4,
7, 7, CHANNELS, s32le,
48, 1000, 0, 0)
#
# DAIs configuration
#
dnl DAI_ADD(pipeline,
dnl pipe id, dai type, dai_index, dai_be,
dnl buffer, periods, format,
dnl frames, deadline, priority, core)
# capture DAI is DMIC 0 using 2 periods
# Buffers use s32le format, with 48 frame per 1000us on core 0 with priority 0
DAI_ADD(sof/pipe-dai-capture.m4,
DMIC: Enable capture from secondary FIFO 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>
2019-01-18 01:42:08 +08:00
6, DMIC, 0, NoCodec-6,
PIPELINE_SINK_6, 2, s32le,
48, 1000, 0, 0)
DMIC: Enable capture from secondary FIFO 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>
2019-01-18 01:42:08 +08:00
# capture DAI is DMIC 1 using 2 periods
# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0
DAI_ADD(sof/pipe-dai-capture.m4,
7, DMIC, 1, NoCodec-7,
PIPELINE_SINK_7, 2, s16le,
48, 1000, 0, 0)
DMIC: Enable capture from secondary FIFO 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>
2019-01-18 01:42:08 +08:00
dnl PCM_DUPLEX_ADD(name, pcm_id, playback, capture)
dnl PCM_CAPTURE_ADD(name, pipeline, capture)
DMIC: Enable capture from secondary FIFO 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>
2019-01-18 01:42:08 +08:00
PCM_CAPTURE_ADD(DMIC01, 6, PIPELINE_PCM_6)
PCM_CAPTURE_ADD(DMIC16k, 7, PIPELINE_PCM_7)
#
# BE configurations - overrides config in ACPI if present
#
dnl DAI_CONFIG(type, dai_index, link_id, name, ssp_config/dmic_config)
DAI_CONFIG(DMIC, 0, 6, NoCodec-6,
dnl DMIC_CONFIG(driver_version, clk_min, clk_mac, duty_min, duty_max,
DMIC: Enable capture from secondary FIFO 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>
2019-01-18 01:42:08 +08:00
dnl sample_rate, fifo word length, type, dai_index,
dnl pdm controller config)
DMIC_CONFIG(1, 500000, 4800000, 40, 60, 48000,
dnl DMIC_WORD_LENGTH(frame_format)
DMIC_WORD_LENGTH(s32le), DMIC, 0,
dnl PDM_CONFIG(type, dai_index, num pdm active, pdm tuples list)
dnl STEREO_PDM0 is a pre-defined pdm config for stereo capture
PDM_CONFIG(DMIC, 0, DMIC_PDM_CONFIG)))
DMIC: Enable capture from secondary FIFO 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>
2019-01-18 01:42:08 +08:00
DAI_CONFIG(DMIC, 1, 7, NoCodec-7,
dnl DMIC_CONFIG(driver_version, clk_min, clk_mac, duty_min, duty_max,
dnl sample_rate, fifo word length, type, dai_index,
dnl pdm controller config)
DMIC_CONFIG(1, 500000, 4800000, 40, 60, 16000,
dnl DMIC_WORD_LENGTH(frame_format)
DMIC_WORD_LENGTH(s16le), DMIC, 1,
dnl PDM_CONFIG(type, dai_index, num pdm active, pdm tuples list)
dnl STEREO_PDM0 is a pre-defined pdm config for stereo capture
PDM_CONFIG(DMIC, 1, DMIC_PDM_CONFIG)))