Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tools: Topology2: Intel: Add enhanced speaker and DMIC processing to SDW PCs #9652

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions tools/topology/topology2/cavs-sdw.conf
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,14 @@
<virtual.conf>
singalsu marked this conversation as resolved.
Show resolved Hide resolved
<host-copier-gain-mixin-playback.conf>
<mixout-gain-alh-dai-copier-playback.conf>
<mixout-gain-eqiir-eqfir-drc-alh-dai-copier-playback.conf>
<dai-copier-eqiir-gain-module-copier-capture.conf>
<gain-capture.conf>
<gain-copier-capture.conf>
<deepbuffer-playback.conf>
<host-gateway-playback.conf>
<host-gateway-capture.conf>
<host-gateway-tdfb-drc-capture.conf>
<io-gateway.conf>
<io-gateway-capture.conf>
<highpass-capture-be.conf>
Expand Down Expand Up @@ -79,6 +81,11 @@ Define {
SDW_JACK_CAPTURE_CH 2
ADD_BT false
SDW_LINK_VALID_BITS 24
EFX_SPK_IIR_PARAMS passthrough
EFX_SPK_FIR_PARAMS passthrough
EFX_SPK_DRC_PARAMS passthrough
EFX_MIC_TDFB_PARAMS passthrough
EFX_MIC_DRC_PARAMS passthrough
}

# override defaults with platform-specific config
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
#
# Host gateway capture pipeline
#
# A host gateway pipeline for capture with TDFB and DRC processing. All attributes
# defined herein are namespaced by alsatplg to
# "Object.Pipeline.host-gateway-tdfb-drc-capture.N.attribute_name".
#
# Usage: host-gateway-tdfb-drc-capture pipeline object can be instantiated as:
#
# Object.Pipeline.host-gateway-tdfb-drc-capture."N" {
# period 1000
# time_domain "timer"
# }
#
# Where N is the unique pipeline ID within the same alsaconf node.
#

<include/components/drc.conf>
<include/components/tdfb.conf>
<include/pipelines/cavs/host-gateway-capture.conf>

