#
# Configuration for PS3
#

<confdir:pcm/front.conf>

PS3.pcm.front.0 {
	@args [ CARD ]
	@args.CARD {
		type string
	}
	type softvol
	slave.pcm {
		type hw
		card $CARD
		device 0
	}
	control {
		name "PCM Playback Volume"
		card $CARD
	}
}	

# default with dmix+softvol
PS3.pcm.default {
	@args [ CARD ]
	@args.CARD {
		type string
	}
	type asym
	playback.pcm {
		type plug
		slave.pcm {
			type softvol
			slave.pcm {
				@func concat
                                #strings [ "dmix:CARD=" $CARD ]
                                strings [ "dmix:CARD=" $CARD ",FORMAT=S16" ]
			}
			control {
				name "PCM Playback Volume"
				card $CARD
			}
		}
	}
}

<confdir:pcm/iec958.conf>

PS3.pcm.iec958.0 {
	@args [ CARD AES0 AES1 AES2 AES3 ]
	@args.CARD {
		type string
	}
	@args.AES0 {
		type integer
	}
	@args.AES1 {
		type integer
	}
	@args.AES2 {
		type integer
	}
	@args.AES3 {
		type integer
	}
	type hooks
	slave.pcm {
		type hw
		card $CARD
	}
	hooks.0 {
		type ctl_elems
		hook_args [
			{
				interface PCM
				name "IEC958 Playback Default"
				lock true
				preserve true
				optional true
				value [ $AES0 $AES1 $AES2 $AES3 ]
			}
		]
	}
}
