]> git.hungrycats.org Git - linux/commitdiff
[PATCH] [2.5] maestro volume tuning
authorSamuel Thibault <samuel.thibault@ens-lyon.fr>
Sat, 12 Jul 2003 07:17:40 +0000 (00:17 -0700)
committerLinus Torvalds <torvalds@home.osdl.org>
Sat, 12 Jul 2003 07:17:40 +0000 (00:17 -0700)
This tunes the volume control of maestro sound boards: The log
conversion seems not good for PCM and CD.  The volume buttons
incrementing / decrementing the main volume by 10 on 100 is too much,
much better set it to 5.

sound/oss/maestro.c

index d4ddc9b76819a66bc01f6d927df144da06d03995..934cbf378dc2e1661d273b5080ec710ccabbf62b 100644 (file)
@@ -726,6 +726,12 @@ static void ac97_write_mixer(struct ess_card *card,int mixer, unsigned int left,
                        left = (left * mh->scale) / 100;
                        if ((left == 0) && (right == 0))
                                val |= 0x8000;
+               } else if (mixer == SOUND_MIXER_PCM || mixer == SOUND_MIXER_CD) {
+                       /* log conversion seems bad for them */
+                       if ((left == 0) && (right == 0))
+                               val = 0x8000;
+                       right = ((100 - right) * mh->scale) / 100;
+                       left = ((100 - left) * mh->scale) / 100;
                } else {
                        /* log conversion for the stereo controls */
                        if((left == 0) && (right == 0))
@@ -1937,12 +1943,12 @@ ess_interrupt(int irq, void *dev_id, struct pt_regs *regs)
                   manner by adjusting the master mixer volume. */
                volume = c->mix.mixer_state[0] & 0xff;
                if (vol_evt == UP_EVT) {
-                       volume += 10;
+                       volume += 5;
                        if (volume > 100)
                                volume = 100;
                }
                else if (vol_evt == DOWN_EVT) {
-                       volume -= 10;
+                       volume -= 5;
                        if (volume < 0)
                                volume = 0;
                } else {