#
# Configuration for the CMI8738 chip with 4/6 multi-channel support
#

<confdir:pcm/front.conf>

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

# default with dmix/dsnoop
CMI8738-MC6.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/rear.conf>

# 2nd DAC
# FIXME: we need a volume attenuator for rear channel.
CMI8738-MC6.pcm.rear.0 {
	@args [ CARD ]
	@args.CARD {
		type string
	}
	type hw
	card $CARD
	device 1
}

<confdir:pcm/surround40.conf>

CMI8738-MC6.pcm.surround40.0 {
	@args [ CARD ]
	@args.CARD {
		type string
	}
	type hooks
	slave.pcm {
		type hw
		card $CARD
		device 1
		channels 4
	}
	hooks.0 {
		type ctl_elems
		hook_args [
			{
				name "Four Channel Mode"
				lock true
				preserve true
				value false
			}
		]
	}
}	

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

CMI8738-MC6.pcm.surround51.0 {
	@args [ CARD ]
	@args.CARD {
		type string
	}
	type hooks
	slave.pcm {
		type hw
		card $CARD
		device 1
		channels 6
	}
	hooks.0 {
		type ctl_elems
		hook_args [
			{
				name "Four Channel Mode"
				lock true
				preserve true
				value false
			}
		]
	}
}	

<confdir:pcm/iec958.conf>

CMI8738-MC6.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 asym
	playback.pcm {
		type hooks
		slave.pcm {
			type hw
			card $CARD
			device 2
		}
		hooks.0 {
			type ctl_elems
			hook_args [
				{
					interface PCM
					name "IEC958 Playback PCM Stream"
					device 2
					lock true
					preserve true
					value [ $AES0 $AES1 $AES2 $AES3 ]
				}
				{
					name "IEC958 Loop"
					lock true
					preserve true
					value off
				}
			]
		}
	}
	capture.pcm {
		type hw
		card $CARD
		device 2
	}
}
