From 8edd158910c6fe5856e042db9290f0a3760ce468 Mon Sep 17 00:00:00 2001 From: bjh21 Date: Sun, 25 Mar 2001 01:09:36 +0000 Subject: [PATCH] MI(ish) EtherB driver using the MI SEEQ 8005 driver. Very lightly tested. --- sys/arch/arm32/conf/files.arm32 | 6 +- sys/dev/podulebus/files.podulebus | 7 +- sys/dev/podulebus/if_eb.c | 136 ++++++++++++++++++++++++++++++ sys/dev/podulebus/if_ebreg.h | 44 ++++++++++ 4 files changed, 187 insertions(+), 6 deletions(-) create mode 100644 sys/dev/podulebus/if_eb.c create mode 100644 sys/dev/podulebus/if_ebreg.h diff --git a/sys/arch/arm32/conf/files.arm32 b/sys/arch/arm32/conf/files.arm32 index 343e0d000e41..eb2e45900c98 100644 --- a/sys/arch/arm32/conf/files.arm32 +++ b/sys/arch/arm32/conf/files.arm32 @@ -1,4 +1,4 @@ -# $NetBSD: files.arm32,v 1.104 2001/03/24 00:14:54 bjh21 Exp $ +# $NetBSD: files.arm32,v 1.105 2001/03/25 01:09:36 bjh21 Exp $ # # First try for arm-specific configuration info # @@ -227,10 +227,6 @@ include "dev/podulebus/files.podulebus" attach ne at podulebus with ne_pbus file arch/arm32/podulebus/if_ne_pbus.c ne_pbus -device eb: ether, ifnet, arp -attach eb at podulebus -file arch/arm32/podulebus/if_eb.c eb - device ie: ether, ifnet, arp attach ie at podulebus file arch/arm32/podulebus/if_ie.c ie diff --git a/sys/dev/podulebus/files.podulebus b/sys/dev/podulebus/files.podulebus index 6acf869b5cd7..e257379e227a 100644 --- a/sys/dev/podulebus/files.podulebus +++ b/sys/dev/podulebus/files.podulebus @@ -1,4 +1,4 @@ -# $NetBSD: files.podulebus,v 1.2 2001/03/24 00:14:52 bjh21 Exp $ +# $NetBSD: files.podulebus,v 1.3 2001/03/25 01:09:36 bjh21 Exp $ # Acorn Ether1 device ei: ether, ifnet, arp, i82586 @@ -9,3 +9,8 @@ file dev/podulebus/if_ei.c ei device ea: ether, ifnet, arp, seeq8005 attach ea at podulebus file dev/podulebus/if_ea.c ea + +# ANT EtherB +device eb: ether, ifnet, arp, seeq8005 +attach eb at podulebus +file dev/podulebus/if_eb.c eb diff --git a/sys/dev/podulebus/if_eb.c b/sys/dev/podulebus/if_eb.c new file mode 100644 index 000000000000..e8d5baf991c3 --- /dev/null +++ b/sys/dev/podulebus/if_eb.c @@ -0,0 +1,136 @@ +/* $NetBSD: if_eb.c,v 1.1 2001/03/25 01:09:36 bjh21 Exp $ */ + +/* + * Copyright (c) 2000, 2001 Ben Harris + * Copyright (c) 1995 Mark Brinicombe + * 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. 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 Mark Brinicombe. + * 4. The name of the company nor the name of the author may be used to + * endorse or promote products derived from this software without 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 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_eb.c - EtherB device driver + */ + +#include + +__RCSID("$NetBSD: if_eb.c,v 1.1 2001/03/25 01:09:36 bjh21 Exp $"); + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include + +/* + * per-line info and status + */ + +struct eb_softc { + struct seeq8005_softc sc_8005; + void *sc_ih; + struct evcnt sc_intrcnt; +}; + +/* + * prototypes + */ + +int ebprobe(struct device *, struct cfdata *, void *); +void ebattach(struct device *, struct device *, void *); + +/* driver structure for autoconf */ + +struct cfattach eb_ca = { + sizeof(struct eb_softc), ebprobe, ebattach +}; + +/* + * Probe routine. + */ + +/* + * Probe for the ether3 podule. + */ + +int +ebprobe(struct device *parent, struct cfdata *cf, void *aux) +{ + struct podulebus_attach_args *pa = aux; + + if (matchpodule(pa, MANUFACTURER_ANT, PODULE_ANT_ETHERB, -1) == 0) + return 0; + + return 1; +} + + +/* + * Attach podule. + */ + +void +ebattach(struct device *parent, struct device *self, void *aux) +{ + struct eb_softc *sc = (void *)self; + struct podulebus_attach_args *pa = aux; + u_int8_t myaddr[ETHER_ADDR_LEN]; + +/* dprintf(("Attaching %s...\n", sc->sc_dev.dv_xname));*/ + + /* Set the address of the controller for easy access */ + podulebus_shift_tag(pa->pa_mod_t, EB_8004_SHIFT, &sc->sc_8005.sc_iot); + bus_space_map(sc->sc_8005.sc_iot, pa->pa_mod_base + EB_8004_BASE, + /* XXX */ 0, 0, &sc->sc_8005.sc_ioh); + + /* + * Build the address from the machine id. + */ + netslot_ea(myaddr); + + printf(":"); + seeq8005_attach(&sc->sc_8005, myaddr, NULL, 0, 0); + + /* Claim a podule interrupt */ + + evcnt_attach_dynamic(&sc->sc_intrcnt, EVCNT_TYPE_INTR, NULL, + self->dv_xname, "intr"); + sc->sc_ih = podulebus_irq_establish(pa->pa_ih, IPL_NET, seeq8005intr, + sc, &sc->sc_intrcnt); +} + +/* End of if_eb.c */ diff --git a/sys/dev/podulebus/if_ebreg.h b/sys/dev/podulebus/if_ebreg.h new file mode 100644 index 000000000000..2973cb072858 --- /dev/null +++ b/sys/dev/podulebus/if_ebreg.h @@ -0,0 +1,44 @@ +/* $NetBSD: if_ebreg.h,v 1.1 2001/03/25 01:09:36 bjh21 Exp $ */ + +/* + * Copyright (c) 1995 Mark Brinicombe + * 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. 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 Mark Brinicombe. + * 4. The name of the company nor the name of the author may be used to + * endorse or promote products derived from this software without 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 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. + * + * RiscBSD kernel project + * + * if_ebreg.h + * + * EtherB device driver + * + * Created : 08/07/95 + */ + +#define EB_8004_BASE 0x800 +#define EB_8004_SHIFT 5