1#
2# Configuration for the CS46xx chip
3#
4
5<confdir:pcm/front.conf>
6
7CS46xx.pcm.front.0 {
8	@args [ CARD  ]
9	@args.CARD {
10		type string
11	}
12	type hw
13	card $CARD
14}	
15
16# default with plughw
17# CS46xx supports multi-playback
18CS46xx.pcm.default {
19	@args [ CARD ]
20	@args.CARD {
21		type string
22	}
23	type asym
24	playback.pcm {
25		type plug
26		slave.pcm {
27			@func concat
28			strings [ "hw:" $CARD ]
29		}
30	}
31	capture.pcm {
32		type plug
33		slave.pcm {
34			@func concat
35			strings [ "hw:" $CARD ]
36		}
37	}
38}
39
40<confdir:pcm/rear.conf>
41
42CS46xx.pcm.rear.0 {
43	@args [ CARD ]
44	@args.CARD {
45		type string
46	}
47	type hooks
48	slave.pcm {
49		type hw
50		card $CARD
51		device 1
52	}
53	hooks.0 {
54		type ctl_elems
55		hook_args [
56			{
57				name "Duplicate Front"
58				lock true
59				preserve true
60				value 0
61				optional true
62			}
63		]
64	}
65}	
66
67<confdir:pcm/center_lfe.conf>
68
69CS46xx.pcm.center_lfe.0 {
70	@args [ CARD ]
71	@args.CARD {
72		type string
73	}
74	type hw
75	card $CARD
76	device 3
77}	
78
79<confdir:pcm/surround40.conf>
80
81CS46xx.pcm.surround40.0 {
82	@args [ CARD ]
83	@args.CARD {
84		type string
85	}
86	type multi
87	slaves [
88		{
89			pcm {
90				@func concat
91				strings [
92					"cards.CS46xx.pcm.front.0:CARD=" $CARD
93				]
94			}
95			channels 2
96		}
97		{
98			pcm {
99				@func concat
100				strings [
101					"cards.CS46xx.pcm.rear.0:CARD=" $CARD
102				]
103			}
104			channels 2
105		}
106	]
107	bindings [
108		{ slave 0 channel 0 }
109		{ slave 0 channel 1 }
110		{ slave 1 channel 0 }
111		{ slave 1 channel 1 }
112	]
113}
114
115<confdir:pcm/surround41.conf>
116<confdir:pcm/surround50.conf>
117<confdir:pcm/surround51.conf>
118
119CS46xx.pcm.surround51.0 {
120	@args [ CARD ]
121	@args.CARD {
122		type string
123	}
124	type multi
125	slaves [
126		{
127			pcm {
128				@func concat
129				strings [
130					"cards.CS46xx.pcm.front.0:CARD=" $CARD
131				]
132			}
133			channels 2
134		}
135		{
136			pcm {
137				@func concat
138				strings [
139					"cards.CS46xx.pcm.rear.0:CARD=" $CARD
140				]
141			}
142			channels 2
143		}
144		{
145			pcm {
146				@func concat
147				strings [
148					"cards.CS46xx.pcm.center_lfe.0:CARD=" $CARD
149				]
150			}
151			channels 2
152		}
153	]
154	bindings [
155		{ slave 0 channel 0 }
156		{ slave 0 channel 1 }
157		{ slave 1 channel 0 }
158		{ slave 1 channel 1 }
159		{ slave 2 channel 0 }
160		{ slave 2 channel 1 }
161	]
162}
163
164<confdir:pcm/iec958.conf>
165
166CS46xx.pcm.iec958.0 {
167	@args [ CARD AES0 AES1 AES2 AES3 ]
168	@args.CARD {
169		type string
170	}
171	@args.AES0 {
172		type integer
173	}
174	@args.AES1 {
175		type integer
176	}
177	@args.AES2 {
178		type integer
179	}
180	@args.AES3 {
181		type integer
182	}
183	type hooks
184	slave.pcm {
185		type hw
186		card $CARD
187		device 2
188	}
189	hooks.0 {
190		type ctl_elems
191		hook_args [
192			{
193				name "IEC958 Output Switch"
194				lock true
195				preserve true
196				value 1
197			}
198			{
199				interface PCM
200				name "IEC958 Playback PCM Stream"
201				device 2
202				lock true
203				preserve true
204				optional true
205				value [ $AES0 $AES1 $AES2 $AES3 ]
206			}
207			{
208				# for compatibility with older drivers
209				interface PCM
210				name "IEC958 Playback PCM Stream"
211				lock true
212				preserve true
213				optional true
214				value [ $AES0 $AES1 $AES2 $AES3 ]
215			}
216		]
217	}
218}
219