Skip site navigation (1)Skip section navigation (2)
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>