Class.Pipeline."host-gateway-tdfb-drc-capture" {

SubTreeCopy.baseclass {
# this class extends the host-gateway-capture pipeline class.
source "Class.Pipeline.host-gateway-capture"

# target node is not defined which means that the new subtree will be copied to
# the parent node containing the SubTreeCopy node i.e in this case the
# Class.Pipeline.host-gateway-tdfb-drc-capture {} node.

# default copy type is to extend the base class ie the widgets and routes
# will be added to the existing list of widgets/routes in the base class

tree {
Object.Widget {
tdfb."1" {
Object.Control {
bytes."1" {
max 16384
IncludeByKey.EFX_MIC_TDFB_PARAMS {
"line2_pass" "include/components/tdfb/line2_pass.conf"
"line2_generic_pm10deg" "include/components/tdfb/line2_generic_pm10deg_48khz.conf"
"line2_50mm" "include/components/tdfb/line2_50mm_pm0_30_90deg_48khz.conf"
"line2_68mm" "include/components/tdfb/line2_68mm_pm0_30_90deg_48khz.conf"
"line2_74mm" "include/components/tdfb/line2_74mm_pm0_30_90deg_48khz.conf"
"line4_pass" "include/components/tdfb/line4_pass.conf"
"line4to2_pass" "include/components/tdfb/line4to2_pass.conf"
"line4_generic_pm10deg" "include/components/tdfb/line4_generic_pm10deg_48khz.conf"
"line4_28mm" "include/components/tdfb/line2_28mm_pm0_30_90deg_48khz.conf"
}
}
}
num_input_audio_formats 1
num_output_audio_formats 1
Object.Base.input_audio_format [
{
in_bit_depth 32
in_valid_bit_depth 32
}
]
Object.Base.output_audio_format [
{
out_bit_depth 32
out_valid_bit_depth 32
}
]
}

drc."1" {
Object.Control {
bytes."1" {
IncludeByKey.EFX_MIC_DRC_PARAMS {
"passthrough" "include/components/drc/passthrough.conf"
"dmic_default" "include/components/drc/dmic_default.conf"
}
}
}
num_input_audio_formats 1
num_output_audio_formats 1
Object.Base.input_audio_format [
{
in_bit_depth 32
in_valid_bit_depth 32
}
]
Object.Base.output_audio_format [
{
out_bit_depth 32
out_valid_bit_depth 32
}
]
}
}

Object.Base {
!route [
{
source tdfb.$index.1
sink drc.$index.1
}
]
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,12 @@ Class.Pipeline."mixout-gain-alh-dai-copier-playback" {
}

Object.Base {
route.1 {
source mixout.$index.1
sink gain.$index.1
}
!route [
{
source mixout.$index.1
sink gain.$index.1
}
]
}

direction "playback"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
#
# BE playback pipeline: mixout-gain-eqiir-eqfir-drc-alh-dai-copier.
#
# All attributes defined herein are namespaced
# by alsatplg to "Object.Pipeline.mixout-gain-eqiir-eqfir-drc-alh-dai-copier-playback.N.attribute_name"
#
# Usage: mixout-gain-eqiir-eqfir-drc-alh-dai-copier-playback pipeline object can be instantiated as:
#
# Object.Pipeline.mixout-gain-eqiir-eqfir-drc-alh-dai-copier-playback."N" {
# time_domain "timer"
# }
#
# Where N is the unique pipeline ID within the same alsaconf node.
#


<include/components/eqiir.conf>
<include/components/eqfir.conf>
<include/components/drc.conf>
<include/pipelines/cavs/mixout-gain-alh-dai-copier-playback.conf>

Class.Pipeline."mixout-gain-eqiir-eqfir-drc-alh-dai-copier-playback" {

SubTreeCopy.baseclass {
# this class extends the mixout-gain-alh-dai-copier-playback pipeline class.
source "Class.Pipeline.mixout-gain-alh-dai-copier-playback"

# target node is not defined which means that the new subtree will be copied to
# the parent node containing the SubTreeCopy node i.e in this case the
# Class.Pipeline.mixout-gain-eqiir-eqfir-drc-alh-dai-copier-playback {} node.

# default copy type is to extend the base class ie the widgets and routes
# will be added to the existing list of widgets/routes in the base class

tree {
Object.Widget {
eqiir."1" {
num_input_audio_formats 1
num_output_audio_formats 1

# 32-bit 48KHz 2ch
Object.Base.input_audio_format [
{
in_bit_depth 32
in_valid_bit_depth 32
}
]
Object.Base.output_audio_format [
{
out_bit_depth 32
out_valid_bit_depth 32
}
]

Object.Control.bytes."1" {
IncludeByKey.EFX_SPK_IIR_PARAMS {
"passthrough" "include/components/eqiir/passthrough.conf"
"highpass_20hz_0db_48khz" "include/components/eqiir/highpass_20hz_0db_48khz.conf"
"highpass_30hz_0db_48khz" "include/components/eqiir/highpass_30hz_0db_48khz.conf"
"highpass_40hz_0db_48khz" "include/components/eqiir/highpass_40hz_0db_48khz.conf"
"highpass_50hz_0db_48khz" "include/components/eqiir/highpass_50hz_0db_48khz.conf"
"highpass_100hz_0db_48khz" "include/components/eqiir/highpass_100hz_0db_48khz.conf"
}
}
}

eqfir."1" {
num_input_audio_formats 1
num_output_audio_formats 1

# 32-bit 48KHz 2ch
Object.Base.input_audio_format [
{
in_bit_depth 32
in_valid_bit_depth 32
}
]
Object.Base.output_audio_format [
{
out_bit_depth 32
out_valid_bit_depth 32
}
]

Object.Control.bytes."1" {
IncludeByKey.EFX_SPK_FIR_PARAMS {
"passthrough" "include/components/eqfir/passthrough.conf"
}
}
}

drc."1" {
num_input_audio_formats 1
num_output_audio_formats 1

# 32-bit 48KHz 2ch
Object.Base.input_audio_format [
{
in_bit_depth 32
in_valid_bit_depth 32
}
]
Object.Base.output_audio_format [
{
out_bit_depth 32
out_valid_bit_depth 32
}
]

Object.Control.bytes."1" {
IncludeByKey.EFX_SPK_DRC_PARAMS {
"passthrough" "include/components/drc/passthrough.conf"
"speaker_default" "include/components/drc/speaker_default.conf"
}
}
}
}

Object.Base {
!route [
{
source gain.$index.1
sink eqiir.$index.1
}
{
source eqiir.$index.1
sink eqfir.$index.1
}
{
source eqfir.$index.1
sink drc.$index.1
}
]
}
}
}
}
Loading
Loading