# Based on https://github.com/LineageOS/android_device_samsung_t0lte/blob/cm-14.1/configs/tiny_hw.xml

SectionVerb {
	EnableSequence [
		cdev "hw:Midas"

		# do not change the adc & dac source of AIF2
		cset "name='AIF2DACL Source' 0"
		cset "name='AIF2DACR Source' 0"
		cset "name='AIF2ADCL Source' 0"
		cset "name='AIF2ADCR Source' 1"

		# AIF1->DAC1
		cset "name='DAC1 Switch' 1"

		# general
		cset "name='IN1L ZC Switch' 0"
		cset "name='IN1R ZC Switch' 0"
		cset "name='IN2L ZC Switch' 0"
		cset "name='IN2R ZC Switch' 0"
		cset "name='Output ZC Switch' 0"
		cset "name='Speaker ZC Switch' 0"
		cset "name='Headphone ZC Switch' 0"

		# AIF1->DAC1
		cset "name='DAC1L Mixer AIF1.1 Switch' 1"
		cset "name='DAC1R Mixer AIF1.1 Switch' 1"
		cset "name='DAC1 Switch' 1"

		# ADC->AIF2
		cset "name='AIF2DAC2L Mixer Left Sidetone Switch' 1"
		cset "name='AIF2DAC2L Mixer Right Sidetone Switch' 0"
		cset "name='AIF2DAC2R Mixer Left Sidetone Switch' 0"
		cset "name='AIF2DAC2R Mixer Right Sidetone Switch' 1"
		cset "name='DAC2 Left Sidetone Volume' 12"
		cset "name='DAC2 Right Sidetone Volume' 12"
		cset "name='DAC2 Switch' 1"

		# DAC1->HP
		cset "name='Left Headphone Mux' Mixer"
		cset "name='Right Headphone Mux' Mixer"

		# DAC1->SPKL/R->SPKL/R Boost->SPK
		cset "name='SPKL DAC1 Switch' 1"
		cset "name='SPKR DAC1 Switch' 1"
		cset "name='SPKL Boost SPKL Switch' 1"
		cset "name='SPKL Boost SPKR Switch' 1"
		cset "name='SPKR Boost SPKL Switch' 0"
		cset "name='SPKR Boost SPKR Switch' 0"
		cset "name='Speaker Mixer Volume' 3"

		# DAC->Output mixer->Earpiece
		cset "name='Left Output Mixer DAC Switch' 1"
		cset "name='Right Output Mixer DAC Switch' 1"
		cset "name='Earpiece Mixer Left Output Switch' 1"
		cset "name='Earpiece Mixer Right Output Switch' 1"
		cset "name='Earpiece Switch' 1"

		# LINEOUT
		cset "name='LINEOUT2N Mixer Left Output Switch' 1"
		cset "name='LINEOUT2P Mixer Right Output Switch' 1"
		cset "name='LINEOUT1N Mixer Right Output Switch' 1"
		cset "name='LINEOUT1P Mixer Left Output Switch' 1"

		# Input mixer->ADC->AIF1.1
		cset "name='AIF1ADC1L Mixer ADC/DMIC Switch' 1"
		cset "name='AIF1ADC1R Mixer ADC/DMIC Switch' 1"

		# Main Mic->IN1LP/N->Input Mixer with +30dB at mixer
		cset "name='IN1L PGA IN1LP Switch' 1"
		cset "name='IN1L PGA IN1LN Switch' 1"
		cset "name='MIXINL IN1L Volume' 1"
		cset "name='IN1L Switch' 1"

		# Sub Mic->IN1RP/N->Input Mixer with +30dB at mixer
		cset "name='IN1R PGA IN1RP Switch' 1"
		cset "name='IN1R PGA IN1RN Switch' 1"
		cset "name='MIXINR IN1R Volume' 1"
		cset "name='IN1R Switch' 1"

		# FM Radio->IN2RP/N->Input Mixer with +30dB at mixer
		cset "name='IN2R PGA IN2RP Switch' 1"
		cset "name='IN2R PGA IN2RN Switch' 1"
		cset "name='MIXINR IN2R Volume' 1"
		cset "name='IN2R Switch' 1"

		# Ear Mic->IN2LP/N->Input Mixer with +30dB at mixer
		cset "name='IN2L PGA IN2LP Switch' 1"
		cset "name='IN2L PGA IN2LN Switch' 1"
		cset "name='MIXINL IN2L Volume' 1"
		cset "name='IN2L Switch' 1"

		# Input mixer->ADC->AIF1
		cset "name='AIF1ADC1L Mixer ADC/DMIC Switch' 1"
		cset "name='AIF1ADC1R Mixer ADC/DMIC Switch' 1"
		cset "name='ADCL Mux' ADC"

		# HPF on to take out some bounce
		cset "name='Sidetone HPF Switch' 0"

		# Work around core issue
		cset "name='ADCL Mux' DMIC"
		cset "name='ADCL Mux' ADC"
		cset "name='ADCR Mux' DMIC"
		cset "name='ADCR Mux' ADC"

		# AIF2ADCDAT to AIF3ADC mux
		cset "name='AIF3ADC Mux' 1"

		# Default all outputs off
		cset "name='HP Switch' 0"
		cset "name='SPK Switch' 0"
		cset "name='RCV Switch' 0"
		cset "name='LINE Switch' 0"
		cset "name='HDMI Switch' 0"

		# Default all inputs off
		cset "name='Main Mic Switch' 0"
		cset "name='Sub Mic Switch' 0"
		cset "name='Headset Mic Switch' 0"
		cset "name='FM In Switch' 0"
	]

	DisableSequence [
	]

}

