diff --git a/sys/arch/amiga/conf/GENERIC b/sys/arch/amiga/conf/GENERIC index 962b868cdbfd..914a7bda2824 100644 --- a/sys/arch/amiga/conf/GENERIC +++ b/sys/arch/amiga/conf/GENERIC @@ -1,4 +1,4 @@ -# $NetBSD: GENERIC,v 1.108 1998/10/28 22:41:25 is Exp $ +# $NetBSD: GENERIC,v 1.109 1998/11/11 22:26:27 veego Exp $ # # GENERIC AMIGA @@ -245,7 +245,8 @@ audio* at melody? # Ethernet cards: le* at zbus0 # A2065, Ameristar, Ariadne -ed0 at zbus0 # Hydra +ne* at zbus0 # AriadneII +ed0 at zbus0 # Hydra, ASDG LanRover es0 at zbus0 # CEI A4066 EthernetPLUS qn0 at zbus0 # Quicknet diff --git a/sys/arch/amiga/conf/files.amiga b/sys/arch/amiga/conf/files.amiga index 4b8c2201a93e..feb3ed38e5ec 100644 --- a/sys/arch/amiga/conf/files.amiga +++ b/sys/arch/amiga/conf/files.amiga @@ -1,4 +1,4 @@ -# $NetBSD: files.amiga,v 1.77 1998/10/08 21:46:39 is Exp $ +# $NetBSD: files.amiga,v 1.78 1998/11/11 22:26:27 veego Exp $ # maxpartitions must be first item in files.${ARCH}.newconf maxpartitions 16 # NOTE THAT AMIGA IS SPECIAL! @@ -147,6 +147,11 @@ file arch/amiga/dev/ite_cv3d.c grfcv3d & ite attach le at zbus with le_zbus: le24 file arch/amiga/dev/if_le.c le_zbus needs-flag +# AriadneII ethernet card +# device defined in sys/conf/files +attach ne at zbus with ne_zbus: rtl80x9 +file arch/amiga/dev/if_ne_zbus.c ne_zbus needs-flag + # Hydra ethernet card device ed: ifnet, ether, arp attach ed at zbus with ed_zbus diff --git a/sys/arch/amiga/dev/if_ne_zbus.c b/sys/arch/amiga/dev/if_ne_zbus.c new file mode 100644 index 000000000000..6a8a0ac9a0bf --- /dev/null +++ b/sys/arch/amiga/dev/if_ne_zbus.c @@ -0,0 +1,173 @@ +/* $NetBSD: if_ne_zbus.c,v 1.1 1998/11/11 22:26:27 veego Exp $ */ + +/*- + * Copyright (c) 1998 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Bernd Ernesti. + * + * 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 NetBSD + * Foundation, Inc. and its contributors. + * 4. Neither the name of The NetBSD Foundation 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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. + */ + +/* + * Thanks to Village Tronic for giving me a card. + * Bernd Ernesti + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include + +int ne_zbus_match __P((struct device *, struct cfdata *, void *)); +void ne_zbus_attach __P((struct device *, struct device *, void *)); + +struct ne_zbus_softc { + struct ne2000_softc sc_ne2000; + struct bus_space_tag sc_bst; + struct isr sc_isr; +}; + +struct cfattach ne_zbus_ca = { + sizeof(struct ne_zbus_softc), ne_zbus_match, ne_zbus_attach +}; + +/* The amiga address are shifted by one bit to the ISA-Bus. */ +#define NE_ARIADNE_II_NPORTS 0x40 +#define NE_ARIADNE_II_NICBASE 0x0300 /* 0x0600 */ +#define NE_ARIADNE_II_NICSIZE 0x20 +#define NE_ARIADNE_II_ASICBASE 0x0310 /* 0x0620 */ +#define NE_ARIADNE_II_ASICSIZE 0x20 + + +int +ne_zbus_match(parent, cf, aux) + struct device *parent; + struct cfdata *cf; + void *aux; +{ + struct zbus_args *zap = aux; + + /* Ariadne II ethernet card */ + if (zap->manid == 2167 && zap->prodid == 202) + return (1); + + return (0); +} + +/* + * Install interface into kernel networking data structures + */ +void +ne_zbus_attach(parent, self, aux) + struct device *parent, *self; + void *aux; +{ + struct ne_zbus_softc *zsc = (struct ne_zbus_softc *)self; + struct ne2000_softc *nsc = &zsc->sc_ne2000; + struct dp8390_softc *dsc = &nsc->sc_dp8390; + struct zbus_args *zap = aux; + bus_space_tag_t nict = &zsc->sc_bst; + bus_space_handle_t nich; + bus_space_tag_t asict = nict; + bus_space_handle_t asich; + int *media, nmedia, defmedia; + + media = NULL; + nmedia = defmedia = 0; + + dsc->sc_mediachange = rtl80x9_mediachange; + dsc->sc_mediastatus = rtl80x9_mediastatus; + dsc->init_card = rtl80x9_init_card; + + zsc->sc_bst.base = (u_long)zap->va + 0; + zsc->sc_bst.stride = 1; + zsc->sc_bst.absm = &amiga_interleaved_wordaccess_methods; + + printf("\n"); + + /* Map i/o space. */ + if (bus_space_map(nict, NE_ARIADNE_II_NICBASE, NE_ARIADNE_II_NPORTS, 0, &nich)) { + printf("%s: can't map nic i/o space\n", dsc->sc_dev.dv_xname); + return; + } + + if (bus_space_subregion(nict, nich, NE2000_ASIC_OFFSET, NE_ARIADNE_II_ASICSIZE, + &asich)) { + printf("%s: can't map asic i/o space\n", dsc->sc_dev.dv_xname); + return; + } + + dsc->sc_regt = nict; + dsc->sc_regh = nich; + + nsc->sc_asict = asict; + nsc->sc_asich = asich; + + /* Initialize media. */ + rtl80x9_init_media(dsc, &media, &nmedia, &defmedia); + + /* This interface is always enabled. */ + dsc->sc_enabled = 1; + + /* + * Do generic NE2000 attach. This will read the station address + * from the EEPROM. + */ + ne2000_attach(nsc, NULL, media, nmedia, defmedia); + + zsc->sc_isr.isr_intr = dp8390_intr; + zsc->sc_isr.isr_arg = dsc; + zsc->sc_isr.isr_ipl = 2; + add_isr(&zsc->sc_isr); +}