#
# Configuration for the VC4-HDMI sound card using software IEC958
# subframe conversion
#

vc4-hdmi.pcm.hdmi.!0 {
	@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 iec958
	slave {
		format IEC958_SUBFRAME_LE
		pcm {
			type hooks
			slave.pcm {
				type hw
				card $CARD
				device 0
			}
			hooks.0 {
				type ctl_elems
				hook_args [
				{
					name "IEC958 Playback Default"
					interface PCM
					optional true
					lock true
					preserve true
					value [ $AES0 $AES1 $AES2 $AES3 ]
				}
				]
			}
		}
	}
	status [ $AES0 $AES1 $AES2 $AES3 ]
	hdmi_mode true
}

# default with plug and softvol
vc4-hdmi.pcm.!default {
	@args [ CARD ]
	@args.CARD {
		type string
	}
	type asym
	playback.pcm {
		type plug
		slave.pcm {
			type softvol
			slave.pcm {
				@func concat
				strings [
					"cards.vc4-hdmi.pcm.hdmi.0:"
					"CARD=" $CARD ","
					"AES0=0x04,"	# IEC958_AES0_CON_NOT_COPYRIGHT | IEC958_AES0_CON_EMPHASIS_NONE
					"AES1=0x82,"	# IEC958_AES1_CON_ORIGINAL | IEC958_AES1_CON_PCM_CODER
					"AES2=0x00,"	# IEC958_AES2_CON_SOURCE_UNSPEC | IEC958_AES2_CON_CHANNEL_UNSPEC
					"AES3=0x01"	# IEC958_AES3_CON_FS_NOTID (iec958 plugin will fill in actual rate)
				]
			}
			control {
				name "PCM Playback Volume"
				card $CARD
			}
		}
	}
}
