diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2002-05-02 22:56:08 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2002-05-02 22:56:08 +0000 |
commit | f69ff2bae348f49f6e5fccbf1594b839e98792ef (patch) | |
tree | 984c07207f03eebcb847988db98df196a848c27e /sys/dev/tc/ioasic_subr.c | |
parent | d7aff648af7518e317842f78e06a3d197eca9629 (diff) |
Big TURBOchannel support catchup from NetBSD, part 1.
A few local changes and tweaks remain.
This bring DEC 3000 machines back in the game, but framebuffers are still
not supported at the moment.
Thanks to ericj@ and nate@ for supplying me a DEC 3000 for testing.
Diffstat (limited to 'sys/dev/tc/ioasic_subr.c')
-rw-r--r-- | sys/dev/tc/ioasic_subr.c | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/sys/dev/tc/ioasic_subr.c b/sys/dev/tc/ioasic_subr.c new file mode 100644 index 00000000000..bb3a4364da8 --- /dev/null +++ b/sys/dev/tc/ioasic_subr.c @@ -0,0 +1,86 @@ +/* $OpenBSD: ioasic_subr.c,v 1.1 2002/05/02 22:56:06 miod Exp $ */ +/* $NetBSD: ioasic_subr.c,v 1.3 2001/11/13 06:26:10 lukem Exp $ */ + +/* + * Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University. + * All rights reserved. + * + * Author: Keith Bostic, Chris G. Demetriou + * + * Permission to use, copy, modify and distribute this software and + * its documentation is hereby granted, provided that both the copyright + * notice and this permission notice appear in all copies of the + * software, derivative works or modified versions, and any portions + * thereof, and that both notices appear in supporting documentation. + * + * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" + * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND + * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. + * + * Carnegie Mellon requests users of this software to return to + * + * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU + * School of Computer Science + * Carnegie Mellon University + * Pittsburgh PA 15213-3890 + * + * any improvements or extensions that they make and grant Carnegie the + * rights to redistribute these changes. + */ + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/device.h> +#include <dev/tc/tcvar.h> +#include <dev/tc/ioasicvar.h> + +int ioasicprint(void *, const char *); + +int +ioasicprint(aux, pnp) + void *aux; + const char *pnp; +{ + struct ioasicdev_attach_args *d = aux; + + if (pnp) + printf("%s at %s", d->iada_modname, pnp); + printf(" offset 0x%lx", (long)d->iada_offset); + return (UNCONF); +} + +int +ioasic_submatch(vcf, d) + void *vcf; + struct ioasicdev_attach_args *d; +{ + struct cfdata *match = vcf; + + return ((match->ioasiccf_offset == d->iada_offset) || + (match->ioasiccf_offset == IOASIC_OFFSET_UNKNOWN)); +} + +void +ioasic_attach_devs(sc, ioasic_devs, ioasic_ndevs) + struct ioasic_softc *sc; + struct ioasic_dev *ioasic_devs; + int ioasic_ndevs; +{ + struct ioasicdev_attach_args idev; + int i; + + /* + * Try to configure each device. + */ + for (i = 0; i < ioasic_ndevs; i++) { + strncpy(idev.iada_modname, ioasic_devs[i].iad_modname, + TC_ROM_LLEN); + idev.iada_modname[TC_ROM_LLEN] = '\0'; + idev.iada_offset = ioasic_devs[i].iad_offset; + idev.iada_addr = sc->sc_base + ioasic_devs[i].iad_offset; + idev.iada_cookie = ioasic_devs[i].iad_cookie; + + /* Tell the autoconfig machinery we've found the hardware. */ + config_found(&sc->sc_dv, &idev, ioasicprint); + } +} |