Date: Fri, 13 Feb 2004 23:31:56 -0000 From: Peter Edwards <pmedwards@eircom.net> To: freebsd-current@freebsd.org Cc: grog@freebsd.org Subject: Fwd: nVidia BIOS mapping problems & solution [was Re: 5.2 and Dell Inspiron 5100] Message-ID: <opr3b0zibr86d5fn@mail.eircom.net> In-Reply-To: <opr3b0jlp686d5fn@mail.eircom.net> References: <opr3b0jlp686d5fn@mail.eircom.net>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
Er, originally posted in error to -hackers instead of -current: please
follow up on -current, and apologies for the noise.
------- Forwarded message -------
From: Peter Edwards <pmedwards@eircom.net>
To: freebsd-hackers@freebsd.org
Subject: nVidia BIOS mapping problems & solution [was Re: 5.2 and Dell
Inspiron 5100]
Date: Fri, 13 Feb 2004 23:22:23 -0000
> It seems a few people as well as myself have run into problems with
> nVidia cards not having their VESA bios mapped correctly.
>
> I was happy using a local patch (with a different approach than Greg
> Lehey's) in order to use the nVidia-supplied drivers. I decided to look
> into this one more time before KSE started to kill my nVidia drivers (or
> vice versa, I suppose)
>
> My chipset is apparently an intel "845G" device: it reports itself with
> a PCI ID of 0x25608086, which isn't handled by the Intel AGP code. It
> seems that the "generic" fallbacks muck about with the BIOS mapping on
> this chipsets: I figure the registers are just different on the chipset
> I have, and assume they're similar to the "I845" device: Adding my
> chipsets PCI ID to the cases that handle the i845 gives me a working
> VESA BIOS
> Patch is attached. For others with the same settings, you might need to
> add the device ID of your own AGP chipset. I'm not even sure what the
> PCI config registers affected are for, so even creating an empty case
> statement for your device might help, just by avoiding the default case.
> (Should the default case really be fiddling with device-specific
> registers if it doesn't understand what type of device it is?)
>
> BTW: I also noticed an interaction between the "orm" device and the
> nVidia BIOS: For some reason, the ORM driver ignores ROMs with a "55AA"
> header if the length is not a multiple of 2K: I don't think this is
> correct: I think the real intention is to maintain the 2K spacing from
> IOMEM_START. i.e. I've attached a possible patch for that, also.
--
Peter Edwards
[-- Attachment #2 --]
Index: sys/isa/orm.c
===================================================================
RCS file: /usr/cvs/FreeBSD-CVS/src/sys/isa/orm.c,v
retrieving revision 1.3
diff -u -r1.3 orm.c
--- sys/isa/orm.c 11 Jun 2003 00:32:45 -0000 1.3
+++ sys/isa/orm.c 13 Feb 2004 23:15:16 -0000
@@ -125,7 +125,7 @@
*/
bus_release_resource(child, SYS_RES_MEMORY, rid, res);
bus_delete_resource(child, SYS_RES_MEMORY, sc->rnum);
- if (buf[0] != 0x55 || buf[1] != 0xAA || (buf[2] & 0x03) != 0) {
+ if (buf[0] != 0x55 || buf[1] != 0xAA) {
chunk += IOMEM_STEP;
continue;
}
@@ -143,7 +143,7 @@
sc->rid[sc->rnum] = rid;
sc->res[sc->rnum] = res;
sc->rnum++;
- chunk += rom_size;
+ chunk += (buf[2] + 3 & ~3) << 9; /* Round up to 2K. */
}
if (sc->rnum == 0)
[-- Attachment #3 --]
Index: sys/pci/agp_intel.c
===================================================================
RCS file: /usr/cvs/FreeBSD-CVS/src/sys/pci/agp_intel.c,v
retrieving revision 1.19
diff -u -r1.19 agp_intel.c
--- sys/pci/agp_intel.c 17 Sep 2003 02:58:17 -0000 1.19
+++ sys/pci/agp_intel.c 13 Feb 2004 22:03:42 -0000
@@ -111,6 +111,9 @@
case 0x25788086:
return ("Intel 82875P host to AGP bridge");
+
+ case 0x25608086: /* i845G */
+ return ("Intel 82845G host to AGP bridge");
};
if (pci_get_vendor(dev) == 0x8086)
@@ -236,11 +239,13 @@
case 0x25318086: /* i860 */
case 0x25708086: /* i865 */
case 0x25788086: /* i875P */
+ case 0x25608086: /* i845G */
pci_write_config(dev, AGP_INTEL_I8XX_ERRSTS, 0x00ff, 2);
break;
default: /* Intel Generic (maybe) */
pci_write_config(dev, AGP_INTEL_ERRSTS + 1, 7, 1);
+ break;
}
return 0;
@@ -278,6 +283,7 @@
& ~(1 << 1)), 1);
case 0x1a308086: /* i845 */
+ case 0x25608086: /* i845G */
case 0x33408086: /* i855 */
case 0x25708086: /* i865 */
case 0x25788086: /* i875P */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?opr3b0zibr86d5fn>
