# Use case Configuration for SPRD DOLPHIN HiFi audio playback and capture


######### Main Verb Config #################

SectionVerb {

	EnableSequence [
		# Set sprdphone device for following cset commands
		cdev "hw:sprdphone"

		#switch vbc control to arm
		cset "name='VBC Switch' 2"

		#DAC gain
		cset "name='DACL Playback Volume' 7"
		cset "name='DACR Playback Volume' 7"

		#ADC gain
		cset "name='ADCL Capture Volume' 60"
		cset "name='ADCR Capture Volume' 60"

	]

	DisableSequence [
		# Set sprdphone device for following cset commands
		cdev "hw:sprdphone"

	]

	# ALSA PCM
	Value {
		TQ "Music"
		# ALSA PCM device for HiFi
		PlaybackPCM "hw:sprdphone,0"
		CapturePCM "hw:sprdphone,0"
	}
}

########### Speaker Device Options ################

SectionDevice."Speaker" {
	Comment "sprdphone Speaker playback"

	EnableSequence [

		# Set sprdphone device for following cset commands
		cdev "hw:sprdphone"

		# gain setting
		cset "name='SPKL Playback Volume' 10"
		cset "name='SPKR Playback Volume' 10"

		cset "name='VBC DACL DG Set' 32"
		cset "name='VBC DACR DG Set' 32"
		cset "name='VBC DACL DG Switch' 1"
		cset "name='VBC DACR DG Switch' 1"


		# sprdphone speaker playback path
		cset "name='SPKL Mixer DACLSPKL Switch' 1"
		cset "name='SPKL Mixer DACRSPKL Switch' 1"
		cset "name='Speaker Function' 1"
	]

	DisableSequence [

		# Set sprdphone device for following cset commands
		cdev "hw:sprdphone"

		# sprdphone path
		cset "name='Speaker Function' 0"
		cset "name='SPKL Mixer DACLSPKL Switch' 0"
		cset "name='SPKL Mixer DACRSPKL Switch' 0"

		cset "name='VBC DACL DG Switch' 0"
		cset "name='VBC DACR DG Switch' 0"
	]

	Value {
		# Default ALSA volume gain and mute kcontrols
		PlaybackPCM "hw:sprdphone,0"
		PlaybackChannels "2"
	}
}

###### Headphones Devices Options ############

SectionDevice."Headphones" {
	Comment "SPRD DOLPHIN 3.5mm Headphones playback"

	EnableSequence [

		# Set sprdphone device for following cset commands
		cdev "hw:sprdphone"

		#gain setting
		cset "name='HPL Playback Volume' 6"
		cset "name='HPR Playback Volume' 6"

		cset "name='VBC DACL DG Set' 33"
		cset "name='VBC DACR DG Set' 33"
		cset "name='VBC DACL DG Switch' 1"
		cset "name='VBC DACR DG Switch' 1"

		# sprdphone playback path
		cset "name='HPL Mixer DACLHPL Switch' 1"
		cset "name='HPR Mixer DACRHPR Switch' 1"
		cset "name='HeadPhone Function' 1"

		# Fix Headphones pop noise
		cset "name='Inter HP PA Config' 340416"
	]

	DisableSequence [

		# Set sprdphone device for following cset commands
		cdev "hw:sprdphone"

		# sprdphone playback path
		cset "name='HeadPhone Function' 0"
		cset "name='HPL Mixer DACLHPL Switch' 0"
		cset "name='HPR Mixer DACRHPR Switch' 0"

		cset "name='VBC DACL DG Switch' 0"
		cset "name='VBC DACR DG Switch' 0"

	]

	Value {
		# Default ALSA volume gain and mute kcontrols
		PlaybackPCM "hw:sprdphone,0"
		PlaybackChannels "2"
	}
}

########### Earpiece Device Options ################

