#
# Configuration for the ATI IXP 150/200/250 chips
#

<confdir:pcm/front.conf>

ATIIXP.pcm.front.0 {
	@args [ CARD ]
	@args.CARD {
		type string
	}
	type hw
	card $CARD
}	

# default with dmix/dsnoop
ATIIXP.pcm.default {
	@args [ CARD ]
	@args.CARD {
		type string
	}
	type asym
	playback.pcm {
		type plug
		slave.pcm {
			@func concat
			strings [ "dmix:" $CARD ]
		}
	}
	capture.pcm {
		type plug
		slave.pcm {
			@func concat
			strings [ "dsnoop:" $CARD ]
		}
	}
}

<confdir:pcm/surround40.conf>

ATIIXP.pcm.surround40.0 {
	@args [ CARD ]
	@args.CARD {
		type string
	}
	type hooks
	slave.pcm {
		type hw
		card $CARD
		channels 4
	}
	hooks.0 {
		type ctl_elems
		hook_args [
			{
				name "Channel Mode"
				preserve true
				value "4ch"
				lock true
				optional true
			}
			# for old drivers
			{
				name "Line-In As Surround"
				preserve true
				value true
				optional true
			}
			{
				name "Surround Down Mix"
				preserve true
				value off
				lock true
				optional true
			}
		]
	}
}

<confdir:pcm/surround21.conf>
<confdir:pcm/surround41.conf>
<confdir:pcm/surround50.conf>
<confdir:pcm/surround51.conf>

ATIIXP.pcm.surround51.0 {
	@args [ CARD ]
	@args.CARD {
		type string
	}
	type hooks
	slave.pcm {
		type hw
		card $CARD
		channels 6
	}
	hooks.0 {
		type ctl_elems
		hook_args [
			{
				name "Channel Mode"
				preserve true
				value "6ch"
				lock true
				optional true
			}
			# for old drivers
			{
				name "Line-In As Surround"
				preserve true
				value true
				optional true
			}
			{
				name "Mic As Center/LFE"
				preserve true
				value true
				optional true
			}
			{
				name "Surround Down Mix"
				preserve true
				value off
				lock true
				optional true
			}
			{
				name "Center/LFE Down Mix"
				preserve true
				value off
				lock true
				optional true
			}
		]
	}
}

<confdir:pcm/iec958.conf>

ATIIXP.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
		device 1
	}
	hooks.0 {
		type ctl_elems
		hook_args [
			{
				name "IEC958 Playback AC97-SPSA"
				lock true
				preserve true
				value 3
			}
			{
				name "IEC958 Playback Default"
				lock true
				preserve true
				value [ $AES0 $AES1 $AES2 $AES3 ]
			}
			{
				name "IEC958 Playback Switch"
				lock true
				preserve true
				value true
			}
		]
	}
}
