kern/66422: no sound on modern Sony Vaio (PCG-TR*) [patch]
Mikhail Teterin
mi at aldan.algebra.com
Sun May 9 09:30:25 PDT 2004
>Number: 66422
>Category: kern
>Synopsis: no sound on modern Sony Vaio (PCG-TR*) [patch]
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sun May 09 09:30:23 PDT 2004
>Closed-Date:
>Last-Modified:
>Originator: Mikhail Teterin
>Release: FreeBSD 5.2-CURRENT i386
>Organization:
Virtual Estates, Inc.
>Environment:
System: FreeBSD aldan.algebra.com 5.2-CURRENT FreeBSD 5.2-CURRENT #0: Mon Mar 29 19:54:25 EST 2004 mi at aldan.algebra.com:/home/obj/oh/src/sys/DEBUG i386
>Description:
The laptop uses Intel's Centrino for everything. The sound card
is recognized by the snd_ich module, and all of the
sound-producing programs work, but no sound ever comes out.
>How-To-Repeat:
Boot a Vaio-TR laptop.
kldload snd_ich
mpg123 anything.mp3
mpg123 honestly decodes, but there is no sound in the speakers,
nor in the headphones.
>Fix:
The idea is from FUKAUMI Naoki, whose e-mail I found at
http://www.unixmagic.org/ml/netbsd/200308/msg00011.html
reading it was impossible for me, except for the patches :-)
The ach97.c-patch was not directly applicable to FreeBSD, but
the idea to write AC97_POWER_EAMP while initializing turned out
to be applicable.
The sound on my PCG-TR2/B now works, although pushing the
sound-controlling buttons on the laptop's keyboard and on the
lid still has no effect.
I'm sure, there were good reasons to conditionalize this
based on ``codec->flags & AC97_F_EAPD_INV'', so my patch will,
probably, break sound on some other machine. Someone with
knowledge of the specs should carefully examine it...
The patch is slightly bigger than it absolutely needs to be,
because I'm replacing the 0x8000 constant with AC97_POWER_EAMP
borrowed from NetBSD.
===================================================================
RCS file: /home/ncvs/src/sys/dev/sound/pcm/ac97.h,v
retrieving revision 1.15
diff -U2 -r1.15 ac97.h
--- sys/dev/sound/pcm/ac97.h 7 Sep 2003 16:28:03 -0000 1.15
+++ sys/dev/sound/pcm/ac97.h 9 May 2004 16:21:35 -0000
@@ -63,4 +63,5 @@
#define AC97_POWER_STATUS (AC97_POWER_ADC | AC97_POWER_DAC | \
AC97_POWER_REF | AC97_POWER_ANL )
+#define AC97_POWER_EAMP 0x8000
#define AC97_REGEXT_ID 0x28
#define AC97_EXTCAP_VRA (1 << 0)
===================================================================
RCS file: /home/ncvs/src/sys/dev/sound/pcm/ac97.c,v
retrieving revision 1.50
diff -U2 -r1.50 ac97.c
--- sys/dev/sound/pcm/ac97.c 23 Jan 2004 16:38:54 -0000 1.50
+++ sys/dev/sound/pcm/ac97.c 9 May 2004 16:21:35 -0000
@@ -546,7 +546,7 @@
}
- ac97_wrcd(codec, AC97_REG_POWER, (codec->flags & AC97_F_EAPD_INV)? 0x8000 : 0x0000);
+ ac97_wrcd(codec, AC97_REG_POWER, (codec->flags & AC97_F_EAPD_INV)? AC97_POWER_EAMP : 0x0000);
ac97_reset(codec);
- ac97_wrcd(codec, AC97_REG_POWER, (codec->flags & AC97_F_EAPD_INV)? 0x8000 : 0x0000);
+ ac97_wrcd(codec, AC97_REG_POWER, AC97_POWER_EAMP);
i = ac97_rdcd(codec, AC97_REG_RESET);
@@ -661,7 +661,7 @@
}
- ac97_wrcd(codec, AC97_REG_POWER, (codec->flags & AC97_F_EAPD_INV)? 0x8000 : 0x0000);
+ ac97_wrcd(codec, AC97_REG_POWER, (codec->flags & AC97_F_EAPD_INV)? AC97_POWER_EAMP : 0x0000);
ac97_reset(codec);
- ac97_wrcd(codec, AC97_REG_POWER, (codec->flags & AC97_F_EAPD_INV)? 0x8000 : 0x0000);
+ ac97_wrcd(codec, AC97_REG_POWER, AC97_POWER_EAMP);
if (!codec->noext) {
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list