--- /dev/null
+# Macro HdmiPCM - Generate ALSA control section for hdmi: PCM device
+#
+# Arguments:
+# Device - hardware PCM device
+# Index - hdmi: device index and control index
+#
+
+DefineMacro.HdmiPCM {
+ LibraryConfig.generic.Config.hdmi-pcm.pcm.hdmi."${var:__Index}" {
+ @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
+ device "${evali:$__Device}"
+ }
+ hooks.0 {
+ type ctl_elems
+ hook_args [
+ {
+ name "IEC958 Playback Default"
+ index "${evali:$__Index}"
+ lock true
+ preserve true
+ value [ $AES0 $AES1 $AES2 $AES3 ]
+ }
+ {
+ name "IEC958 Playback Switch"
+ index "${evali:$__Index}"
+ value true
+ }
+ ]
+ }
+ hint.device "${evali:$__Device}"
+ }
+}
+
+# Macro HdmiPCMSave - Save the generated ALSA control for hdmi: PCM device(s)
+# generated inside 'hdmi-pcm' section by prior calls to
+# HdmiPCM macro
+#
+# Arguments:
+# [Name] - Optional name excluding the .conf extension to use for the
+# configuration file, defaults to "42-hdmi-pcm"
+#
+
+DefineMacro.HdmiPCMSave {
+ If.name {
+ Condition {
+ Type String
+ Empty "${var:-__Name}"
+ }
+ True.Define.__Name "42-hdmi-pcm"
+ }
+
+ FixedBootSequence [
+ cfg-save "${var:LibDir}/${var:__Name}.conf:hdmi-pcm"
+ ]
+}