summaryrefslogtreecommitdiff
path: root/sys/arch/i386/isa/ahc_isa.c
diff options
context:
space:
mode:
authorKenneth R Westerback <krw@cvs.openbsd.org>2003-12-24 23:39:41 +0000
committerKenneth R Westerback <krw@cvs.openbsd.org>2003-12-24 23:39:41 +0000
commit8729270c341340bfec8520bf54e99740fab975e0 (patch)
tree0e997ee619c40c17c022e18340053d903880382a /sys/arch/i386/isa/ahc_isa.c
parent4f844a2461025f3d1f55c557d2d2fbbe12ce5f5d (diff)
Sync ahc with NetBSD, which was in turn updated from FreeBSD by Pascal
Renauld of Network Storage Solutions, Inc. Many fixes, wider device support. In particular, the notorious 'Target 0' problem seems to be fixed. Does *not* include any updates to isa or eisa code beyond what was necessary to compile. Known issues: 1) Tagged Queuing is probably not optimal. 2) PPR negotiation may not be fully functional. 3) No support yet for freezing devices or channels. 4) The mechanism for preventing 'A' and 'B' channel confusion during probe can fail if scsibus > 254 found. 5) Requeuing I/O's not working. A workaround will be committed almost immediately. At the moment timeouts, SCSI message rejects, aborting SCB's and trying to freeze a device may cause incomplete i/o's to be reported as complete. 6) Verbosity and probe messages need work. 7) Last disk on bus seems to go through an extra re-negotiation. 8) >16 devices on an adapter will trigger the usual problems of total openings exceeding available SCB's under heavy load. Tested by deraadt@, beck@, miod@, naddy@, drahn@, marc@ amoung others. ok deraadt@.
Diffstat (limited to 'sys/arch/i386/isa/ahc_isa.c')
-rw-r--r--sys/arch/i386/isa/ahc_isa.c19
1 files changed, 3 insertions, 16 deletions
diff --git a/sys/arch/i386/isa/ahc_isa.c b/sys/arch/i386/isa/ahc_isa.c
index c4fb4454299..da74e31f27c 100644
--- a/sys/arch/i386/isa/ahc_isa.c
+++ b/sys/arch/i386/isa/ahc_isa.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ahc_isa.c,v 1.11 2003/08/15 23:01:00 fgsch Exp $ */
+/* $OpenBSD: ahc_isa.c,v 1.12 2003/12/24 23:39:40 krw Exp $ */
/* $NetBSD: ahc_isa.c,v 1.5 1996/10/21 22:27:39 thorpej Exp $ */
/*
@@ -82,7 +82,6 @@
#include <dev/eisa/eisavar.h>
#include <dev/eisa/eisadevs.h>
-#include <dev/ic/aic7xxxreg.h>
#include <dev/ic/aic7xxx_openbsd.h>
#include <dev/ic/aic7xxx_inline.h>
#include <dev/ic/smc93cx6var.h>
@@ -354,20 +353,12 @@ ahc_isa_attach(parent, self, aux)
char idstring[EISA_IDSTRINGLEN];
const char *model;
u_int intdef;
- /*
- * We really don't allocate our softc, but
- * we need to do the initialization. And this
- * also allocates the platform_data structure.
- */
- ahc_alloc(ahc, ahc->sc_dev.dv_xname);
ahc_set_name(ahc, ahc->sc_dev.dv_xname);
ahc_set_unit(ahc, ahc->sc_dev.dv_unit);
/* set dma tags */
ahc->parent_dmat = ia->ia_dmat;
- ahc->buffer_dmat = ia->ia_dmat;
- ahc->shared_data_dmat = ia->ia_dmat;
ahc->chip = AHC_VL; /* We are a VL Bus Controller */
@@ -388,7 +379,6 @@ ahc_isa_attach(parent, self, aux)
printf(": %s\n", model);
ahc->channel = 'A';
- ahc->channel_b = 'B';
ahc->chip = AHC_AIC7770;
ahc->features = AHC_AIC7770_FE;
ahc->bugs |= AHC_TMODE_WIDEODD_BUG;
@@ -471,9 +461,6 @@ ahc_isa_attach(parent, self, aux)
return;
}
- /* Special func to force negotiation */
- ahc_force_neg(ahc);
-
/*
* Link this softc in with all other ahc instances.
*/
@@ -488,10 +475,10 @@ ahc_isa_attach(parent, self, aux)
* The IRQMS bit enables level sensitive interrupts only allow
* IRQ sharing if its set.
*/
- ahc->platform_data->ih = isa_intr_establish(ia->ia_ic, irq,
+ ahc->ih = isa_intr_establish(ia->ia_ic, irq,
ahc->pause & IRQMS ? IST_LEVEL : IST_EDGE, IPL_BIO, ahc_platform_intr,
ahc, ahc->sc_dev.dv_xname);
- if (ahc->platform_data->ih == NULL) {
+ if (ahc->ih == NULL) {
printf("%s: couldn't establish interrupt\n",
ahc->sc_dev.dv_xname);
ahc_free(ahc);