summaryrefslogtreecommitdiff
path: root/sys/dev/isa
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>1998-12-27 09:41:58 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>1998-12-27 09:41:58 +0000
commit085dbeeb021f09e1a807efd3effcb0c33315e82e (patch)
tree1185679355006c1183ea0decdca11fecc1ccc3e9 /sys/dev/isa
parent420d032ef94a5f4b33c1c706eb0a73aa2d46be4f (diff)
non-working isapnp aha support
Diffstat (limited to 'sys/dev/isa')
-rw-r--r--sys/dev/isa/aha.c36
-rw-r--r--sys/dev/isa/files.isa6
-rw-r--r--sys/dev/isa/files.isapnp4
3 files changed, 36 insertions, 10 deletions
diff --git a/sys/dev/isa/aha.c b/sys/dev/isa/aha.c
index 1cec44c76c1..22ab12b8b7a 100644
--- a/sys/dev/isa/aha.c
+++ b/sys/dev/isa/aha.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: aha.c,v 1.31 1998/08/13 04:36:50 downsj Exp $ */
+/* $OpenBSD: aha.c,v 1.32 1998/12/27 09:41:56 deraadt Exp $ */
/* $NetBSD: aha.c,v 1.11 1996/05/12 23:51:23 mycroft Exp $ */
#undef AHADIAG
@@ -147,7 +147,7 @@ void aha_queue_ccb __P((struct aha_softc *, struct aha_ccb *));
void aha_collect_mbo __P((struct aha_softc *));
void aha_start_ccbs __P((struct aha_softc *));
void aha_done __P((struct aha_softc *, struct aha_ccb *));
-int aha_find __P((struct isa_attach_args *, struct aha_softc *));
+int aha_find __P((struct isa_attach_args *, struct aha_softc *, int));
void aha_init __P((struct aha_softc *));
void aha_inquire_setup_information __P((struct aha_softc *));
void ahaminphys __P((struct buf *));
@@ -170,10 +170,15 @@ struct scsi_device aha_dev = {
NULL, /* Use default 'done' routine */
};
+int aha_isapnp_probe __P((struct device *, void *, void *));
int ahaprobe __P((struct device *, void *, void *));
void ahaattach __P((struct device *, struct device *, void *));
-struct cfattach aha_ca = {
+struct cfattach aha_isapnp_ca = {
+ sizeof(struct aha_softc), aha_isapnp_probe, ahaattach
+};
+
+struct cfattach aha_isa_ca = {
sizeof(struct aha_softc), ahaprobe, ahaattach
};
@@ -318,6 +323,15 @@ aha_cmd(iobase, sc, icnt, ibuf, ocnt, obuf)
return 0;
}
+int
+aha_isapnp_probe(parent, match, aux)
+ struct device *parent;
+ void *match, *aux;
+{
+ return 1;
+}
+
+
/*
* Check if the device can be found at the port given
* and if so, set it up ready for further work
@@ -345,7 +359,7 @@ ahaprobe(parent, match, aux)
#endif
/* See if there is a unit at this location. */
- if (aha_find(ia, NULL) != 0)
+ if (aha_find(ia, NULL, 0) != 0)
return 0;
ia->ia_msize = 0;
@@ -364,8 +378,11 @@ ahaattach(parent, self, aux)
{
struct isa_attach_args *ia = aux;
struct aha_softc *sc = (void *)self;
+ int isapnp = !strcmp(parent->dv_cfdata->cf_driver->cd_name, "isapnp");
- if (aha_find(ia, sc) != 0)
+ if (isapnp)
+ ia->ia_iobase = ia->ipa_io[0].base;
+ if (aha_find(ia, sc, isapnp) != 0)
panic("ahaattach: aha_find of %s failed", self->dv_xname);
sc->sc_iobase = ia->ia_iobase;
@@ -869,9 +886,10 @@ aha_done(sc, ccb)
* Find the board and find its irq/drq
*/
int
-aha_find(ia, sc)
+aha_find(ia, sc, isapnp)
struct isa_attach_args *ia;
struct aha_softc *sc;
+ int isapnp;
{
int iobase = ia->ia_iobase;
int i;
@@ -930,6 +948,8 @@ aha_find(ia, sc)
config.reply.chan);
return 1;
}
+ if (isapnp)
+ irq = ia->ia_irq;
switch (config.reply.intr) {
case INT9:
@@ -955,6 +975,8 @@ aha_find(ia, sc)
config.reply.intr);
return EIO;
}
+ if (isapnp)
+ drq = ia->ia_drq;
if (sc != NULL) {
/* who are we on the scsi bus? */
@@ -964,6 +986,8 @@ aha_find(ia, sc)
sc->sc_irq = irq;
sc->sc_drq = drq;
} else {
+ if (isapnp)
+ return (0);
if (ia->ia_irq == IRQUNK)
ia->ia_irq = irq;
else if (ia->ia_irq != irq)
diff --git a/sys/dev/isa/files.isa b/sys/dev/isa/files.isa
index 5df61fa8fc3..62da4a6e5a1 100644
--- a/sys/dev/isa/files.isa
+++ b/sys/dev/isa/files.isa
@@ -1,4 +1,4 @@
-# $OpenBSD: files.isa,v 1.47 1998/11/28 01:29:05 deraadt Exp $
+# $OpenBSD: files.isa,v 1.48 1998/12/27 09:41:56 deraadt Exp $
# $NetBSD: files.isa,v 1.21 1996/05/16 03:45:55 mycroft Exp $
#
# Config.new file and device description for machine-independent ISA code.
@@ -80,8 +80,8 @@ file dev/isa/aic_isa.c aic_isa
# Adaptec AHA-154x family
device aha: scsi, isa_dma
-attach aha at isa
-file dev/isa/aha.c aha needs-count
+attach aha at isa with aha_isa
+file dev/isa/aha.c aha needs-flag
# Seagate ST0[12] ICs
device sea: scsi
diff --git a/sys/dev/isa/files.isapnp b/sys/dev/isa/files.isapnp
index 056584eb61b..44e77d3b81f 100644
--- a/sys/dev/isa/files.isapnp
+++ b/sys/dev/isa/files.isapnp
@@ -1,4 +1,4 @@
-# $OpenBSD: files.isapnp,v 1.10 1998/11/28 01:29:05 deraadt Exp $
+# $OpenBSD: files.isapnp,v 1.11 1998/12/27 09:41:56 deraadt Exp $
# $NetBSD: files.isapnp,v 1.7 1997/10/16 17:16:36 matt Exp $
#
# Config file and device description for machine-independent ISAPnP code.
@@ -21,6 +21,8 @@ file dev/isa/isapnpres.c isapnp
attach wdc at isapnp with wdc_isapnp
+attach aha at isapnp with aha_isapnp
+
attach sb at isapnp with sb_isapnp
file dev/isa/sb_isapnp.c sb & (sb_isa | sb_isapnp) needs-flag