Date: 26 May 1999 17:17:00 +0200 From: Anton Berezin <tobez@plab.ku.dk> To: multimedia@FreeBSD.ORG Subject: [A call for review] Patch to Matrox Meteor driver to make PPB cards work Message-ID: <86hfozvp1v.fsf@lion.plab.ku.dk>
index | next in thread | raw e-mail
I hope this is the right mailing list to send this. Also, should I
submit a PR in order to get this patch applied? Or is it possible
that after reviewing someone with commit privileges will commit the
patch?
The patch is against /usr/src/sys/pci/meteor.c of today's -CURRENT.
--- sys/pci/meteor.c.orig Sun May 9 19:12:25 1999
+++ sys/pci/meteor.c Wed May 26 16:46:36 1999
@@ -161,6 +161,7 @@
#include <sys/devfsext.h>
#endif /* DEVFS */
#include <sys/uio.h>
+#include <sys/bus.h>
#if defined(METEOR_FreeBSD_210)
#include <machine/cpu.h> /* bootverbose */
@@ -171,7 +172,7 @@
#include <vm/pmap.h>
#include <vm/vm_extern.h>
-#include "pci.h"
+#include <pci.h>
#if NPCI > 0
#include <pci/pcivar.h>
#include <pci/pcireg.h>
@@ -1000,12 +1001,51 @@
meteor_reg_t *mtr;
vm_offset_t buf;
u_long latency;
+ device_t bridge_dev;
+ pcici_t bridge_tag;
+ struct pci_devinfo *bridge_dinfo;
+ u_int32_t bridge_data;
if (unit >= NMETEOR) {
printf("meteor%d: attach: only %d units configured.\n",
unit, NMETEOR);
printf("meteor%d: attach: invalid unit number.\n", unit);
return ;
+ }
+
+ /*
+ * Check for Meteor/PPB, reprogram IBM bridge if detected.
+ */
+ if (tag-> bus != 0) {
+ bridge_dev = device_get_parent(device_get_parent(tag-> dev));
+ if (bridge_dev
+ && pci_get_devid(bridge_dev) == 0x00221014 /* IBM 82351,2,3 */
+ && (bridge_dinfo = device_get_ivars(bridge_dev))
+ && (bridge_tag = &bridge_dinfo->cfg)
+ && bridge_tag-> secondarybus == tag-> bus) {
+ if ( bootverbose)
+ printf("meteor%d: PPB device detected, reprogramming IBM bridge.\n", unit);
+
+ /* disable SERR */
+ bridge_data = pci_cfgread(bridge_tag, 0x05, 1);
+ bridge_data = 0x00;
+ pci_cfgwrite(bridge_tag, 0x05, 1, bridge_data);
+
+ /* set LATENCY */
+ bridge_data = pci_cfgread(bridge_tag, 0x0d, 1);
+ bridge_data = 0x20;
+ pci_cfgwrite(bridge_tag, 0x0d, bridge_data, 1);
+
+ /* write posting enable, prefetch enabled --> GRAB direction */
+ bridge_data = pci_cfgread(bridge_tag, 0x42, 1);
+ bridge_data = 0x14;
+ pci_cfgwrite(bridge_tag, 0x42, bridge_data, 1);
+
+ /* 0x4C (PRTR) Primary retry timer register */
+ bridge_data = pci_cfgread(bridge_tag, 0x4c, 1);
+ bridge_data = 0x10;
+ pci_cfgwrite(bridge_tag, 0x4c, bridge_data, 1);
+ }
}
mtr = &meteor[unit];
--
Anton Berezin <tobez@plab.ku.dk>
The Protein Laboratory, University of Copenhagen
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-multimedia" in the body of the message
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?86hfozvp1v.fsf>
