# Use case Configuration for TI PandaBoardES HiFi Music
# By Liam Girdwood <lrg@slimlogic.co.uk>

SectionVerb {
  	EnableSequence [
                cdev "hw:PandaBoardES"
		cset "name='DL1 Mixer Multimedia' 1"
		cset "name='Sidetone Mixer Playback' 1"
                cset "name='DL1 PDM Switch' 1"
		cset "name='DL1 Media Playback Volume' 90,90"
                cset "name='SDT DL Volume' 120"

                cset "name='Headset Left Playback' 1"
                cset "name='Headset Right Playback' 1"
                cset "name='Headset Playback Volume' 13"
	]

	DisableSequence [
                cdev "hw:PandaBoardES"
		cset "name='DL1 Mixer Multimedia' 0"
		cset "name='Sidetone Mixer Playback' 0"
                cset "name='DL1 PDM Switch' 0"
		cset "name='DL1 Media Playback Volume' 0,0"
                cset "name='SDT DL Volume' 0"

		cset "name='Headset Right Playback' 0"
		cset "name='Headset Left Playback' 0"
                cset "name='Headset Playback Volume' 0"
	]

 	# Optional TQ and ALSA PCMs
#	Value {
#		TQ "Music"
#		PlaybackPCM "hw:0,0"
#                PlaybackVolume "name='DL1 Media Playback Volume' 90,90"
#                PlaybackSwitch "name='DL1 PDM Switch' 1"
#	}
}

SectionDevice."Headset".0 {
	Comment "PandaBoardES 3.5mm Headset"
	
	EnableSequence [
                cdev "hw:PandaBoardES"
                cset "name='Headset Left Playback' 1"
                cset "name='Headset Right Playback' 1"
                cset "name='Headset Playback Volume' 13"
	]

	DisableSequence [
                cdev "hw:PandaBoardES"
		cset "name='Headset Right Playback' 0"
		cset "name='Headset Left Playback' 0"
                cset "name='Headset Playback Volume' 0"
	]
}

#SectionModifier."RecordMedia".0 {
#	SupportedDevice [
#		"Headset"
#	]
 #       EnableSequence [
 #         ....
 #       ]
 #
 #       DisableSequence [
 #         ...
 #       ]
 #
 #       TransitionSequence."ToModifierName" [
 #         ...
 #       ]
 #
 #       # Optional TQ and ALSA PCMs
 #       Value {
 #               TQ Voice
 #               CapturePCM "hw:1"
 #               PlaybackVolume "name='Master Playback Volume',index=2"
 #               PlaybackSwitch "name='Master Playback Switch',index=2"
 #       }
#
#}

