From owner-FreeBSD-tech-jp@jp.freebsd.org  Sat Oct 27 06:10:46 2001
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id GAA90357;
	Sat, 27 Oct 2001 06:10:46 +0900 (JST)
	(envelope-from owner-FreeBSD-tech-jp@jp.FreeBSD.org)
Received: from pelsia.netmove.co.jp (pelsia.netmove.co.jp [202.241.207.159])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id GAA90352
	for <FreeBSD-tech-jp@jp.freebsd.org>; Sat, 27 Oct 2001 06:10:45 +0900 (JST)
	(envelope-from shige@netmove.co.jp)
Received: (from nork@localhost)
	by pelsia.netmove.co.jp (8.11.6/8.11.6) id f9QLAFN61220;
	Sat, 27 Oct 2001 06:10:15 +0900 (JST)
	(envelope-from nork)
From: nork@cityfujisawa.ne.jp (Norikatsu Shigemura)
To: FreeBSD-tech-jp@jp.freebsd.org
X-Mailer: mnews [version 1.22PL5] 2001-02/07(Wed)
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-2022-JP
Date: Sat, 27 Oct 2001 06:10:15 +0900
Message-ID: <011027061015.M0160889@pelsia.netmove.co.jp>
Reply-To: FreeBSD-tech-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+010328
X-Sequence: FreeBSD-tech-jp 3189
Subject: [FreeBSD-tech-jp 3189] agp driver for i840/i850
Errors-To: owner-FreeBSD-tech-jp@jp.freebsd.org
Sender: owner-FreeBSD-tech-jp@jp.freebsd.org
X-Originator: nork@cityfujisawa.ne.jp

$B=EB<K!9n$G$9!#(B

	$B5W!9$K(B Matrox $B6`@=$N(B MGA $B$N%I%i%$%P$,%P!<%8%g%s%"%C%W$5$l(B,
	XFree86 4.1.0 $B$G$b$3$l$N287C$r<u$1$i$l$k$h$&$K$J$C$?$N$O$$$$$N$G(B
	$B$9$,(B, $B<+J,$N%^%7%s(B(SUPERMICRO PIIIDM3 - i840 $B%A%C%W%;%C%H(B with
	Millenium G400SH )$B$G;H$($J$$;v$K6H$r<Q$d$7$F(B:-) Linux $B%+!<%M%k(B
	(2.4.10)$B;29M$K<j$r2C$($F$_$^$7$?!#4pK\E*$J9=B$$,F1$8$G=u$+$j$^(B
	$B$7$?(B(^^;$B!#(B

	$B0J2<$N%Q%C%A$O(B i840 $B$N$_$G$9$,(B, i850 $B$NDI2C$b$3$l$HF1$8$h$&$K$9(B
	$B$0$K$G$-$^$9!#(Bquick hack $B$b$5$k$3$H$J$,$i(B agp_intel_attach $B$+$i(B
	$BFHN)$7$F(B agp_i840_attach, agp_i850_attach $B$rF3F~$7$?J}$,$$$$$H(B
	$B$O;W$C$F$$$k$N$G$9$,(B, agp_intel_probe $B$G8+IU$+$C$?;~$KJ,4t$G$-(B
	$B$k$N$+$J$!!#!#!#(B

# i850 $B$O(B 0x0x25308086 $B$G(B, 0xc000 $B$,(B 0x001c $B$K$J$k(B($B0UL#ITL@(B)..

	$B$H$j$"$($:5/F0;~$K%U%j!<%:$9$k$3$H$,L5$/$J$C$?$N$G$9$,(B, $B$&$&(B
	x11/XFree86-4 $BF~$l$F$k$+$i(B mga.ko $B$,;n$;$J$$!D!#$H$$$&$o$1$GF0:n(B
	$B3NG'$7$F$$$?$@$1$l$P9,$$$G$9!#(B

agp0: <Intel 82840 host to AGP bridge> mem 0xf8000000-0xfbffffff at device 0.0 on pci0
agp0: allocating GATT for aperture of size 64M

	i845 $B$K$D$$$F$O(B Linux 2.4.10 $B$K$OL5$$;v$+$iBP1~$O8+Aw$j$G$9(B:-)$B!#(B
	$B$*$=$i$/$=$l$[$I0c$$$OL5$$$H$O;W$C$F$$$^$9$,!D!#(B


--- sys/pci/agp_intel.c.orig	Wed Jul 19 18:48:04 2000
+++ sys/pci/agp_intel.c	Sat Oct 27 05:34:14 2001
@@ -74,6 +74,9 @@
 
  	case 0x71a18086:
  		return ("Intel 82443GX host to AGP bridge");
+
+	case 0x1a218086:
+ 		return ("Intel 82840 host to AGP bridge");
 	};
 
 	if (pci_get_vendor(dev) == 0x8086)
@@ -130,11 +133,19 @@
 	pci_write_config(dev, AGP_INTEL_ATTBASE, gatt->ag_physical, 4);
 	
 	/* Enable things, clear errors etc. */
-	pci_write_config(dev, AGP_INTEL_AGPCTRL, 0x2280, 4);
-	pci_write_config(dev, AGP_INTEL_NBXCFG,
-			 (pci_read_config(dev, AGP_INTEL_NBXCFG, 4)
-			  & ~(1 << 10)) | (1 << 9), 4);
-	pci_write_config(dev, AGP_INTEL_ERRSTS + 1, 7, 1);
+        if (pci_get_devid(dev) == 0x1a218086 ) {
+		pci_write_config(dev, AGP_INTEL_AGPCTRL, 0x0000, 4);
+		pci_write_config(dev, AGP_INTEL_I840_MCHCFG,
+				 (pci_read_config(dev, AGP_INTEL_I840_MCHCFG, 2)
+				  | (1 << 9)), 2);
+		pci_write_config(dev, AGP_INTEL_I840_ERRSTS, 0xc000, 2);
+	} else {
+		pci_write_config(dev, AGP_INTEL_AGPCTRL, 0x2280, 4);
+		pci_write_config(dev, AGP_INTEL_NBXCFG,
+				 (pci_read_config(dev, AGP_INTEL_NBXCFG, 4)
+				  & ~(1 << 10)) | (1 << 9), 4);
+		pci_write_config(dev, AGP_INTEL_ERRSTS + 1, 7, 1);
+	}
 
 	return 0;
 }
--- sys/pci/agpreg.h.orig	Wed Jul 19 18:48:04 2000
+++ sys/pci/agpreg.h	Sat Oct 27 05:27:27 2001
@@ -57,6 +57,12 @@
 #define AGP_INTEL_ATTBASE	0xb8
 
 /*
+ * Config offsets for Intel i840 AGP chipsets.
+ */
+#define	AGP_INTEL_I840_MCHCFG	0x50
+#define AGP_INTEL_I840_ERRSTS	0xc8
+
+/*
  * Config offsets for VIA AGP chipsets.
  */
 #define AGP_VIA_GARTCTRL	0x80
