Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ace457c7 authored by Krzysztof Helt's avatar Krzysztof Helt Committed by Jaroslav Kysela
Browse files

ALSA: wss_lib: snd_wss_calibrate_mute improvement



Mute sound by setting mute bit without
setting volume to 0. It makes both source code
and binary shorter.

Signed-off-by: default avatarKrzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarJaroslav Kysela <perex@perex.cz>
parent 9e44c6e4
Loading
Loading
Loading
Loading
+13 −13
Original line number Diff line number Diff line
@@ -574,7 +574,7 @@ static void snd_wss_calibrate_mute(struct snd_wss *chip, int mute)
{
	unsigned long flags;

	mute = mute ? 1 : 0;
	mute = mute ? 0x80 : 0;
	spin_lock_irqsave(&chip->reg_lock, flags);
	if (chip->calibrate_mute == mute) {
		spin_unlock_irqrestore(&chip->reg_lock, flags);
@@ -589,34 +589,34 @@ static void snd_wss_calibrate_mute(struct snd_wss *chip, int mute)
			     chip->image[CS4231_LOOPBACK]);
	}
	snd_wss_dout(chip, CS4231_AUX1_LEFT_INPUT,
		     mute ? 0x80 : chip->image[CS4231_AUX1_LEFT_INPUT]);
		     mute | chip->image[CS4231_AUX1_LEFT_INPUT]);
	snd_wss_dout(chip, CS4231_AUX1_RIGHT_INPUT,
		     mute ? 0x80 : chip->image[CS4231_AUX1_RIGHT_INPUT]);
		     mute | chip->image[CS4231_AUX1_RIGHT_INPUT]);
	snd_wss_dout(chip, CS4231_AUX2_LEFT_INPUT,
		     mute ? 0x80 : chip->image[CS4231_AUX2_LEFT_INPUT]);
		     mute | chip->image[CS4231_AUX2_LEFT_INPUT]);
	snd_wss_dout(chip, CS4231_AUX2_RIGHT_INPUT,
		     mute ? 0x80 : chip->image[CS4231_AUX2_RIGHT_INPUT]);
		     mute | chip->image[CS4231_AUX2_RIGHT_INPUT]);
	snd_wss_dout(chip, CS4231_LEFT_OUTPUT,
		     mute ? 0x80 : chip->image[CS4231_LEFT_OUTPUT]);
		     mute | chip->image[CS4231_LEFT_OUTPUT]);
	snd_wss_dout(chip, CS4231_RIGHT_OUTPUT,
		     mute ? 0x80 : chip->image[CS4231_RIGHT_OUTPUT]);
		     mute | chip->image[CS4231_RIGHT_OUTPUT]);
	if (!(chip->hardware & WSS_HW_AD1848_MASK)) {
		snd_wss_dout(chip, CS4231_LEFT_LINE_IN,
			     mute ? 0x80 : chip->image[CS4231_LEFT_LINE_IN]);
			     mute | chip->image[CS4231_LEFT_LINE_IN]);
		snd_wss_dout(chip, CS4231_RIGHT_LINE_IN,
			     mute ? 0x80 : chip->image[CS4231_RIGHT_LINE_IN]);
			     mute | chip->image[CS4231_RIGHT_LINE_IN]);
		snd_wss_dout(chip, CS4231_MONO_CTRL,
			     mute ? 0xc0 : chip->image[CS4231_MONO_CTRL]);
	}
	if (chip->hardware == WSS_HW_INTERWAVE) {
		snd_wss_dout(chip, CS4231_LEFT_MIC_INPUT,
			     mute ? 0x80 : chip->image[CS4231_LEFT_MIC_INPUT]);
			     mute | chip->image[CS4231_LEFT_MIC_INPUT]);
		snd_wss_dout(chip, CS4231_RIGHT_MIC_INPUT,
			     mute ? 0x80 : chip->image[CS4231_RIGHT_MIC_INPUT]);
			     mute | chip->image[CS4231_RIGHT_MIC_INPUT]);
		snd_wss_dout(chip, CS4231_LINE_LEFT_OUTPUT,
			mute ? 0x80 : chip->image[CS4231_LINE_LEFT_OUTPUT]);
			     mute | chip->image[CS4231_LINE_LEFT_OUTPUT]);
		snd_wss_dout(chip, CS4231_LINE_RIGHT_OUTPUT,
			mute ? 0x80 : chip->image[CS4231_LINE_RIGHT_OUTPUT]);
			     mute | chip->image[CS4231_LINE_RIGHT_OUTPUT]);
	}
	chip->calibrate_mute = mute;
	spin_unlock_irqrestore(&chip->reg_lock, flags);