# Redefine headphone control FOR SOF. This is same as Headphone in HDA/HiFi-analog.conf
# but adds DRC and EQ controls.
-DefineMacro.SofControl {
- Define.EndpointDrcVar "${var:__endpoint}DrcBlob"
- Define.EndpointIirVar "${var:__endpoint}IirBlob"
- Define.EndpointFirVar "${var:__endpoint}FirBlob"
+DefineMacro.SofAnalogPlaybackControl {
+ Define.EndpointDrcVar "PostMixerAnalogPlayback${var:__endpoint}DrcBlob"
+ Define.EndpointIirVar "PostMixerAnalogPlayback${var:__endpoint}IirBlob"
+ Define.EndpointFirVar "PostMixerAnalogPlayback${var:__endpoint}FirBlob"
Define.EndpointDrcBlob "${var:$EndpointDrcVar}"
Define.EndpointIirBlob "${var:$EndpointIirVar}"
Define.EndpointFirBlob "${var:$EndpointFirVar}"
If.endpoint_with_drc {
Condition {
Type ControlExists
- Control "name='${var:PostMixerAnalogPlaybackDRCSwitch}'"
+ Control "name='${var:PostMixerAnalogPlaybackDrcSwitch}'"
}
True {
EnableSequence [
# For debug uncomment below the echo command to see what blobs are applied
#shell "/bin/echo '${var:__endpoint} ${var:EndpointIirBlob} ${var:EndpointFirBlob} ${var:EndpointDrcBlob}' >> /tmp/alsa-ucm.txt"
- cset "name='${var:PostMixerAnalogPlaybackDRCSwitch}' ${var:__drcswitch}"
- cset-tlv "name='${var:PostMixerAnalogPlaybackDRCBytes}' ${var:EndpointDrcBlob}"
- cset-tlv "name='${var:PostMixerAnalogPlaybackIIRBytes}' ${var:EndpointIirBlob}"
- cset-tlv "name='${var:PostMixerAnalogPlaybackFIRBytes}' ${var:EndpointFirBlob}"
+ cset "name='${var:PostMixerAnalogPlaybackDrcSwitch}' ${var:__drcswitch}"
+ cset-tlv "name='${var:PostMixerAnalogPlaybackDrcBytes}' ${var:EndpointDrcBlob}"
+ cset-tlv "name='${var:PostMixerAnalogPlaybackIirBytes}' ${var:EndpointIirBlob}"
+ cset-tlv "name='${var:PostMixerAnalogPlaybackFirBytes}' ${var:EndpointFirBlob}"
]
}
False.If.endpoint_with_eq {
Condition {
Type ControlExists
- Control "name='${var:PostMixerAnalogPlaybackFIRBytes}'"
+ Control "name='${var:PostMixerAnalogPlaybackFirBytes}'"
}
True {
EnableSequence [
# For debug uncomment below the echo command to see what blobs are applied
#shell "/bin/echo '${var:__endpoint} ${var:EndpointIirBlob} ${var:EndpointFirBlob}' >> /tmp/alsa-ucm.txt"
- cset-tlv "name='${var:PostMixerAnalogPlaybackIIRBytes}' ${var:EndpointIirBlob}"
- cset-tlv "name='${var:PostMixerAnalogPlaybackFIRBytes}' ${var:EndpointFirBlob}"
+ cset-tlv "name='${var:PostMixerAnalogPlaybackIirBytes}' ${var:EndpointIirBlob}"
+ cset-tlv "name='${var:PostMixerAnalogPlaybackFirBytes}' ${var:EndpointFirBlob}"
]
}
}
# Merge this to Headpones subtree in HDA/HiFi-analog.conf
SectionDevice."Headphones" {
- Macro.headphone.SofControl "endpoint=Headphone drcswitch=off"
+ Macro.headphone.SofAnalogPlaybackControl "endpoint=Headphone drcswitch=off"
}
# Merge this to Speaker subtree in HDA/HiFi-analog.conf
Control "name='Speaker Playback Switch'"
}
True.SectionDevice."Speaker" {
- Macro.speaker.SofControl "endpoint=Speaker drcswitch=on"
+ Macro.speaker.SofAnalogPlaybackControl "endpoint=Speaker drcswitch=on"
}
}
True.Define.SOFProduct "${sys:devices/virtual/dmi/id/board_name}"
}
+Define {
+ PostMixerAnalogPlaybackIirBytes "N/A"
+ PostMixerAnalogPlaybackFirBytes "N/A"
+ PostMixerAnalogPlaybackDrcBytes "N/A"
+ PostMixerAnalogPlaybackDrcSwitch "N/A"
+}
+
If.SOFIPCVer {
Condition {
Type ControlExists
}
True.Define {
SOFIPCVer "ipc4"
- PostMixerAnalogPlaybackIIRBytes "Post Mixer Analog Playback IIR Eq bytes"
- PostMixerAnalogPlaybackFIRBytes "Post Mixer Analog Playback FIR Eq bytes"
- PostMixerAnalogPlaybackDRCBytes "Post Mixer Analog Playback DRC bytes"
- PostMixerAnalogPlaybackDRCSwitch "Post Mixer Analog Playback DRC switch"
+ PostMixerAnalogPlaybackIirBytes "Post Mixer Analog Playback IIR Eq bytes"
+ PostMixerAnalogPlaybackFirBytes "Post Mixer Analog Playback FIR Eq bytes"
+ PostMixerAnalogPlaybackDrcBytes "Post Mixer Analog Playback DRC bytes"
+ PostMixerAnalogPlaybackDrcSwitch "Post Mixer Analog Playback DRC switch"
}
False.Define {
SOFIPCVer "ipc3"
- PostMixerAnalogPlaybackIIRBytes "EQIIR1.0 eqiir_coef_1"
- PostMixerAnalogPlaybackFIRBytes "EQFIR1.0 eqfir_coef_1"
- PostMixerAnalogPlaybackDRCBytes "not available"
- PostMixerAnalogPlaybackDRCSwitch "not available"
+ PostMixerAnalogPlaybackIirBytes "EQIIR1.0 eqiir_coef_1"
+ PostMixerAnalogPlaybackFirBytes "EQFIR1.0 eqfir_coef_1"
}
}
Condition { Type AlwaysTrue }
True.Define {
BlobPath "${ConfTopDir}/blobs/sof/${var:SOFIPCVer}"
- SpeakerIirBlob "${var:BlobPath}/eq_iir/highpass_100hz_0db_48khz.blob"
- SpeakerFirBlob "${var:BlobPath}/eq_fir/pass.blob"
- SpeakerDrcBlob "${var:BlobPath}/drc/speaker_default.blob"
- HeadphoneIirBlob "${var:BlobPath}/eq_iir/pass.blob"
- HeadphoneFirBlob "${var:BlobPath}/eq_fir/pass.blob"
- HeadphoneDrcBlob "${var:BlobPath}/drc/passthrough.blob"
+ PostMixerAnalogPlaybackSpeakerIirBlob "${var:BlobPath}/eq_iir/highpass_100hz_0db_48khz.blob"
+ PostMixerAnalogPlaybackSpeakerFirBlob "${var:BlobPath}/eq_fir/pass.blob"
+ PostMixerAnalogPlaybackSpeakerDrcBlob "${var:BlobPath}/drc/speaker_default.blob"
+ PostMixerAnalogPlaybackHeadphoneIirBlob "${var:BlobPath}/eq_iir/pass.blob"
+ PostMixerAnalogPlaybackHeadphoneFirBlob "${var:BlobPath}/eq_fir/pass.blob"
+ PostMixerAnalogPlaybackHeadphoneDrcBlob "${var:BlobPath}/drc/passthrough.blob"
ConfPathFromDMI "${var:SOFVendor}/${var:SOFProduct}.conf"
SOFProductConfig "/blobs/sof/product_configs/${var:ConfPathFromDMI}"
SOFConfFullPath "${ConfTopDir}${var:SOFProductConfig}"
# Note: Use the correct IPC version for the blobs path
# Example set all processing to bypass
-#Define.SpeakerIirBlob "/usr/share/alsa/ucm2/blobs/sof/ipc4/eq_iir/pass.blob"
-#Define.SpeakerFirBlob "/usr/share/alsa/ucm2/blobs/sof/ipc4/eq_fir/pass.blob"
-#Define.SpeakerDrcBlob "/usr/share/alsa/ucm2/blobs/sof/ipc4/drc/passthrough.blob"
-#Define.HeadphoneIirBlob "/usr/share/alsa/ucm2/blobs/sof/ipc4/eq_iir/pass.blob"
-#Define.HeadphoneFirBlob "/usr/share/alsa/ucm2/blobs/sof/ipc4/eq_fir/pass.blob"
-#Define.HeadphoneDrcBlob "/usr/share/alsa/ucm2/blobs/sof/ipc4/drc/passthrough.blob"
+#Define.PostMixerAnalogPlaybackSpeakerIirBlob "/usr/share/alsa/ucm2/blobs/sof/ipc4/eq_iir/pass.blob"
+#Define.PostMixerAnalogPlaybackSpeakerFirBlob "/usr/share/alsa/ucm2/blobs/sof/ipc4/eq_fir/pass.blob"
+#Define.PostMixerAnalogPlaybackSpeakerDrcBlob "/usr/share/alsa/ucm2/blobs/sof/ipc4/drc/passthrough.blob"
+#Define.PostMixerAnalogPlaybackHeadphoneIirBlob "/usr/share/alsa/ucm2/blobs/sof/ipc4/eq_iir/pass.blob"
+#Define.PostMixerAnalogPlaybackHeadphoneFirBlob "/usr/share/alsa/ucm2/blobs/sof/ipc4/eq_fir/pass.blob"
+#Define.PostMixerAnalogPlaybackHeadphoneDrcBlob "/usr/share/alsa/ucm2/blobs/sof/ipc4/drc/passthrough.blob"