SectionDevice."Speaker" {
	Comment "Speaker"

	EnableSequence [
		cset "name='SPK Switch' 1"
		cset "name='AIF1DAC1 Volume' 96"
		cset "name='AIF1 Boost Volume' 0"
		cset "name='DAC1 Volume' 96"
		cset "name='SPKL DAC1 Volume' 1"
		cset "name='SPKR DAC1 Volume' 1"
		cset "name='Speaker Mixer Volume' 3"
		cset "name='Speaker Boost Volume' 6"
		cset "name='Speaker Volume' 57"
		cset "name='AIF1DAC1 EQ Switch' 1"
		cset "name='AIF1DAC1 EQ1 Volume' 9"
		cset "name='AIF1DAC1 EQ2 Volume' 7"
		cset "name='AIF1DAC1 EQ3 Volume' 10"
		cset "name='AIF1DAC1 EQ4 Volume' 13"
		cset "name='AIF1DAC1 EQ5 Volume' 12"
	]

	DisableSequence [
		cset "name='SPK Switch' 0"
		cset "name='AIF1DAC1 Volume' 96"
		cset "name='AIF1 Boost Volume' 0"
		cset "name='DAC1 Volume' 96"
		cset "name='SPKL DAC1 Volume' 1"
		cset "name='SPKR DAC1 Volume' 1"
		cset "name='Speaker Mixer Volume' 0"
		cset "name='Speaker Volume' 0"
		cset "name='Speaker Boost Volume' 0"
		cset "name='AIF1DAC1 EQ Switch' 0"
	]

	Value {
		PlaybackVolume "Speaker Volume"
		PlaybackSwitch "SPK Switch"
		PlaybackChannels 2
		PlaybackPriority 100
		PlaybackPCM "hw:${CardId}"
	}
}

SectionDevice."Earpiece" {
	Comment "Earpiece"

	EnableSequence [
		cset "name='RCV Switch' 1"
		cset "name='AIF1DAC1 Volume' 96"
		cset "name='AIF1 Boost Volume' 0"
		cset "name='DAC1 Volume' 96"
		cset "name='Left Output Mixer DAC Volume' 7"
		cset "name='Right Output Mixer DAC Volume' 7"
		cset "name='Output Volume' 57"
		cset "name='Earpiece Volume' 1"
	]

	DisableSequence [
		cset "name='RCV Switch' 0"
		cset "name='AIF1DAC1 Volume' 96"
		cset "name='AIF1 Boost Volume' 0"
		cset "name='DAC1 Volume' 96"
		cset "name='Left Output Mixer DAC Volume' 7"
		cset "name='Right Output Mixer DAC Volume' 7"
		cset "name='Output Volume' 57"
		cset "name='Earpiece Volume' 1"
	]

	Value {
		PlaybackVolume "Earpiece Volume"
		PlaybackSwitch "RCV Switch"
		PlaybackChannels 2
		PlaybackPriority 50
		PlaybackPCM "hw:${CardId}"
	}
}

