[alsa-devel] [PATCH] wss_lib: snd_wss_calibrate_mute improvement
From: Krzysztof Helt krzysztof.h1@wp.pl
Mute sound by setting mute bit without setting volume to 0. It makes both source code and binary shorter.
Signed-off-by: Krzysztof Helt krzysztof.h1@wp.pl ---
diff -urp alsa-ref/sound/isa/wss/wss_lib.c alsa-driver/sound/isa/wss/wss_lib.c --- alsa-ref/sound/isa/wss/wss_lib.c 2008-08-14 00:05:30.000000000 +0200 +++ alsa-driver/sound/isa/wss/wss_lib.c 2008-08-17 22:33:24.620085406 +0200 @@ -574,7 +574,7 @@ static void snd_wss_calibrate_mute(struc { 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(struc 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);
---------------------------------------------------------------------- Igrzyska na Dzikim Zachodzie! Sprawdz >> http://link.interia.pl/f1edc
On 17-08-08 22:38, Krzysztof Helt wrote:
From: Krzysztof Helt krzysztof.h1@wp.pl
Mute sound by setting mute bit without setting volume to 0. It makes both source code and binary shorter.
Signed-off-by: Krzysztof Helt krzysztof.h1@wp.pl
Grmmbbled-over-by: Rene Herman rene.herman@gmail.com
This should be safe and the current function indeed generates crap code but in the sense of always expecting the worst broken hardware variants to be out there I must say I'd rather have seen that GCC were beter. But yes, sure.
Rene.
At Mon, 18 Aug 2008 10:50:15 +0200, Rene Herman wrote:
On 17-08-08 22:38, Krzysztof Helt wrote:
From: Krzysztof Helt krzysztof.h1@wp.pl
Mute sound by setting mute bit without setting volume to 0. It makes both source code and binary shorter.
Signed-off-by: Krzysztof Helt krzysztof.h1@wp.pl
Grmmbbled-over-by: Rene Herman rene.herman@gmail.com
This should be safe and the current function indeed generates crap code but in the sense of always expecting the worst broken hardware variants to be out there I must say I'd rather have seen that GCC were beter. But yes, sure.
Yeah, the slightest concern is the intention of using 0x80 there. If this patch was already tested on some real hardwares (and I guess it should work), I'm willing to apply it. Krzystof, was this tested on your machines?
Takashi
On 18-08-08 12:16, Takashi Iwai wrote:
At Mon, 18 Aug 2008 10:50:15 +0200, Rene Herman wrote:
On 17-08-08 22:38, Krzysztof Helt wrote:
From: Krzysztof Helt krzysztof.h1@wp.pl
Mute sound by setting mute bit without setting volume to 0. It makes both source code and binary shorter.
Signed-off-by: Krzysztof Helt krzysztof.h1@wp.pl
Grmmbbled-over-by: Rene Herman rene.herman@gmail.com
This should be safe and the current function indeed generates crap code but in the sense of always expecting the worst broken hardware variants to be out there I must say I'd rather have seen that GCC were beter. But yes, sure.
Yeah, the slightest concern is the intention of using 0x80 there.
Yes, shared that same concern but it's very likely not significant. The original thought may just have been that you have to write _something_ so you might as well simply write 0x80 instead or or-ing in a bit and with volume at 0, your're even "doubly safe"...
If this patch was already tested on some real hardwares (and I guess it should work), I'm willing to apply it. Krzystof, was this tested on your machines?
Not (yet) on any of mine at least but actually having something where it does not work would be surprising. I could sort of imagine something being out there that ignores the mute bit but I doubt that either of us is actually going to have it even if it is.
Avoiding cargo-cult programming isn't unimportant so let's not be _too_ cautious I guess. It does currently make for crap code (GCC could be using cmov here it seems but it doesn't) which is an excuse...
Rene.
participants (3)
-
Krzysztof Helt
-
Rene Herman
-
Takashi Iwai