SectionDevice."Earpiece" {
	Comment "Earpiece playback"

	EnableSequence [

		# Set sprdphone device for following cset commands
		cdev "hw:sprdphone"

		#gain setting
		cset "name='EAR Playback Volume' 10"

		cset "name='VBC DACL DG Set' 33"
		cset "name='VBC DACR DG Set' 33"
		cset "name='VBC DACL DG Switch' 1"
		cset "name='VBC DACR DG Switch' 1"

		# sprdphone playback path
		cset "name='Earpiece Function' 1"
	]

	DisableSequence [

		# Set sprdphone device for following cset commands
		cdev "hw:sprdphone"

		# sprdphone playback path
		cset "name='Earpiece Function' 0"

		cset "name='VBC DACL DG Switch' 0"
		cset "name='VBC DACR DG Switch' 0"
	]

	Value {
		# Default ALSA volume gain and mute kcontrols
		PlaybackPCM "hw:sprdphone,0"
		PlaybackChannels "2"
	}
}



########### Mainmic Device Options ################

SectionDevice."MainMic" {
	Comment "main mic capture"

	EnableSequence [
		# Set sprdphone device for following cset commands
		cdev "hw:sprdphone"

		#vbc adc DG  gain setting
		cset "name='VBC ADCL DG Set' 10"
		cset "name='VBC ADCR DG Set' 10"

		cset "name='VBC ADCL DG Switch' 1"
		cset "name='VBC ADCR DG Switch' 1"

		# sprdphone capture path
		cset "name='ADCL Mixer MainMICADCL Switch' 1"
		cset "name='ADCR Mixer MainMICADCR Switch' 1"
		cset "name='Mic Function' 1"

	]

	DisableSequence [

		# Set sprdphone device for following cset commands
		cdev "hw:sprdphone"

		# sprdphone playback path
		cset "name='Mic Function' 0"
		cset "name='ADCL Mixer MainMICADCL Switch' 0"
		cset "name='ADCR Mixer MainMICADCR Switch' 0"
		cset "name='VBC ADCL DG Switch' 0"
		cset "name='VBC ADCR DG Switch' 0"
	]

	Value {
		# Default ALSA volume gain and mute kcontrols
		CaptureChannels "2"
		CapturePCM "hw:sprdphone,0"
	}
}


########### BackAux Mic Device Options ################

SectionDevice."SubMic" {
	Comment "BackAux mic capture"

	EnableSequence [
		# Set sprdphone device for following cset commands
		cdev "hw:sprdphone"

		#vbc adc DG  gain setting
		cset "name='VBC ADCL DG Set' 16"
		cset "name='VBC ADCR DG Set' 16"

		cset "name='VBC ADCL DG Switch' 1"
		cset "name='VBC ADCR DG Switch' 1"

		# sprdphone BackAux mic capture path
		cset "name='Aux Mic Function' 1"
		cset "name='ADCL Mixer AuxMICADCL Switch' 1"
		cset "name='ADCR Mixer AuxMICADCR Switch' 1"
	]

	DisableSequence [

		# Set sprdphone device for following cset commands
		cdev "hw:sprdphone"

		# sprdphone BackAux mic capture path
		cset "name='Aux Mic Function' 0"
		cset "name='ADCL Mixer AuxMICADCL Switch' 0"
		cset "name='ADCR Mixer AuxMICADCR Switch' 0"

		cset "name='VBC ADCL DG Switch' 0"
		cset "name='VBC ADCR DG Switch' 0"
	]

	Value {
		# Default ALSA volume gain and mute kcontrols
		CapturePCM "hw:sprdphone,0"
		CaptureChannels "2"
	}
}

########### Headphone Mic Device Options ################

SectionDevice."HeadsetMic" {
	Comment "Headphone mic capture"

	EnableSequence [
		# Set sprdphone device for following cset commands
		cdev "hw:sprdphone"

		#vbc adc DG  gain setting
		cset "name='VBC ADCL DG Set' 16"
		cset "name='VBC ADCR DG Set' 16"

		cset "name='VBC ADCL DG Switch' 1"
		cset "name='VBC ADCR DG Switch' 1"

		# sprdphone headphone mic capture path
		cset "name='ADCL Mixer HPMICADCL Switch' 1"
		cset "name='ADCR Mixer HPMICADCR Switch' 1"
		cset "name='HP Mic Function' 1"
	]

	DisableSequence [

		# Set sprdphone device for following cset commands
		cdev "hw:sprdphone"

		# sprdphone headphone mic capture path
		cset "name='HP Mic Function' 0"
		cset "name='ADCL Mixer HPMICADCL Switch' 0"
		cset "name='ADCR Mixer HPMICADCR Switch' 0"
	]

	Value {
		# Default ALSA volume gain and mute kcontrols
		CapturePCM "hw:sprdphone,0"
		CaptureChannels "2"
	}
}

