| # | 
 | # Configuration for the CA0106 chip | 
 | # | 
 |  | 
 | # default with dmix & dsnoop | 
 | CA0106.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/front.conf> | 
 |  | 
 | CA0106.pcm.front.0 { | 
 | 	@args [ CARD  ] | 
 | 	@args.CARD { | 
 | 		type string | 
 | 	} | 
 | 	type hw | 
 | 	card $CARD | 
 | }	 | 
 |  | 
 | <confdir:pcm/rear.conf> | 
 |  | 
 | CA0106.pcm.rear.0 { | 
 | 	@args [ CARD ] | 
 | 	@args.CARD { | 
 | 		type string | 
 | 	} | 
 | 	type hw | 
 | 	card $CARD | 
 | 	device 1 | 
 | }	 | 
 |  | 
 | <confdir:pcm/center_lfe.conf> | 
 |  | 
 | CA0106.pcm.center_lfe.0 { | 
 | 	@args [ CARD ] | 
 | 	@args.CARD { | 
 | 		type string | 
 | 	} | 
 | 	type hw | 
 | 	card $CARD | 
 | 	device 2 | 
 | }	 | 
 |  | 
 | <confdir:pcm/side.conf> | 
 |  | 
 | CA0106.pcm.side.0 { | 
 | 	@args [ CARD ] | 
 | 	@args.CARD { | 
 | 		type string | 
 | 	} | 
 | 	type hw | 
 | 	card $CARD | 
 | 	device 3 | 
 | }	 | 
 |  | 
 | <confdir:pcm/surround40.conf> | 
 |  | 
 | CA0106.pcm.surround40.0 { | 
 | 	@args [ CARD ] | 
 | 	@args.CARD { | 
 | 		type string | 
 | 	} | 
 | 	type multi | 
 | 	slaves [ | 
 | 		{ | 
 | 			pcm { | 
 | 				@func concat | 
 | 				strings [ | 
 | 					"cards.CA0106.pcm.front.0:CARD=" $CARD | 
 | 				] | 
 | 			} | 
 | 			channels 2 | 
 | 		} | 
 | 		{ | 
 | 			pcm { | 
 | 				@func concat | 
 | 				strings [ | 
 | 					"cards.CA0106.pcm.rear.0:CARD=" $CARD | 
 | 				] | 
 | 			} | 
 | 			channels 2 | 
 | 		} | 
 | 	] | 
 | 	bindings [ | 
 | 		{ slave 0 channel 0 } | 
 | 		{ slave 0 channel 1 } | 
 | 		{ slave 1 channel 0 } | 
 | 		{ slave 1 channel 1 } | 
 | 	] | 
 | } | 
 |  | 
 | <confdir:pcm/surround41.conf> | 
 | <confdir:pcm/surround50.conf> | 
 | <confdir:pcm/surround51.conf> | 
 | <confdir:pcm/surround71.conf> | 
 |  | 
 | CA0106.pcm.surround51.0 { | 
 | 	@args [ CARD ] | 
 | 	@args.CARD { | 
 | 		type string | 
 | 	} | 
 | 	type multi | 
 | 	slaves [ | 
 | 		{ | 
 | 			pcm { | 
 | 				@func concat | 
 | 				strings [ | 
 | 					"cards.CA0106.pcm.front.0:CARD=" $CARD | 
 | 				] | 
 | 			} | 
 | 			channels 2 | 
 | 		} | 
 | 		{ | 
 | 			pcm { | 
 | 				@func concat | 
 | 				strings [ | 
 | 					"cards.CA0106.pcm.rear.0:CARD=" $CARD | 
 | 				] | 
 | 			} | 
 | 			channels 2 | 
 | 		} | 
 | 		{ | 
 | 			pcm { | 
 | 				@func concat | 
 | 				strings [ | 
 | 					"cards.CA0106.pcm.center_lfe.0:CARD=" $CARD | 
 | 				] | 
 | 			} | 
 | 			channels 2 | 
 | 		} | 
 | 	] | 
 | 	bindings [ | 
 | 		{ slave 0 channel 0 } | 
 | 		{ slave 0 channel 1 } | 
 | 		{ slave 1 channel 0 } | 
 | 		{ slave 1 channel 1 } | 
 | 		{ slave 2 channel 0 } | 
 | 		{ slave 2 channel 1 } | 
 | 	] | 
 | } | 
 |  | 
 | CA0106.pcm.surround71.0 { | 
 | 	@args [ CARD ] | 
 | 	@args.CARD { | 
 | 		type string | 
 | 	} | 
 | 	type multi | 
 | 	slaves [ | 
 | 		{ | 
 | 			pcm { | 
 | 				@func concat | 
 | 				strings [ | 
 | 					"cards.CA0106.pcm.front.0:CARD=" $CARD | 
 | 				] | 
 | 			} | 
 | 			channels 2 | 
 | 		} | 
 | 		{ | 
 | 			pcm { | 
 | 				@func concat | 
 | 				strings [ | 
 | 					"cards.CA0106.pcm.rear.0:CARD=" $CARD | 
 | 				] | 
 | 			} | 
 | 			channels 2 | 
 | 		} | 
 | 		{ | 
 | 			pcm { | 
 | 				@func concat | 
 | 				strings [ | 
 | 					"cards.CA0106.pcm.center_lfe.0:CARD=" $CARD | 
 | 				] | 
 | 			} | 
 | 			channels 2 | 
 | 		} | 
 | 		{ | 
 | 			pcm { | 
 | 				@func concat | 
 | 				strings [ | 
 | 					"cards.CA0106.pcm.side.0:CARD=" $CARD | 
 | 				] | 
 | 			} | 
 | 			channels 2 | 
 | 		} | 
 | 	] | 
 | 	bindings [ | 
 | 		{ slave 0 channel 0 } | 
 | 		{ slave 0 channel 1 } | 
 | 		{ slave 1 channel 0 } | 
 | 		{ slave 1 channel 1 } | 
 | 		{ slave 2 channel 0 } | 
 | 		{ slave 2 channel 1 } | 
 | 		{ slave 3 channel 0 } | 
 | 		{ slave 3 channel 1 } | 
 | 	] | 
 | } | 
 |  | 
 |  | 
 |  | 
 |  | 
 | <confdir:pcm/iec958.conf> | 
 |  | 
 | CA0106.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 [ | 
 | 			{ | 
 | 				name "IEC958 Front Playback Volume" | 
 | 				index 0 | 
 | 				lock true | 
 | 				preserve true | 
 | 				value [ 207 207 ]   # Puts 0x30303030 in the Volume register. 0xff - 0x30 = 0xcf = 207 | 
 | 			} | 
 | 			{ | 
 | 				name "IEC958 Playback Switch" | 
 | 				lock true | 
 | 				preserve true | 
 | 				value 1 | 
 | 			} | 
 | 			{ | 
 | 				interface PCM | 
 | 				name "IEC958 Playback Default" | 
 | 				index 1 | 
 | 				lock true | 
 | 				preserve true | 
 | 				optional true | 
 | 				value [ $AES0 $AES1 $AES2 $AES3 ] | 
 | 			} | 
 | 			{ | 
 | 				# for compatibility with older drivers | 
 | 				name "IEC958 Playback Default" | 
 | 				index 1 | 
 | 				lock true | 
 | 				preserve true | 
 | 				optional true | 
 | 				value [ $AES0 $AES1 $AES2 $AES3 ] | 
 | 			} | 
 | 		] | 
 | 	} | 
 | } |