# Use case Configuration for sof-hda-dsp

SectionVerb {
	If.automute {
		Condition {
			Type ControlExists
			Control "name='Auto-Mute Mode'"
		}
		True {
			EnableSequence [
				cset "name='Auto-Mute Mode' 'Disabled'"
			]
		}
	}
}

SectionDevice."Headphones" {
	Comment "Headphones"

	If.headphone_switch {
		Condition {
			Type ControlExists
			Control "name='Headphone Playback Switch'"
		}
		True {
			EnableSequence [
				cset "name='Headphone Playback Switch' on"
			]
			DisableSequence [
				cset "name='Headphone Playback Switch' off"
			]
		}
	}

	Value {
		PlaybackPriority 200
		PlaybackPCM "hw:${CardId}"
		PlaybackMixerElem "Headphone"
		PlaybackMasterElem "Master"
		PlaybackVolume "Headphone Playback Volume"
		PlaybackSwitch "Headphone Playback Switch"
		If.jack {
			Condition {
				Type ControlExists
				Control "iface=CARD,name='Headphone Mic Jack'"
			}
			True {
				JackControl "Headphone Mic Jack"
			}
			False {
				JackControl "Headphone Jack"
			}
		}
	}
}

SectionDevice."Speaker" {
	Comment "Speaker"

	If.seq {
		Condition {
			Type ControlExists
			Control "name='Bass Speaker Playback Switch'"
		}
		True {
			EnableSequence [
				cset "name='Speaker Playback Switch' on"
				cset "name='Bass Speaker Playback Switch' on"
			]

			DisableSequence [
				cset "name='Speaker Playback Switch' off"
				cset "name='Bass Speaker Playback Switch' off"
			]
		}
		False {
			EnableSequence [
				cset "name='Speaker Playback Switch' on"
			]

			DisableSequence [
				cset "name='Speaker Playback Switch' off"
			]
		}
	}

	Value {
		PlaybackPriority 100
		PlaybackPCM "hw:${CardId}"
		PlaybackMixerElem "Speaker"
		PlaybackMasterElem "Master"
		PlaybackVolume "Speaker Playback Volume"
		PlaybackSwitch "Speaker Playback Switch"
	}
}

If.monomic {
	Condition {
		Type ControlExists
		Control "name='Input Source'"
		ControlEnum "Headphone Mic"
	}
	After.SectionDevice "Mic1"
	True {
		SectionDevice."Mic2" {
			Comment "Headphones Stereo Microphone"

			ConflictingDevice [
				"Headset"
			]

			EnableSequence [
				cset "name='Input Source' 'Headphone Mic'"
			]

			Value {
				CapturePriority 200
				<sof-hda-dsp/HDA-Capture-value.conf>
				CaptureMasterElem "Headphone Mic Boost"
				JackControl "Headphone Mic Jack"
			}
		}

		SectionDevice."Headset" {
			Comment "Headset Mono Microphone"

			EnableSequence [
				cset "name='Input Source' Headset Mic"
			]

			Value {
				CapturePriority 300
				<sof-hda-dsp/HDA-Capture-value.conf>
				CaptureMasterElem "Headset Mic Boost"
				JackControl "Headphone Mic Jack"
			}
		}
	}
	False {
		SectionDevice."Mic2" {
			Comment "Headphones Stereo Microphone"

			Value {
				CapturePriority 200
				<sof-hda-dsp/HDA-Capture-value.conf>
				CaptureMasterElem "Mic Boost"
				JackControl "Mic Jack"
			}
		}
	}
}

SectionDevice."Mic1" {
	Comment "Digital Microphone"

	Value {
		CapturePriority 100
		CapturePCM "hw:${CardId},6"
		If.chn {
			Condition {
				Type String
				Haystack "${CardComponents}"
				Needle "cfg-dmics:4"
			}
			True {
				CaptureChannels 4
			}
		}
		If.vol {
			Condition {
				Type ControlExists
				Control "name='Dmic0 Capture Switch'"
			}
			True {
				CaptureMixerElem "Dmic0"
				CaptureVolume "Dmic0 Capture Volume"
				CaptureSwitch "Dmic0 Capture Switch"
			}
			False {
				# v1.3 SOF firmware
				CaptureMixerElem "PGA10.0 10 Master"
				CaptureVolume "PGA10.0 10 Master Capture Volume"
			}
		}
	}
}

<sof-hda-dsp/Hdmi.conf>
