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