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}"
}
}