summaryrefslogtreecommitdiff
path: root/sys/dev/tc/if_fta.c
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>1996-05-26 00:27:57 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>1996-05-26 00:27:57 +0000
commit729a9d7ceffba9e7e741540048479eed9907601e (patch)
tree716f1614729ffc0b602e2fdfece3bc84b3e930b1 /sys/dev/tc/if_fta.c
parent8102ec86d426fccfffa292d80d3e50914c22a932 (diff)
sync 0521
Diffstat (limited to 'sys/dev/tc/if_fta.c')
-rw-r--r--sys/dev/tc/if_fta.c119
1 files changed, 119 insertions, 0 deletions
diff --git a/sys/dev/tc/if_fta.c b/sys/dev/tc/if_fta.c
new file mode 100644
index 00000000000..74686143530
--- /dev/null
+++ b/sys/dev/tc/if_fta.c
@@ -0,0 +1,119 @@
+/* $NetBSD: if_fta.c,v 1.4 1996/05/20 15:53:09 thorpej Exp $ */
+
+/*-
+ * Copyright (c) 1996 Matt Thomas <matt@3am-software.com>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. The name of the author may not be used to endorse or promote products
+ * derived from this software withough specific prior written permission
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Id: if_fta.c,v 1.3 1996/05/17 01:15:18 thomas Exp
+ *
+ */
+
+/*
+ * DEC TurboChannel FDDI Controller; code for BSD derived operating systems
+ *
+ * Written by Matt Thomas
+ *
+ * This module supports the DEC DEFTA TurboChannel FDDI Controller
+ */
+
+
+#include <sys/param.h>
+#include <sys/kernel.h>
+#include <sys/mbuf.h>
+#include <sys/protosw.h>
+#include <sys/socket.h>
+#include <sys/ioctl.h>
+#include <sys/errno.h>
+#include <sys/malloc.h>
+#include <sys/device.h>
+
+#include <net/if.h>
+#include <net/if_types.h>
+
+#ifdef INET
+#include <netinet/in.h>
+#include <netinet/if_ether.h>
+#endif
+#include <net/if_fddi.h>
+
+#include <vm/vm.h>
+#include <vm/vm_kern.h>
+#include <vm/vm_param.h>
+
+#include <dev/tc/tcvar.h>
+#include <dev/ic/pdqvar.h>
+#include <dev/ic/pdqreg.h>
+
+static int
+pdq_tc_match(
+ struct device *parent,
+ void *match,
+ void *aux)
+{
+ struct tc_attach_args *ta = (struct tc_attach_args *) aux;
+
+ if (strncmp("PMAF-F", ta->ta_modname, 6) == 0)
+ return 1;
+
+ return 0;
+}
+
+static void
+pdq_tc_attach(
+ struct device * const parent,
+ struct device * const self,
+ void * const aux)
+{
+ pdq_softc_t * const sc = (pdq_softc_t *) self;
+ struct tc_attach_args * const ta = (struct tc_attach_args *) aux;
+
+ sc->sc_bc = ta->ta_bc;
+ bcopy(sc->sc_dev.dv_xname, sc->sc_if.if_xname, IFNAMSIZ);
+ sc->sc_if.if_flags = 0;
+ sc->sc_if.if_softc = sc;
+
+ if (bus_mem_map(sc->sc_bc, ta->ta_addr + PDQ_TC_CSR_OFFSET,
+ PDQ_TC_CSR_SPACE, 0, &sc->sc_membase)) {
+ printf("\n%s: can't map card memory!\n", sc->sc_dev.dv_xname);
+ return;
+ }
+
+ sc->sc_pdq = pdq_initialize(sc->sc_bc, sc->sc_membase,
+ sc->sc_if.if_xname, 0,
+ (void *) sc, PDQ_DEFTA);
+ if (sc->sc_pdq == NULL) {
+ printf("%s: initialization failed\n", sc->sc_dev.dv_xname);
+ return;
+ }
+ bcopy((caddr_t) sc->sc_pdq->pdq_hwaddr.lanaddr_bytes, sc->sc_ac.ac_enaddr, 6);
+ pdq_ifattach(sc, NULL);
+
+ tc_intr_establish(parent, ta->ta_cookie, TC_IPL_NET,
+ (int (*)(void *)) pdq_interrupt, sc->sc_pdq);
+
+ sc->sc_ats = shutdownhook_establish((void (*)(void *)) pdq_hwreset, sc->sc_pdq);
+ if (sc->sc_ats == NULL)
+ printf("%s: warning: couldn't establish shutdown hook\n", self->dv_xname);
+}
+
+struct cfattach fta_ca = { sizeof(pdq_softc_t), pdq_tc_match, pdq_tc_attach };
+struct cfdriver fta_cd = { 0, "fta", DV_IFNET };