SectionDevice."FM" {
	Comment "FM analog line-in"

	EnableSequence [
		cdev "hw:sprdphone"

		# alanog in
		cset "name='ADCL Mixer AILADCL Switch' 1"
		cset "name='ADCR Mixer AIRADCR Switch' 1"
		cset "name='Line Function' 1"
	]

	DisableSequence [
		cdev "hw:sprdphone"

		# analog in
		cset "name='ADCL Mixer AILADCL Switch' 0"
		cset "name='ADCR Mixer AIRADCR Switch' 0"
		cset "name='Line Function' 0"
	]
}

SectionModifier."PlayFM" {
	Comment "FM radio playback"

	EnableSequence [
		cdev "hw:sprdphone"

		# analog speaker
		cset "name='SPKL Mixer ADCLSPKL Switch' 1"
		cset "name='SPKL Mixer ADCRSPKL Switch' 1"

		# headset headphone
		cset "name='HPL Mixer ADCLHPL Switch' 1"
		cset "name='HPR Mixer ADCRHPR Switch' 1"
	]

	DisableSequence [
		cdev "hw:sprdphone"

		# analog speaker
		cset "name='SPKL Mixer ADCLSPKL Switch' 0"
		cset "name='SPKL Mixer ADCRSPKL Switch' 0"

		# analog headphone
		cset "name='HPL Mixer ADCLHPL Switch' 0"
		cset "name='HPR Mixer ADCRHPR Switch' 0"

	]
}

########### FM Modifier and Device Options ################

SectionDevice."FM_Core" {
	Comment "FM Radio Core"

	EnableSequence [
		cdev "hw:sprdphone"

		# alanog in
		cset "name='ADCL Mixer AILADCL Switch' 1"
		cset "name='ADCR Mixer AIRADCR Switch' 1"

		cset "name='Line Function' 1"
	]

	DisableSequence [
		cdev "hw:sprdphone"

		# analog in
		cset "name='ADCL Mixer AILADCL Switch' 0"
		cset "name='ADCR Mixer AIRADCR Switch' 0"

		cset "name='Line Function' 0"

	]
}

SectionModifier."FM_Headphone" {
	Comment "FM radio playback"

	EnableSequence [
		cdev "hw:sprdphone"

		# headset headphone
		cset "name='HPL Mixer ADCLHPL Switch' 1"
		cset "name='HPR Mixer ADCRHPR Switch' 1"

		cset "name='HPL Mixer DACLHPL Switch' 1"
		cset "name='HPR Mixer DACRHPR Switch' 1"

		cset "name='HeadPhone Function' 1"
	]

	DisableSequence [
		cdev "hw:sprdphone"

		# headset headphone
		cset "name='HPL Mixer ADCLHPL Switch' 0"
		cset "name='HPR Mixer ADCRHPR Switch' 0"

		cset "name='HeadPhone Function' 0"

		cset "name='HPL Mixer DACLHPL Switch' 0"
		cset "name='HPR Mixer DACRHPR Switch' 0"
	]
}

SectionModifier."FM_Speaker" {
	Comment "FM radio playback"

	EnableSequence [
		cdev "hw:sprdphone"

		# analog speaker
		cset "name='SPKL Mixer ADCLSPKL Switch' 1"
		cset "name='SPKL Mixer ADCRSPKL Switch' 1"

		cset "name='SPKL Mixer DACLSPKL Switch' 1"
		cset "name='SPKL Mixer DACRSPKL Switch' 1"

		cset "name='Speaker Function' 1"
	]

	DisableSequence [
		cdev "hw:sprdphone"

		 # analog speaker
                cset "name='SPKL Mixer ADCLSPKL Switch' 0"
                cset "name='SPKL Mixer ADCRSPKL Switch' 0"

		cset "name='Speaker Function' 0"

		cset "name='SPKL Mixer DACLSPKL Switch' 0"
		cset "name='SPKL Mixer DACRSPKL Switch' 0"
	]
}
