Date: Sat, 14 Nov 1998 22:58:02 +0900 (JST) From: sanpei@sanpei.org To: FreeBSD-gnats-submit@FreeBSD.ORG Subject: i386/8684: [Patch] Sound only come out from left channel with SBPro/pcm0 Message-ID: <199811141358.WAA10827@lavender.sanpei.org>
next in thread | raw e-mail | index | archive | help
>Number: 8684
>Category: i386
>Synopsis: [Patch] Sound only come out from left channel with SBPro/pcm0
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sat Nov 14 06:00:00 PST 1998
>Last-Modified:
>Originator: MIHIRA Yoshiro
>Organization:
Keio UNIV.
>Release: FreeBSD 3.0-RELEASE i386
>Environment:
pcm0 driver under SoundBlasterPro mode
I tested ESS1868 chip(with SounBlasterPro mode)
and ESS688 chip.
This problem is in 2.2-stable and 3.0-current source tree.
>Description:
Some one reported at FreeBSD-hardware mailing list,
that ``The sound only come out of the left channel''
with ESS1868 chip and pcm0.
Message-ID: <362E17BD.A41AD5BD@bellatlantic.net>
If use VoxWare, it's fine, sound come out from both channel.
Luigi's pcm0 driver use change_bits function which is
originated from VoxWare driver.
But ``change_bits'' was change from VoxWare as below.
VoxWare:(/sys/i386/isa/sound/sb_mixer.c)
189: shift = (*iomap)[dev][chn].bitoffs - (*iomap)[dev][LEFT_CHN].nbits + 1;
pcm0:(/sys/i386/isa/snd/sound.c)
1447: shift = (*t)[dev][chn].bitoffs /*- (*t)[dev][LEFT_CHN].nbits + 1*/;
~~ ~~
And also changed some header files.
VoxWare for SoundBlaster 16:(/sys/i386/isa/sound/sb_mixer.h)
155: MIX_ENT(SOUND_MIXER_VOLUME, 0x30, 7, 5, 0x31, 7, 5),
pcm0 for SoundBlaster 16:(/sys/i386/isa/snd/sbcard.h)
310: PMIX_ENT(SOUND_MIXER_VOLUME, 0x30, 3, 5, 0x31, 3, 5),
~ ~
A1 B1 C1 A2 B2 C3
A: port-offset B: bit-offset C: number of bits
1: left channel, 2: right channel
[B of pcm0] = [B of VoxWare] - [C of Voxware] + 1;
B1 of pcm0 = 3 = 7 - 5 + 1
But mixertable for SoundBlasterPro and sgnxpro(?) were not
changed, there are still same as Voxware :-<
VoxWare for SoundBlasterPro :(/sys/i386/isa/sound/sb_mixer.h)
121: MIX_ENT(SOUND_MIXER_VOLUME, 0x22, 7, 4, 0x22, 3, 4),
pcm0 for SoundBlasterPro:(/sys/i386/isa/snd/sbcard.h)
267: PMIX_ENT(SOUND_MIXER_VOLUME, 0x22, 7, 4, 0x22, 3, 4),
~ ~
I think Luigi forgot to change these values.
I made patch file and appended this send-pr.
BTW, I think some files which are in /sys/i386/isa/snd/
are needed to add $Id$.
>How-To-Repeat:
probe SounBlasterPro compatible card with pcm0
and play back some sounds file.
>Fix:
--- sys/i386/isa/snd/sbcard.h.org Fri Nov 13 02:26:00 1998
+++ sys/i386/isa/snd/sbcard.h Sat Nov 14 21:49:16 1998
@@ -264,15 +264,15 @@
static u_char sb16_recmasks_R[SOUND_MIXER_NRDEVICES];
#else /* __SB_MIXER_C__ defined */
mixer_tab sbpro_mix = {
- PMIX_ENT(SOUND_MIXER_VOLUME, 0x22, 7, 4, 0x22, 3, 4),
+ PMIX_ENT(SOUND_MIXER_VOLUME, 0x22, 4, 4, 0x22, 0, 4),
PMIX_ENT(SOUND_MIXER_BASS, 0x00, 0, 0, 0x00, 0, 0),
PMIX_ENT(SOUND_MIXER_TREBLE, 0x00, 0, 0, 0x00, 0, 0),
- PMIX_ENT(SOUND_MIXER_SYNTH, 0x26, 7, 4, 0x26, 3, 4),
- PMIX_ENT(SOUND_MIXER_PCM, 0x04, 7, 4, 0x04, 3, 4),
+ PMIX_ENT(SOUND_MIXER_SYNTH, 0x26, 4, 4, 0x26, 0, 4),
+ PMIX_ENT(SOUND_MIXER_PCM, 0x04, 4, 4, 0x04, 0, 4),
PMIX_ENT(SOUND_MIXER_SPEAKER, 0x00, 0, 0, 0x00, 0, 0),
- PMIX_ENT(SOUND_MIXER_LINE, 0x2e, 7, 4, 0x2e, 3, 4),
- PMIX_ENT(SOUND_MIXER_MIC, 0x0a, 2, 3, 0x00, 0, 0),
- PMIX_ENT(SOUND_MIXER_CD, 0x28, 7, 4, 0x28, 3, 4),
+ PMIX_ENT(SOUND_MIXER_LINE, 0x2e, 4, 4, 0x2e, 0, 4),
+ PMIX_ENT(SOUND_MIXER_MIC, 0x0a, 0, 3, 0x00, 0, 0),
+ PMIX_ENT(SOUND_MIXER_CD, 0x28, 4, 4, 0x28, 0, 4),
PMIX_ENT(SOUND_MIXER_IMIX, 0x00, 0, 0, 0x00, 0, 0),
PMIX_ENT(SOUND_MIXER_ALTPCM, 0x00, 0, 0, 0x00, 0, 0),
PMIX_ENT(SOUND_MIXER_RECLEV, 0x00, 0, 0, 0x00, 0, 0)
@@ -280,15 +280,15 @@
#ifdef __SGNXPRO__
mixer_tab sgnxpro_mix = {
- PMIX_ENT(SOUND_MIXER_VOLUME, 0x22, 7, 4, 0x22, 3, 4),
- PMIX_ENT(SOUND_MIXER_BASS, 0x46, 2, 3, 0x00, 0, 0),
- PMIX_ENT(SOUND_MIXER_TREBLE, 0x44, 2, 3, 0x00, 0, 0),
- PMIX_ENT(SOUND_MIXER_SYNTH, 0x26, 7, 4, 0x26, 3, 4),
- PMIX_ENT(SOUND_MIXER_PCM, 0x04, 7, 4, 0x04, 3, 4),
- PMIX_ENT(SOUND_MIXER_SPEAKER, 0x42, 2, 3, 0x00, 0, 0),
- PMIX_ENT(SOUND_MIXER_LINE, 0x2e, 7, 4, 0x2e, 3, 4),
- PMIX_ENT(SOUND_MIXER_MIC, 0x0a, 2, 3, 0x00, 0, 0),
- PMIX_ENT(SOUND_MIXER_CD, 0x28, 7, 4, 0x28, 3, 4),
+ PMIX_ENT(SOUND_MIXER_VOLUME, 0x22, 4, 4, 0x22, 0, 4),
+ PMIX_ENT(SOUND_MIXER_BASS, 0x46, 0, 3, 0x00, 0, 0),
+ PMIX_ENT(SOUND_MIXER_TREBLE, 0x44, 0, 3, 0x00, 0, 0),
+ PMIX_ENT(SOUND_MIXER_SYNTH, 0x26, 4, 4, 0x26, 0, 4),
+ PMIX_ENT(SOUND_MIXER_PCM, 0x04, 4, 4, 0x04, 0, 4),
+ PMIX_ENT(SOUND_MIXER_SPEAKER, 0x42, 0, 3, 0x00, 0, 0),
+ PMIX_ENT(SOUND_MIXER_LINE, 0x2e, 4, 4, 0x2e, 0, 4),
+ PMIX_ENT(SOUND_MIXER_MIC, 0x0a, 0, 3, 0x00, 0, 0),
+ PMIX_ENT(SOUND_MIXER_CD, 0x28, 4, 4, 0x28, 0, 4),
PMIX_ENT(SOUND_MIXER_IMIX, 0x00, 0, 0, 0x00, 0, 0),
PMIX_ENT(SOUND_MIXER_ALTPCM, 0x00, 0, 0, 0x00, 0, 0),
PMIX_ENT(SOUND_MIXER_RECLEV, 0x00, 0, 0, 0x00, 0, 0),
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199811141358.WAA10827>
