Date: Sun, 12 May 2002 10:36:45 +0100 From: Colin Perkins <csp@isi.edu> To: "Michael W. Collette" <metrol@metrol.net> Cc: Troy <sindrome@sindrome.net>, FreeBSD Mailing Lists <freebsd-mobile@FreeBSD.ORG>, hodson@icir.org Subject: Re: XFree86 on Thinkpad T23 Message-ID: <200205120936.g4C9ajuD000836@purple.nge.isi.edu> In-Reply-To: Your message of "Sat, 11 May 2002 17:12:17 PDT." <200205111712.17347.metrol@metrol.net>
next in thread | previous in thread | raw e-mail | index | archive | help
--> "Michael W. Collette" writes:
>Troy wrote:
>> 2) vi /usr/src/sys/dev/sound/pcm/ac97.c
>> replace:
>> DELAY (1000);
>> with:
>> DELAY (4000);
>
>The clouds parted, the angels wept, and my T23 played a wave!! One teensy
>mistake here in your post threw me for a bit until I managed to dig up the
>post mentioning the original fix. Missed it by one little decimal place :)
>
>DELAY (10000);
> gets replaced with
>DELAY (40000);
>
>That's the magic that makes it work.
>
>I should also note that in the original posts concerning this there was a
>concern that this additional delay may have some interaction problems with
>other devices. I'm personally WAY too early into this to tell one way or the
>other. Just thought it worth mentioning that newer fixes may be a coming.
Orion has a better fix which I've been testing. Try the enclosed, although
there may be a newer version by now (this only fixes the first DELAY(10000),
and needs the obvious fix for the other one).
Colin
Index: ac97.h
===================================================================
RCS file: /home/ncvs/src/sys/dev/sound/pcm/ac97.h,v
retrieving revision 1.3.2.5
diff -u -r1.3.2.5 ac97.h
--- ac97.h 1 Aug 2001 03:41:03 -0000 1.3.2.5
+++ ac97.h 15 Apr 2002 15:21:41 -0000
@@ -47,6 +47,12 @@
#define AC97_REG_GEN 0x20
#define AC97_REG_3D 0x22
#define AC97_REG_POWER 0x26
+#define AC97_POWER_ADC (1 << 0)
+#define AC97_POWER_DAC (1 << 1)
+#define AC97_POWER_ANL (1 << 2)
+#define AC97_POWER_REF (1 << 3)
+#define AC97_POWER_STATUS (AC97_POWER_ADC | AC97_POWER_DAC | \
+ AC97_POWER_REF | AC97_POWER_ANL )
#define AC97_REGEXT_ID 0x28
#define AC97_EXTCAP_VRA (1 << 0)
#define AC97_EXTCAP_DRA (1 << 1)
Index: ac97.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/sound/pcm/ac97.c,v
retrieving revision 1.5.2.7
diff -u -r1.5.2.7 ac97.c
--- ac97.c 12 Dec 2001 19:45:23 -0000 1.5.2.7
+++ ac97.c 15 Apr 2002 15:21:41 -0000
@@ -367,7 +367,18 @@
wrcd(codec, AC97_REG_POWER, (codec->flags & AC97_F_EAPD_INV)? 0x8000 : 0x0000);
wrcd(codec, AC97_REG_RESET, 0);
- DELAY(100000);
+ for(i = 0; i < 500; i++) {
+ static u_int32_t os = 0;
+ u_int32_t s = rdcd(codec, AC97_REG_POWER) & AC97_POWER_STATUS;
+ if (s == AC97_POWER_STATUS)
+ break;
+ if (s != os)
+ device_printf(codec->dev, "status 0x%02x %d\n", s, i);
+ os = s;
+ DELAY(10000);
+ }
+ device_printf(codec->dev, "Ready at %d\n", i);
+
wrcd(codec, AC97_REG_POWER, (codec->flags & AC97_F_EAPD_INV)? 0x8000 : 0x0000);
i = rdcd(codec, AC97_REG_RESET);
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-mobile" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200205120936.g4C9ajuD000836>
