summaryrefslogtreecommitdiff
path: root/sys/dev/isa/isa.c
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>1996-07-02 22:21:16 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>1996-07-02 22:21:16 +0000
commitd996ca03c0c5feef7934613b11451a4632693027 (patch)
tree9995afe413d8fab8e2e68714669ba9f7db0b79aa /sys/dev/isa/isa.c
parenta2aebbd450dbf492be9ae399a78ae0a6ddcc4a3f (diff)
support FSTATE_STAR by repetition
Diffstat (limited to 'sys/dev/isa/isa.c')
-rw-r--r--sys/dev/isa/isa.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/sys/dev/isa/isa.c b/sys/dev/isa/isa.c
index f50e0e9a90b..73e4607cb77 100644
--- a/sys/dev/isa/isa.c
+++ b/sys/dev/isa/isa.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: isa.c,v 1.10 1996/05/26 00:27:23 deraadt Exp $ */
+/* $OpenBSD: isa.c,v 1.11 1996/07/02 22:21:15 deraadt Exp $ */
/* $NetBSD: isa.c,v 1.85 1996/05/14 00:31:04 thorpej Exp $ */
/*-
@@ -127,9 +127,6 @@ isascan(parent, match)
struct cfdata *cf = dev->dv_cfdata;
struct isa_attach_args ia;
- if (cf->cf_fstate == FSTATE_STAR)
- panic("clone devices not supported on ISA bus");
-
ia.ia_bc = sc->sc_bc;
ia.ia_ic = sc->sc_ic;
ia.ia_iobase = cf->cf_loc[0];
@@ -140,6 +137,18 @@ isascan(parent, match)
ia.ia_drq = cf->cf_loc[5];
ia.ia_delayioh = sc->sc_delayioh;
+ if (cf->cf_fstate == FSTATE_STAR) {
+ struct isa_attach_args ia2 = ia;
+
+ while ((*cf->cf_attach->ca_match)(parent, dev, &ia2) > 0) {
+ config_attach(parent, dev, &ia2, isaprint);
+ dev = config_make_softc(parent, cf);
+ ia2 = ia;
+ }
+ free(dev, M_DEVBUF);
+ return;
+ }
+
if ((*cf->cf_attach->ca_match)(parent, dev, &ia) > 0)
config_attach(parent, dev, &ia, isaprint);
else