diff options
author | imp <imp@FreeBSD.org> | 2003-12-07 04:05:19 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2003-12-07 04:05:19 +0000 |
commit | 73d768d3da48a02ffd40960bbf83d9532017015c (patch) | |
tree | 460b9e26f1132383be5a67c1cfac2124e467f809 /sys/dev/lmc/if_lmc_fbsd3.c | |
parent | 60bb13ef063f683a5919860ffca37fc97b382167 (diff) | |
download | FreeBSD-src-73d768d3da48a02ffd40960bbf83d9532017015c.zip FreeBSD-src-73d768d3da48a02ffd40960bbf83d9532017015c.tar.gz |
Continue to remove drivers that don't compile and haven't compiled in
a long time: lmc The LAN Media Corp PCI WAN driver based on tulip.
This driver hasn't compiled for 3 years since the PCI compat shims
were removed, and Lan Media appears to have gone out of business.
These cards appear to be rare (a recent search of ebay had no hits).
Should someone wish to revive this driver, submitting patches to make
it compile plus a testing report will bring it back.
Diffstat (limited to 'sys/dev/lmc/if_lmc_fbsd3.c')
-rw-r--r-- | sys/dev/lmc/if_lmc_fbsd3.c | 286 |
1 files changed, 0 insertions, 286 deletions
diff --git a/sys/dev/lmc/if_lmc_fbsd3.c b/sys/dev/lmc/if_lmc_fbsd3.c deleted file mode 100644 index 18c2f6a..0000000 --- a/sys/dev/lmc/if_lmc_fbsd3.c +++ /dev/null @@ -1,286 +0,0 @@ -/*- - * Copyright (c) 1994-1997 Matt Thomas (matt@3am-software.com) - * Copyright (c) LAN Media Corporation 1998, 1999. - * Copyright (c) 2000 Stephen Kiernan (sk-ports@vegamuse.org) - * 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 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 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_lmc_fbsd.c,v 1.3 1999/01/12 13:27:42 explorer Exp $ - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -/* - * This file is INCLUDED (gross, I know, but...) - */ - -#define PCI_CONF_WRITE(r, v) pci_conf_write(config_id, (r), (v)) -#define PCI_CONF_READ(r) pci_conf_read(config_id, (r)) -#define PCI_GETBUSDEVINFO(sc) (sc)->lmc_pci_busno = (config_id->bus), \ - (sc)->lmc_pci_devno = (config_id->slot) - -#ifndef COMPAT_OLDPCI -#error "The lmc device requires the old pci compatibility shims" -#endif - -#if 0 -static void lmc_shutdown(int howto, void * arg); -#endif - -#if defined(LMC_DEVCONF) -static int -lmc_pci_shutdown(struct kern_devconf * const kdc, int force) -{ - if (kdc->kdc_unit < LMC_MAX_DEVICES) { - lmc_softc_t * const sc = LMC_UNIT_TO_SOFTC(kdc->kdc_unit); - if (sc != NULL) - lmc_shutdown(0, sc); - } - (void) dev_detach(kdc); - return 0; -} -#endif - -static const char* -lmc_pci_probe(pcici_t config_id, pcidi_t device_id) -{ - u_int32_t id; - - /* - * check first for the DEC chip we expect to find. We expect - * 21140A, pass 2.2 or higher. - */ - if (PCI_VENDORID(device_id) != DEC_VENDORID) - return NULL; - if (PCI_CHIPID(device_id) != CHIPID_21140) - return NULL; - id = pci_conf_read(config_id, PCI_CFRV) & 0xff; - if (id < 0x22) - return NULL; - - /* - * Next, check the subsystem ID and see if it matches what we - * expect. - */ - id = pci_conf_read(config_id, PCI_SSID); - if (PCI_VENDORID(id) != PCI_VENDOR_LMC) - return NULL; - if (PCI_CHIPID(id) == PCI_PRODUCT_LMC_HSSI) { - return "Lan Media Corporation HSSI"; - } - if (PCI_CHIPID(id) == PCI_PRODUCT_LMC_DS3) { - return "Lan Media Corporation DS3"; - } - if (PCI_CHIPID(id) == PCI_PRODUCT_LMC_SSI) { - return "Lan Media Corporation SSI"; - } - if (PCI_CHIPID(id) == PCI_PRODUCT_LMC_T1) { - return "Lan Media Coporation T1"; - } - - return NULL; -} - -static void lmc_pci_attach(pcici_t config_id, int unit); -static u_long lmc_pci_count; - -struct pci_device lmcdevice = { - "lmc", - lmc_pci_probe, - lmc_pci_attach, - &lmc_pci_count, -#if defined(LMC_DEVCONF) - lmc_pci_shutdown, -#endif -}; - -#ifdef COMPAT_PCI_DRIVER -COMPAT_PCI_DRIVER(ti, lmcdevice); -#else -DATA_SET(pcidevice_set, lmcdevice); -#endif /* COMPAT_PCI_DRIVER */ - -static void -lmc_pci_attach(pcici_t config_id, int unit) -{ - lmc_softc_t *sc; - int retval; - u_int32_t revinfo, cfdainfo, id, ssid; -#if !defined(LMC_IOMAPPED) - vm_offset_t pa_csrs; -#endif - unsigned csroffset = LMC_PCI_CSROFFSET; - unsigned csrsize = LMC_PCI_CSRSIZE; - lmc_csrptr_t csr_base; - lmc_spl_t s; - - if (unit >= LMC_MAX_DEVICES) { - printf("lmc%d", unit); - printf(": not configured; limit of %d reached or exceeded\n", - LMC_MAX_DEVICES); - return; - } - - /* - * allocate memory for the softc - */ - sc = (lmc_softc_t *) malloc(sizeof(*sc), M_DEVBUF, M_NOWAIT | M_ZERO); - if (sc == NULL) - return; - - revinfo = PCI_CONF_READ(PCI_CFRV) & 0xFF; - id = PCI_CONF_READ(PCI_CFID); - cfdainfo = PCI_CONF_READ(PCI_CFDA); - ssid = pci_conf_read(config_id, PCI_SSID); - switch (PCI_CHIPID(ssid)) { - case PCI_PRODUCT_LMC_HSSI: - sc->lmc_media = &lmc_hssi_media; - break; - case PCI_PRODUCT_LMC_DS3: - sc->lmc_media = &lmc_ds3_media; - break; - case PCI_PRODUCT_LMC_SSI: - sc->lmc_media = &lmc_ssi_media; - break; - case PCI_PRODUCT_LMC_T1: - sc->lmc_media = &lmc_t1_media; - break; - } - - /* - * allocate memory for the device descriptors - */ - sc->lmc_rxdescs = (tulip_desc_t *)malloc(sizeof(tulip_desc_t) * LMC_RXDESCS, M_DEVBUF, M_NOWAIT); - sc->lmc_txdescs = (tulip_desc_t *)malloc(sizeof(tulip_desc_t) * LMC_TXDESCS, M_DEVBUF, M_NOWAIT); - if (sc->lmc_rxdescs == NULL || sc->lmc_txdescs == NULL) { - if (sc->lmc_rxdescs) - free((caddr_t) sc->lmc_rxdescs, M_DEVBUF); - if (sc->lmc_txdescs) - free((caddr_t) sc->lmc_txdescs, M_DEVBUF); - free((caddr_t) sc, M_DEVBUF); - return; - } - - PCI_GETBUSDEVINFO(sc); - - sc->lmc_chipid = LMC_21140A; - sc->lmc_features |= LMC_HAVE_STOREFWD; - if (sc->lmc_chipid == LMC_21140A && revinfo <= 0x22) - sc->lmc_features |= LMC_HAVE_RXBADOVRFLW; - - if (cfdainfo & (TULIP_CFDA_SLEEP | TULIP_CFDA_SNOOZE)) { - cfdainfo &= ~(TULIP_CFDA_SLEEP | TULIP_CFDA_SNOOZE); - PCI_CONF_WRITE(PCI_CFDA, cfdainfo); - DELAY(11 * 1000); - } - - sc->lmc_unit = unit; - sc->lmc_name = "lmc"; - sc->lmc_revinfo = revinfo; -#if defined(LMC_IOMAPPED) - retval = pci_map_port(config_id, PCI_CBIO, &csr_base); -#else - retval = pci_map_mem(config_id, PCI_CBMA, (vm_offset_t *) &csr_base, - &pa_csrs); -#endif - - if (!retval) { - free((caddr_t) sc->lmc_rxdescs, M_DEVBUF); - free((caddr_t) sc->lmc_txdescs, M_DEVBUF); - free((caddr_t) sc, M_DEVBUF); - return; - } - tulips[unit] = sc; - - lmc_initcsrs(sc, csr_base + csroffset, csrsize); - lmc_initring(sc, &sc->lmc_rxinfo, sc->lmc_rxdescs, - LMC_RXDESCS); - lmc_initring(sc, &sc->lmc_txinfo, sc->lmc_txdescs, - LMC_TXDESCS); - - lmc_gpio_mkinput(sc, 0xff); - sc->lmc_gpio = 0; /* drive no signals yet */ - - sc->lmc_media->defaults(sc); - - sc->lmc_media->set_link_status(sc, 0); /* down */ - - /* - * Make sure there won't be any interrupts or such... - */ - LMC_CSR_WRITE(sc, csr_busmode, TULIP_BUSMODE_SWRESET); - /* - * Wait 10 microseconds (actually 50 PCI cycles but at - * 33MHz that comes to two microseconds but wait a - * bit longer anyways) - */ - DELAY(100); - - switch (sc->ictl.cardtype) { - case LMC_CARDTYPE_HSSI: - printf(LMC_PRINTF_FMT ": HSSI, ", LMC_PRINTF_ARGS); - break; - case LMC_CARDTYPE_DS3: - printf(LMC_PRINTF_FMT ": DS3, ", LMC_PRINTF_ARGS); - break; - case LMC_CARDTYPE_SSI: - printf(LMC_PRINTF_FMT ": SSI, ", LMC_PRINTF_ARGS); - break; - } - - lmc_read_macaddr(sc); - printf("lmc%d: pass %d.%d, serial " LMC_EADDR_FMT "\n", unit, - (sc->lmc_revinfo & 0xF0) >> 4, sc->lmc_revinfo & 0x0F, - LMC_EADDR_ARGS(sc->lmc_enaddr)); - - if (!pci_map_int (config_id, lmc_intr_normal, (void*) sc, &net_imask)) { - printf(LMC_PRINTF_FMT ": couldn't map interrupt\n", - LMC_PRINTF_ARGS); - return; - } - -#if 0 -#if !defined(LMC_DEVCONF) - at_shutdown(lmc_shutdown, sc, SHUTDOWN_POST_SYNC); -#endif -#endif - - s = LMC_RAISESPL(); - lmc_dec_reset(sc); - lmc_reset(sc); - lmc_attach(sc); - LMC_RESTORESPL(s); -} - -#if 0 -static void -lmc_shutdown(int howto, void * arg) -{ - lmc_softc_t * const sc = arg; - LMC_CSR_WRITE(sc, csr_busmode, TULIP_BUSMODE_SWRESET); - DELAY(10); - - sc->lmc_miireg16 = 0; /* deassert ready, and all others too */ -printf("lmc: 5\n"); - lmc_led_on(sc, LMC_MII16_LED_ALL); -} -#endif |