SectionDevice."Speaker" {
	Comment "Mono Speaker"

	ConflictingDevice [
		"Headphones"
	]

	EnableSequence [
		# BYT/CHT devices with an ES8316 codec use a single speaker
		# connected between the headhpone LOUT and ROUT pins, expecting
		# the output to be in a mono differential mode. Presumably this
		# is done to use the power of both the left and right headphone
		# amplifier channels to allow the speaker to be louder.
		#
		# The ES8316 codec does not have a differential output mode, but
		# we can emulate one by making both channels output the exact
		# same signal by setting the "DAC Mono Mix Switch", combined
		# with setting the "Playback Polarity" control to "R Invert",
		# which applies a 180 degrees phase inversion to the right chan.
		cset "name='DAC Mono Mix Switch' on"
		cset "name='Playback Polarity' 1"

		cset "name='Speaker Switch' on"
	]

	DisableSequence [
		cset "name='Speaker Switch' off"
		# DAC settings back to normal for stereo headphones output
		cset "name='Playback Polarity' 0"
		cset "name='DAC Mono Mix Switch' off"
	]

	Value {
		PlaybackPriority 100
		PlaybackPCM "hw:${CardId}"
		# The es8316 only has a HP-amp which is muxed to the speaker
		# or to the headpones output
		PlaybackMixerElem "Headphone Mixer"
		PlaybackMasterElem "DAC"
	}
}
