1#
2#  Hardware output from iec958
3#
4
5pcm.!iec958 {
6	@args [ CARD DEV AES0 AES1 AES2 AES3 ]
7	@args.CARD {
8		type string
9		default {
10			@func getenv
11			vars [
12				ALSA_IEC958_CARD
13				ALSA_PCM_CARD
14				ALSA_CARD
15			]
16			default {
17				@func refer
18				name defaults.pcm.iec958.card
19			}
20		}
21	}
22	@args.DEV {
23		type integer
24		default {
25			@func igetenv
26			vars [
27				ALSA_IEC958_DEVICE
28			]
29			default {
30				@func refer
31				name defaults.pcm.iec958.device
32			}
33		}
34	}
35	@args.AES0 {
36		type integer
37		# consumer, not-copyright, emphasis-none, mode=0
38		default 0x04
39	}
40	@args.AES1 {
41		type integer
42		# original, PCM coder
43		default 0x82
44	}
45	@args.AES2 {
46		type integer
47		# source and channel
48		default 0x00
49	}
50	@args.AES3 {
51		type integer
52		# fs=48000Hz, clock accuracy=1000ppm
53		default 0x02
54	}
55	type empty
56	slave.pcm {
57		@func refer
58		name {
59			@func concat
60			strings [
61				"cards."
62				{
63					@func card_driver
64					card $CARD
65				}
66				".pcm.iec958." $DEV ":"
67				"CARD=" $CARD ","
68				"AES0=" $AES0 ","
69				"AES1=" $AES1 ","
70				"AES2=" $AES2 ","
71				"AES3=" $AES3
72			]
73		}
74	}
75	hint {
76		show {
77			@func refer
78			name defaults.namehint.basic
79		}
80		description "IEC958 (S/PDIF) Digital Audio Output"
81		device $DEV
82	}
83}
84