kern/98167: [sound] ES1370 mixer volumes incorrectly calculated (patch included)

Joseph Terner jtsn at gmx.de
Tue May 30 12:20:48 PDT 2006


>Number:         98167
>Category:       kern
>Synopsis:       [sound] ES1370 mixer volumes incorrectly calculated (patch included)
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue May 30 19:20:29 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     Joseph Terner
>Release:        FreeBSD 5.4-RELEASE
>Organization:
>Environment:
n/a
>Description:
The mixer on the ES1370 sound chip provides 5 significant bits for all channels except output gain. The current code in sys/dev/sound/pci/es137x.c uses only 4 of them. Therefore the lower half of the volume range is unavailable (0 represents maximum volume).
>How-To-Repeat:
Try to set low volumes using mixer(1) on an ES1370 sound card. With an unpatched driver there is an audible gap between mute and the lowest possible volume.
>Fix:
Patch for es137x.c,v 1.59 from 7-CURRENT:

--- sys/dev/sound/pci/es137x.c.orig     Tue May 30 20:50:27 2006
+++ sys/dev/sound/pci/es137x.c  Tue May 30 20:49:43 2006
@@ -311,7 +311,7 @@
        if (mixtable[dev].left == 0xf) {
                rl = (l < 2)? 0x80 : 7 - (l - 2) / 14;
        } else {
-               rl = (l < 10)? 0x80 : 15 - (l - 10) / 6;
+               rl = (l < 7)? 0x80 : 31 - (l - 7) / 3;
        }
        es = mix_getdevinfo(m);
        ES_LOCK(es);
@@ -322,7 +322,7 @@
                set_dac1 = 0;
        }
        if (mixtable[dev].stereo) {
-               rr = (r < 10)? 0x80 : 15 - (r - 10) / 6;
+               rr = (r < 7)? 0x80 : 31 - (r - 7) / 3;
                es1370_wrcodec(es, mixtable[dev].right, rr);
                if (set_dac1 && mixtable[SOUND_MIXER_SYNTH].stereo)
                        es1370_wrcodec(es, mixtable[SOUND_MIXER_SYNTH].right, rr
);

>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list