Unverified Commit 30be2641 authored by Hans de Goede's avatar Hans de Goede Committed by Mark Brown
Browse files

ASoC: rt5670: Remove 'OUT Channel Switch' control



The "OUT Channel Switch" control is a left over from code copied from
thr rt5640 codec driver.

With the rt5640 codec driver the output volume controls have 2 pairs of
mute bits:
bit 7, 15: Mute Control for Spk/Headphone/Line Output Port
bit 6, 14: Mute Control for Spk/Headphone/Line Volume Channel

Bits 7 and 15 are normal mute bits on the rt5670/5672 which are
controlled by 2 dapm widgets:
	SND_SOC_DAPM_SWITCH("LOUT L Playback", SND_SOC_NOPM, 0, 0,
			    &lout_l_enable_control),
	SND_SOC_DAPM_SWITCH("LOUT R Playback", SND_SOC_NOPM, 0, 0,
			    &lout_r_enable_control),

But on the 5670/5672 bit 6 is always reserved, where as bit 14 is
"LOUT Differential Mode" on the 5670 and also reserved on the 5672.

So the "OUT Channel Switch" control which is controlling bits 6+14
of the "LINE Output Control" register is bogus -> remove it.

This should not cause any issues for userspace. AFAICT the rt567x codecs
are only used on x86/ACPI devices and the UCM profiles used there do not
use the "OUT Channel Switch" control.

Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20210215142118.308516-2-hdegoede@redhat.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 9fd914d9
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -637,8 +637,6 @@ static const struct snd_kcontrol_new rt5670_snd_controls[] = {
		RT5670_L_VOL_SFT, RT5670_R_VOL_SFT,
		39, 1, out_vol_tlv),
	/* OUTPUT Control */
	SOC_DOUBLE("OUT Channel Switch", RT5670_LOUT1,
		RT5670_VOL_L_SFT, RT5670_VOL_R_SFT, 1, 1),
	SOC_DOUBLE_TLV("OUT Playback Volume", RT5670_LOUT1,
		RT5670_L_VOL_SFT, RT5670_R_VOL_SFT, 39, 1, out_vol_tlv),
	/* DAC Digital Volume */
+0 −4
Original line number Diff line number Diff line
@@ -212,12 +212,8 @@
/* global definition */
#define RT5670_L_MUTE				(0x1 << 15)
#define RT5670_L_MUTE_SFT			15
#define RT5670_VOL_L_MUTE			(0x1 << 14)
#define RT5670_VOL_L_SFT			14
#define RT5670_R_MUTE				(0x1 << 7)
#define RT5670_R_MUTE_SFT			7
#define RT5670_VOL_R_MUTE			(0x1 << 6)
#define RT5670_VOL_R_SFT			6
#define RT5670_L_VOL_MASK			(0x3f << 8)
#define RT5670_L_VOL_SFT			8
#define RT5670_R_VOL_MASK			(0x3f)