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

SectionVerb {
  	EnableSequence [
                cdev "hw:PandaBoard"
		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:PandaBoard"
		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 "PandaBoard 3.5mm Headset"
	
	EnableSequence [
                cdev "hw:PandaBoard"
                cset "name='Headset Left Playback' 1"
                cset "name='Headset Right Playback' 1"
                cset "name='Headset Playback Volume' 13"
	]

	DisableSequence [
                cdev "hw:PandaBoard"
		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"
 #       }
#
#}