SectionDevice."Headphones" {
	Comment "Headphones"

	EnableSequence [
		cset "name='HP Switch' 1"
		cset "name='Headphone Volume' 50"
		cset "name='Headphone ZC Switch' 0"
		cset "name='AIF1DAC1 Volume' 96"
		cset "name='AIF1 Boost Volume' 0"
		cset "name='DAC1 Volume' 96"
		cset "name='Left Output Mixer DAC Volume' 7"
		cset "name='Right Output Mixer DAC Volume' 7"
		cset "name='AIF1DAC1 EQ Switch' 1"
		cset "name='AIF1DAC1 EQ1 Volume' 16"
		cset "name='AIF1DAC1 EQ2 Volume' 14"
		cset "name='AIF1DAC1 EQ3 Volume' 12"
		cset "name='AIF1DAC1 EQ4 Volume' 14"
		cset "name='AIF1DAC1 EQ5 Volume' 16"
	]

	DisableSequence [
		cset "name='HP Switch' 0"
		cset "name='AIF1DAC1 EQ Switch' 0"
		cset "name='Left Output Mixer DAC Volume' 7"
		cset "name='Right Output Mixer DAC Volume' 7"
	]

	Value {
		PlaybackVolume "Headphone Volume"
		PlaybackSwitch "HP Switch"
		PlaybackChannels 2
		PlaybackPriority 150
		PlaybackPCM "hw:${CardId}"
		JackControl "Headset Jack"
	}
}

SectionDevice."Mic" {
	Comment "Microphone"

	EnableSequence [
		cset "name='Main Mic Switch' 1"
		cset "name='IN2L Volume' 26"
		cset "name='MIXINL IN2L Switch' 1"
		cset "name='MIXINL IN2L Volume' 0"
		cset "name='AIF1ADCL Source' 0"
		cset "name='AIF1ADC1 HPF Mode' 0"
		cset "name='AIF1ADC1 HPF Switch' 1"
		cset "name='AIF1ADC1 Volume' 96"
	]

	DisableSequence [
		cset "name='Main Mic Switch' 0"
		cset "name='MIXINL IN2L Switch' 0"
		cset "name='MIXINL IN2L Volume' 0"
		cset "name='IN2L Volume' 4"
	]

	Value {
		CaptureVolume "IN2L Volume"
		CaptureChannels 2
		CapturePriority 100
		CapturePCM "hw:${CardId}"
	}
}

SectionDevice."Headset" {
	Comment "Headset Microphone"

	EnableSequence [
		cset "name='MIXINL IN2L Switch' 0"
		cset "name='Headset Mic Switch' 1"
		cset "name='IN1L Volume' 24"
		cset "name='MIXINL IN1L Switch' 1"
		cset "name='MIXINL IN1L Volume' 0"
		cset "name='AIF2ADC HPF Mode' 1"
		cset "name='AIF2ADC HPF Switch' 1"
		cset "name='AIF1ADC1 HPF Mode' 1"
		cset "name='AIF1ADC1 HPF Switch' 1"
		cset "name='AIF1ADC1 Volume' 96"
		cset "name='AIF1ADCL Source' 0"
		cset "name='AIF1ADCR Source' 0"
	]

	DisableSequence [
		cset "name='Headset Mic Switch' 0"
		cset "name='IN1L Volume' 11"
		cset "name='MIXINL IN1L Switch' 0"
		cset "name='MIXINL IN1L Volume' 0"
		cset "name='AIF1ADC1 HPF Mode' 0"
		cset "name='AIF1ADC1 HPF Switch' 0"
		cset "name='AIF1ADC1 Volume' 96"
	]

	Value {
		CaptureVolume "IN1L Volume"
		CaptureChannels 2
		CapturePriority 150
		CapturePCM "hw:${CardId}"
		JackControl "Headset Jack"
	}
}