# 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" ] } # Macro SofHdmiDevice - Create hdmi PCM device for a sound card if passthrough # is supported # # Arguments: # Iec61937Devices - Comma separated list of PCM device ids supporting iec61937 # passthrough # Dev - Hardware PCM device to match in Iec61937Devices for iec61937 support # Idx - hdmi: device index and control index # DefineMacro.HdmiDevice.If.iec61937 { Condition { Type RegexMatch Regex "((^|,)[${var:__Dev}](,|$))" String "${var:__Iec61937Devices}" } True.Macro.0.HdmiPCM { Device "${var:__Dev}" Index "${var:__Idx}" } }