summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>1997-12-26 08:07:34 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>1997-12-26 08:07:34 +0000
commit88c1b1eb6181af5c7fa239ce828c50f4b6d40acc (patch)
tree2f97b9ae0e69133e5eddc148c16bacb33e5bf1fd /sys
parentb16d3a783d52284949766e35485749cd6ee468cc (diff)
busify; support isapnp lance cards
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/isa/files.isa3
-rw-r--r--sys/dev/isa/files.isapnp5
-rw-r--r--sys/dev/isa/if_le.c118
-rw-r--r--sys/dev/isa/if_le_isa.c144
-rw-r--r--sys/dev/isa/if_le_isapnp.c146
-rw-r--r--sys/dev/isa/if_levar.h10
6 files changed, 350 insertions, 76 deletions
diff --git a/sys/dev/isa/files.isa b/sys/dev/isa/files.isa
index e809563c446..3e719524425 100644
--- a/sys/dev/isa/files.isa
+++ b/sys/dev/isa/files.isa
@@ -1,4 +1,4 @@
-# $OpenBSD: files.isa,v 1.37 1997/12/25 14:14:54 downsj Exp $
+# $OpenBSD: files.isa,v 1.38 1997/12/26 08:07:31 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.
@@ -205,6 +205,7 @@ file dev/isa/if_ex.c ex needs-flag
# (BICC Isolan, NE2100, DEPCA)
# device declaration in sys/conf/files
attach le at isa with le_isa
+file dev/isa/if_le.c le
file dev/isa/if_le_isa.c le_isa
#
diff --git a/sys/dev/isa/files.isapnp b/sys/dev/isa/files.isapnp
index a9f49f2455c..7f8a4281ace 100644
--- a/sys/dev/isa/files.isapnp
+++ b/sys/dev/isa/files.isapnp
@@ -1,4 +1,4 @@
-# $OpenBSD: files.isapnp,v 1.3 1997/12/25 14:14:55 downsj Exp $
+# $OpenBSD: files.isapnp,v 1.4 1997/12/26 08:07:31 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,3 +21,6 @@ file dev/isa/isapnpres.c isapnp
attach sb at isapnp with sb_isapnp
file dev/isa/sb_isapnp.c sb & (sb_isa | sb_isapnp) needs-flag
+
+attach le at isapnp with le_isapnp
+file dev/isa/if_le_isapnp.c le_isapnp
diff --git a/sys/dev/isa/if_le.c b/sys/dev/isa/if_le.c
new file mode 100644
index 00000000000..91141972583
--- /dev/null
+++ b/sys/dev/isa/if_le.c
@@ -0,0 +1,118 @@
+/* $OpenBSD: if_le.c,v 1.12 1997/12/26 08:07:32 deraadt Exp $ */
+/* $NetBSD: if_le_isa.c,v 1.2 1996/05/12 23:52:56 mycroft Exp $ */
+
+/*-
+ * Copyright (c) 1995 Charles M. Hannum. All rights reserved.
+ * Copyright (c) 1992, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Ralph Campbell and Rick Macklem.
+ *
+ * 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. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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.
+ *
+ * @(#)if_le.c 8.2 (Berkeley) 11/16/93
+ */
+
+#include "bpfilter.h"
+#include "isadma.h"
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/mbuf.h>
+#include <sys/syslog.h>
+#include <sys/socket.h>
+#include <sys/device.h>
+
+#include <net/if.h>
+
+#ifdef INET
+#include <netinet/in.h>
+#include <netinet/if_ether.h>
+#endif
+
+#include <vm/vm.h>
+
+#include <machine/cpu.h>
+#include <machine/intr.h>
+#include <machine/pio.h>
+
+#include <dev/isa/isareg.h>
+#include <dev/isa/isavar.h>
+#include <dev/isa/isadmavar.h>
+#include <i386/isa/isa_machdep.h>
+
+#include <dev/ic/am7990reg.h>
+#include <dev/ic/am7990var.h>
+
+#include <dev/isa/if_levar.h>
+
+hide void
+le_isa_wrcsr(sc, port, val)
+ struct am7990_softc *sc;
+ u_int16_t port, val;
+{
+ struct le_softc *lesc = (struct le_softc *)sc;
+ bus_space_tag_t iot = lesc->sc_iot;
+ bus_space_handle_t ioh = lesc->sc_ioh;
+
+ bus_space_write_2(iot, ioh, lesc->sc_rap, port);
+ bus_space_write_2(iot, ioh, lesc->sc_rdp, val);
+}
+
+hide u_int16_t
+le_isa_rdcsr(sc, port)
+ struct am7990_softc *sc;
+ u_int16_t port;
+{
+ struct le_softc *lesc = (struct le_softc *)sc;
+ bus_space_tag_t iot = lesc->sc_iot;
+ bus_space_handle_t ioh = lesc->sc_ioh;
+ u_int16_t val;
+
+ bus_space_write_2(iot, ioh, lesc->sc_rap, port);
+ val = bus_space_read_2(iot, ioh, lesc->sc_rdp);
+ return (val);
+}
+
+
+/*
+ * Controller interrupt.
+ */
+int
+le_isa_intredge(arg)
+ void *arg;
+{
+
+ if (am7990_intr(arg) == 0)
+ return (0);
+ for (;;)
+ if (am7990_intr(arg) == 0)
+ return (1);
+}
diff --git a/sys/dev/isa/if_le_isa.c b/sys/dev/isa/if_le_isa.c
index 83661685210..ac87abdf5bf 100644
--- a/sys/dev/isa/if_le_isa.c
+++ b/sys/dev/isa/if_le_isa.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_le_isa.c,v 1.8 1997/08/08 08:23:32 downsj Exp $ */
+/* $OpenBSD: if_le_isa.c,v 1.9 1997/12/26 08:07:32 deraadt Exp $ */
/* $NetBSD: if_le_isa.c,v 1.2 1996/05/12 23:52:56 mycroft Exp $ */
/*-
@@ -88,33 +88,6 @@ int ne2100_isa_probe __P((struct le_softc *, struct isa_attach_args *));
int bicc_isa_probe __P((struct le_softc *, struct isa_attach_args *));
int lance_isa_probe __P((struct am7990_softc *));
-int le_isa_intredge __P((void *));
-
-hide void le_isa_wrcsr __P((struct am7990_softc *, u_int16_t, u_int16_t));
-hide u_int16_t le_isa_rdcsr __P((struct am7990_softc *, u_int16_t));
-
-hide void
-le_isa_wrcsr(sc, port, val)
- struct am7990_softc *sc;
- u_int16_t port, val;
-{
-
- outw(((struct le_softc *)sc)->sc_rap, port);
- outw(((struct le_softc *)sc)->sc_rdp, val);
-}
-
-hide u_int16_t
-le_isa_rdcsr(sc, port)
- struct am7990_softc *sc;
- u_int16_t port;
-{
- u_int16_t val;
-
- outw(((struct le_softc *)sc)->sc_rap, port);
- val = inw(((struct le_softc *)sc)->sc_rdp);
- return (val);
-}
-
int
le_isa_probe(parent, match, aux)
struct device *parent;
@@ -146,21 +119,30 @@ depca_isa_probe(lesc, ia)
struct isa_attach_args *ia;
{
struct am7990_softc *sc = &lesc->sc_am7990;
- int iobase = ia->ia_iobase, port;
+ bus_space_tag_t iot = lesc->sc_iot;
+ bus_space_handle_t ioh = lesc->sc_ioh;
+ int port;
+
#if 0
u_long sum, rom_sum;
u_char x;
#endif
int i;
- lesc->sc_rap = iobase + DEPCA_RAP;
- lesc->sc_rdp = iobase + DEPCA_RDP;
+ if (bus_space_map(iot, ia->ia_iobase, ia->ia_iosize, 0, &ioh))
+ return (0);
+ lesc->sc_iot = iot;
+ lesc->sc_ioh = ioh;
+ lesc->sc_rap = DEPCA_RAP;
+ lesc->sc_rdp = DEPCA_RDP;
lesc->sc_card = DEPCA;
- if (lance_isa_probe(sc) == 0)
+ if (lance_isa_probe(sc) == 0) {
+ bus_space_unmap(iot, ioh, ia->ia_iosize);
return 0;
+ }
- outb(iobase + DEPCA_CSR, DEPCA_CSR_DUM);
+ bus_space_write_1(iot, ioh, DEPCA_CSR, DEPCA_CSR_DUM);
/*
* Extract the physical MAC address from the ROM.
@@ -175,26 +157,34 @@ depca_isa_probe(lesc, ia)
* It appears that the PROM can be at one of two locations, so
* we just try both.
*/
- port = iobase + DEPCA_ADP;
+ port = DEPCA_ADP;
for (i = 0; i < 32; i++)
- if (inb(port) == 0xff && inb(port) == 0x00 &&
- inb(port) == 0x55 && inb(port) == 0xaa &&
- inb(port) == 0xff && inb(port) == 0x00 &&
- inb(port) == 0x55 && inb(port) == 0xaa)
+ if (bus_space_read_1(iot, ioh, port) == 0xff &&
+ bus_space_read_1(iot, ioh, port) == 0x00 &&
+ bus_space_read_1(iot, ioh, port) == 0x55 &&
+ bus_space_read_1(iot, ioh, port) == 0xaa &&
+ bus_space_read_1(iot, ioh, port) == 0xff &&
+ bus_space_read_1(iot, ioh, port) == 0x00 &&
+ bus_space_read_1(iot, ioh, port) == 0x55 &&
+ bus_space_read_1(iot, ioh, port) == 0xaa)
goto found;
- port = iobase + DEPCA_ADP + 1;
+ port = DEPCA_ADP + 1;
for (i = 0; i < 32; i++)
- if (inb(port) == 0xff && inb(port) == 0x00 &&
- inb(port) == 0x55 && inb(port) == 0xaa &&
- inb(port) == 0xff && inb(port) == 0x00 &&
- inb(port) == 0x55 && inb(port) == 0xaa)
+ if (bus_space_read_1(iot, ioh, port) == 0xff &&
+ bus_space_read_1(iot, ioh, port) == 0x00 &&
+ bus_space_read_1(iot, ioh, port) == 0x55 &&
+ bus_space_read_1(iot, ioh, port) == 0xaa &&
+ bus_space_read_1(iot, ioh, port) == 0xff &&
+ bus_space_read_1(iot, ioh, port) == 0x00 &&
+ bus_space_read_1(iot, ioh, port) == 0x55 &&
+ bus_space_read_1(iot, ioh, port) == 0xaa)
goto found;
printf("%s: address not found\n", sc->sc_dev.dv_xname);
return 0;
found:
for (i = 0; i < sizeof(sc->sc_arpcom.ac_enaddr); i++)
- sc->sc_arpcom.ac_enaddr[i] = inb(port);
+ sc->sc_arpcom.ac_enaddr[i] = bus_space_read_1(iot, ioh, port);
#if 0
sum =
@@ -207,20 +197,22 @@ found:
sum = (sum & 0xffff) + (sum >> 16);
sum = (sum & 0xffff) + (sum >> 16);
- rom_sum = inb(port);
- rom_sum |= inb(port) << 8;
+ rom_sum = bus_space_read_1(iot, ioh, port);
+ rom_sum |= bus_space_read_1(iot, ioh, port << 8);
if (sum != rom_sum) {
printf("%s: checksum mismatch; calculated %04x != read %04x",
sc->sc_dev.dv_xname, sum, rom_sum);
+ bus_space_unmap(iot, ioh, ia->ia_iosize);
return 0;
}
#endif
- outb(iobase + DEPCA_CSR, DEPCA_CSR_NORMAL);
+ bus_space_write_1(iot, ioh, DEPCA_CSR, DEPCA_CSR_NORMAL);
ia->ia_iosize = 16;
ia->ia_drq = DRQUNK;
+ bus_space_unmap(iot, ioh, ia->ia_iosize);
return 1;
}
@@ -230,23 +222,31 @@ ne2100_isa_probe(lesc, ia)
struct isa_attach_args *ia;
{
struct am7990_softc *sc = &lesc->sc_am7990;
- int iobase = ia->ia_iobase;
+ bus_space_tag_t iot = lesc->sc_iot;
+ bus_space_handle_t ioh = lesc->sc_ioh;
int i;
- lesc->sc_rap = iobase + NE2100_RAP;
- lesc->sc_rdp = iobase + NE2100_RDP;
+ if (bus_space_map(iot, ia->ia_iobase, ia->ia_iosize, 0, &ioh))
+ return (0);
+ lesc->sc_iot = iot;
+ lesc->sc_ioh = ioh;
+ lesc->sc_rap = NE2100_RAP;
+ lesc->sc_rdp = NE2100_RDP;
lesc->sc_card = NE2100;
- if (lance_isa_probe(sc) == 0)
+ if (lance_isa_probe(sc) == 0) {
+ bus_space_unmap(iot, ioh, ia->ia_iosize);
return 0;
+ }
/*
* Extract the physical MAC address from the ROM.
*/
for (i = 0; i < sizeof(sc->sc_arpcom.ac_enaddr); i++)
- sc->sc_arpcom.ac_enaddr[i] = inb(iobase + i);
+ sc->sc_arpcom.ac_enaddr[i] = bus_space_read_1(iot, ioh, i);
ia->ia_iosize = 24;
+ bus_space_unmap(iot, ioh, ia->ia_iosize);
return 1;
}
@@ -256,23 +256,31 @@ bicc_isa_probe(lesc, ia)
struct isa_attach_args *ia;
{
struct am7990_softc *sc = &lesc->sc_am7990;
- int iobase = ia->ia_iobase;
+ bus_space_handle_t ioh;
+ bus_space_tag_t iot = ia->ia_iot;
int i;
- lesc->sc_rap = iobase + BICC_RAP;
- lesc->sc_rdp = iobase + BICC_RDP;
+ if (bus_space_map(iot, ia->ia_iobase, ia->ia_iosize, 0, &ioh))
+ return (0);
+ lesc->sc_iot = iot;
+ lesc->sc_ioh = ioh;
+ lesc->sc_rap = BICC_RAP;
+ lesc->sc_rdp = BICC_RDP;
lesc->sc_card = BICC;
- if (lance_isa_probe(sc) == 0)
+ if (lance_isa_probe(sc) == 0) {
+ bus_space_unmap(iot, ioh, ia->ia_iosize);
return 0;
+ }
/*
* Extract the physical MAC address from the ROM.
*/
for (i = 0; i < sizeof(sc->sc_arpcom.ac_enaddr); i++)
- sc->sc_arpcom.ac_enaddr[i] = inb(iobase + i * 2);
+ sc->sc_arpcom.ac_enaddr[i] = bus_space_read_1(iot, ioh, i * 2);
ia->ia_iosize = 16;
+ bus_space_unmap(iot, ioh, ia->ia_iosize);
return 1;
}
@@ -303,6 +311,13 @@ le_isa_attach(parent, self, aux)
struct le_softc *lesc = (void *)self;
struct am7990_softc *sc = &lesc->sc_am7990;
struct isa_attach_args *ia = aux;
+ bus_space_tag_t iot = ia->ia_iot;
+ bus_space_handle_t ioh;
+
+ if (bus_space_map(iot, ia->ia_iobase, ia->ia_iosize, 0, &ioh))
+ panic("%s: could not map I/O-ports", sc->sc_dev.dv_xname);
+ lesc->sc_iot = iot;
+ lesc->sc_ioh = ioh;
printf(": %s Ethernet\n", card_type[lesc->sc_card]);
@@ -365,18 +380,3 @@ le_isa_attach(parent, self, aux)
lesc->sc_ih = isa_intr_establish(ia->ia_ic, ia->ia_irq, IST_EDGE,
IPL_NET, le_isa_intredge, sc, sc->sc_dev.dv_xname);
}
-
-/*
- * Controller interrupt.
- */
-int
-le_isa_intredge(arg)
- void *arg;
-{
-
- if (am7990_intr(arg) == 0)
- return (0);
- for (;;)
- if (am7990_intr(arg) == 0)
- return (1);
-}
diff --git a/sys/dev/isa/if_le_isapnp.c b/sys/dev/isa/if_le_isapnp.c
new file mode 100644
index 00000000000..09e40d2bfce
--- /dev/null
+++ b/sys/dev/isa/if_le_isapnp.c
@@ -0,0 +1,146 @@
+/* $OpenBSD: if_le_isapnp.c,v 1.1 1997/12/26 08:07:33 deraadt Exp $ */
+/* $NetBSD: if_le_isa.c,v 1.2 1996/05/12 23:52:56 mycroft Exp $ */
+
+/*-
+ * Copyright (c) 1995 Charles M. Hannum. All rights reserved.
+ * Copyright (c) 1992, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Ralph Campbell and Rick Macklem.
+ *
+ * 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. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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.
+ *
+ * @(#)if_le.c 8.2 (Berkeley) 11/16/93
+ */
+
+#include "bpfilter.h"
+#include "isadma.h"
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/mbuf.h>
+#include <sys/syslog.h>
+#include <sys/socket.h>
+#include <sys/device.h>
+
+#include <net/if.h>
+
+#ifdef INET
+#include <netinet/in.h>
+#include <netinet/if_ether.h>
+#endif
+
+#include <vm/vm.h>
+
+#include <machine/cpu.h>
+#include <machine/intr.h>
+#include <machine/pio.h>
+
+#include <dev/isa/isareg.h>
+#include <dev/isa/isavar.h>
+#include <dev/isa/isadmavar.h>
+#include <i386/isa/isa_machdep.h>
+
+#include <dev/ic/am7990reg.h>
+#include <dev/ic/am7990var.h>
+
+#include <dev/isa/if_levar.h>
+
+int le_isapnp_match __P((struct device *, void *, void *));
+void le_isapnp_attach __P((struct device *, struct device *, void *));
+
+struct cfattach le_isapnp_ca = {
+ sizeof(struct le_softc), le_isapnp_match, le_isapnp_attach
+};
+
+int
+le_isapnp_match(parent, match, aux)
+ struct device *parent;
+ void *match, *aux;
+{
+ return 1;
+}
+
+void
+le_isapnp_attach(parent, self, aux)
+ struct device *parent, *self;
+ void *aux;
+{
+ struct le_softc *lesc = (void *)self;
+ struct isa_attach_args *ia = aux;
+ struct am7990_softc *sc = &lesc->sc_am7990;
+ bus_space_tag_t iot = lesc->sc_iot;
+ bus_space_handle_t ioh = lesc->sc_ioh;
+ int i;
+
+ lesc->sc_iot = iot = ia->ia_iot;
+ lesc->sc_ioh = ioh = ia->ipa_io[0].h;
+ lesc->sc_rap = NE2100_RAP;
+ lesc->sc_rdp = NE2100_RDP;
+ lesc->sc_card = NE2100;
+
+ /*
+ * Extract the physical MAC address from the ROM.
+ */
+ for (i = 0; i < sizeof(sc->sc_arpcom.ac_enaddr); i++)
+ sc->sc_arpcom.ac_enaddr[i] = bus_space_read_1(iot, ioh, i);
+
+ sc->sc_mem = malloc(16384, M_DEVBUF, M_NOWAIT);
+ if (sc->sc_mem == 0) {
+ printf("%s: couldn't allocate memory for card\n",
+ sc->sc_dev.dv_xname);
+ return;
+ }
+
+ sc->sc_conf3 = 0;
+ sc->sc_addr = kvtop(sc->sc_mem);
+ sc->sc_memsize = 16384;
+
+ sc->sc_copytodesc = am7990_copytobuf_contig;
+ sc->sc_copyfromdesc = am7990_copyfrombuf_contig;
+ sc->sc_copytobuf = am7990_copytobuf_contig;
+ sc->sc_copyfrombuf = am7990_copyfrombuf_contig;
+ sc->sc_zerobuf = am7990_zerobuf_contig;
+
+ sc->sc_rdcsr = le_isa_rdcsr;
+ sc->sc_wrcsr = le_isa_wrcsr;
+ sc->sc_hwreset = NULL;
+ sc->sc_hwinit = NULL;
+
+ am7990_config(sc);
+
+#if NISADMA > 0
+ if (ia->ia_drq != DRQUNK)
+ isa_dmacascade(ia->ia_drq);
+#endif
+
+ lesc->sc_ih = isa_intr_establish(ia->ia_ic, ia->ia_irq, IST_EDGE,
+ IPL_NET, le_isa_intredge, sc, sc->sc_dev.dv_xname);
+}
diff --git a/sys/dev/isa/if_levar.h b/sys/dev/isa/if_levar.h
index ac135898e89..d0a0bd86846 100644
--- a/sys/dev/isa/if_levar.h
+++ b/sys/dev/isa/if_levar.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_levar.h,v 1.5 1997/11/07 08:07:01 niklas Exp $ */
+/* $OpenBSD: if_levar.h,v 1.6 1997/12/26 08:07:33 deraadt Exp $ */
/* $NetBSD: if_levar.h,v 1.5 1996/05/07 01:50:07 thorpej Exp $ */
/*
@@ -48,7 +48,13 @@ struct le_softc {
struct am7990_softc sc_am7990; /* glue to MI code */
void *sc_ih;
- bus_space_handle_t sc_ioh;
int sc_card;
int sc_rap, sc_rdp; /* offsets to LANCE registers */
+
+ bus_space_tag_t sc_iot;
+ bus_space_handle_t sc_ioh;
};
+
+hide void le_isa_wrcsr __P((struct am7990_softc *, u_int16_t, u_int16_t));
+hide u_int16_t le_isa_rdcsr __P((struct am7990_softc *, u_int16_t));
+int le_isa_intredge __P((void *));