Include.pcm_split.File "/common/pcm/split.conf"

Macro [
	{
		SplitPCM {
			Name "dualsense_mono_out"
			Direction Playback
			Channels 1
			HWChannels 4
			HWChannelPos0 MONO
			HWChannelPos1 MONO
			HWChannelPos2 MONO
			HWChannelPos3 MONO
		}
	}
	{
		SplitPCM {
			Name "dualsense_stereo_out"
			Direction Playback
			Channels 2
			HWChannels 4
			HWChannelPos0 FL
			HWChannelPos1 FR
			HWChannelPos2 FL
			HWChannelPos3 FR
		}
	}
	{
		SplitPCM {
			Name "dualsense_mono_in"
			Direction Capture
			Channels 1
			HWChannels 2
			HWChannelPos0 MONO
			HWChannelPos1 MONO
		}
	}
	{
		SplitPCM {
			Name "dualsense_stereo_in"
			Direction Capture
			Channels 2
			HWChannels 2
			HWChannelPos0 FL
			HWChannelPos1 FR
		}
	}
]

SectionDevice."Speaker" {
	Comment "Internal Mono Speaker"

	ConflictingDevice [
		"Headphones"
	]

	Value {
		PlaybackPriority 100
		PlaybackPCM "hw:${CardId}"
	}

	Macro.pcm_split.SplitPCMDevice {
		Name "dualsense_mono_out"
		Direction Playback
		HWChannels 4
		Channels 1
		Channel0 1
		ChannelPos0 MONO
	}
}

SectionDevice."Headphones" {
	Comment "3.5mm Headphones"

	ConflictingDevice [
		"Speaker"
	]

	Value {
		PlaybackPriority 100
		PlaybackPCM "hw:${CardId}"
		JackControl "Headphone Jack"
	}

	Macro.pcm_split.SplitPCMDevice {
		Name "dualsense_stereo_out"
		Direction Playback
		HWChannels 4
		Channels 2
		Channel0 0
		Channel1 1
		ChannelPos0 FL
		ChannelPos1 FR
	}
}

SectionDevice."Mic" {
	Comment "Internal Microphone"

	ConflictingDevice [
		"Headset"
	]

	Value {
		CapturePriority 100
		CapturePCM "hw:${CardId}"
	}

	Macro.pcm_split.SplitPCMDevice {
		Name "dualsense_mono_in"
		Direction Capture
		HWChannels 2
		Channels 1
		Channel0 0
		ChannelPos0 MONO
	}
}

SectionDevice."Headset" {
	Comment "Headset Microphone"

	ConflictingDevice [
		"Mic"
	]

	Value {
		CapturePriority 100
		CapturePCM "hw:${CardId}"
		JackControl "Headset Mic Jack"
	}

	Macro.pcm_split.SplitPCMDevice {
		Name "dualsense_stereo_in"
		Direction Capture
		HWChannels 2
		Channels 2
		Channel0 0
		Channel1 1
		ChannelPos0 FL
		ChannelPos1 FR
	}
}
