FCP-101: Remove fe(4).

Relnotes:	yes
FCP:		https://github.com/freebsd/fcp/blob/master/fcp-0101.md
Reviewed by:	jhb, imp
Differential Revision:	https://reviews.freebsd.org/D20230
This commit is contained in:
Brooks Davis 2019-05-17 15:23:26 +00:00
parent 3ee01a1385
commit dd262716a1
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=347914
14 changed files with 1 additions and 4709 deletions

View file

@ -47,6 +47,7 @@ OLD_FILES+=usr/share/man/man4/ed.4
OLD_FILES+=usr/share/man/man4/if_ed.4
OLD_FILES+=usr/share/man/man4/ep.4
OLD_FILES+=usr/share/man/man4/ex.4
OLD_FILES+=usr/share/man/man4/fe.4
# 20190513: libcap_sysctl interface change
OLD_FILES+=lib/casper/libcap_sysctl.1
# 20190509: tests/sys/opencrypto requires the net/py-dpkt package.

View file

@ -8,7 +8,6 @@ MAN= apm.4 \
CPU_ELAN.4 \
ctau.4 \
cx.4 \
fe.4 \
glxiic.4 \
glxsb.4 \
longrun.4 \

View file

@ -1,326 +0,0 @@
.\" All Rights Reserved, Copyright (C) Fujitsu Limited 1995
.\"
.\" This document may be used, modified, copied, distributed, and sold, in
.\" both source and printed form provided that the above copyright, these
.\" terms and the following disclaimer are retained. The name of the author
.\" and/or the contributor may not be used to endorse or promote products
.\" derived from this software without specific prior written permission.
.\"
.\" THIS DOCUMENT IS PROVIDED BY THE AUTHOR AND THE CONTRIBUTOR ``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 THE CONTRIBUTOR 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 DOCUMENT, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" Contributed by M. Sekiguchi <seki@sysrap.cs.fujitsu.co.jp>.
.\" for fe driver.
.\"
.\" $FreeBSD$
.Dd October 24, 2018
.Dt FE 4 i386
.Os
.Sh NAME
.Nm fe
.Nd "Fujitsu MB86960A/MB86965A based Ethernet adapters"
.Sh SYNOPSIS
To compile this driver into the kernel,
place the following line in your
kernel configuration file:
.Bd -ragged -offset indent
.Cd "device fe"
.Ed
.Pp
Alternatively, to load the driver as a
module at boot time, place the following line in
.Xr loader.conf 5 :
.Bd -literal -offset indent
if_fe_load="YES"
.Ed
.Pp
In
.Pa /boot/device.hints :
.Cd hint.fe.0.at="isa"
.Cd hint.fe.0.port="0x300"
.Cd hint.fe.0.flags="0x0"
.Sh DEPRECATION NOTICE
The
.Nm
driver is not present in
.Fx 13.0
and later.
See https://github.com/freebsd/fcp/blob/master/fcp-0101.md for more
information.
.Sh DESCRIPTION
The
.Nm
is a network device driver
for Ethernet adapters based on Fujitsu MB86960A, MB86965A,
or other compatible chips.
.Pp
The driver provides automatic I/O port address configuration and
automatic IRQ configuration,
when used with suitable adapter hardware.
.Pp
The driver works with program I/O data transfer technique.
It gives a fair performance.
Shared memory is never used, even if the adapter has one.
.Pp
It currently works with Fujitsu FMV-180 series for ISA,
Allied-Telesis AT1700 series and RE2000 series for ISA,
and Fujitsu MBH10302 PC card.
.Ss Parameters
In the
.Pa /boot/device.hints
file, two parameters,
.Ar port
and
.Ar irq ,
must be specified to reflect adapter hardware settings.
Another parameter
.Ar flags
can be specified to provide additional configuration as an option.
.Pp
The
.Ar port
parameter specifies a base I/O port address of the adapter.
It must match with the hardware setting of the adapter.
The
.Ar port
may be left unspecified by removing
.Dl hint.fe.0.port="..."
from the file.
In that case, the driver tries to detect the hardware setting
of the I/O address automatically.
This feature may not work with some adapter hardware.
.Pp
The
.Ar irq
parameter specifies an IRQ number used by the adapter.
It must match the hardware setting of the adapter.
.Ar Irq
may be left unspecified by removing
.Dl hint.fe.0.irq="..."
from the file.
in that case, the driver tries to detect
the hardware setting of the IRQ automatically.
This feature may not work on some adapters.
.Pp
The
.Ar flags
is a numeric value which consists of a combination of various device settings.
The following flags are defined in the current version.
To specify two or more settings for a device,
use a numeric sum of each flag value.
Flag bits not specified below are reserved and must be set to 0.
Actually, each bit is either just ignored by the driver,
or tested and used to control undocumented features of the driver.
Consult the source program for undocumented features.
.Bl -tag -width 8n
.It Li 0x007F
These flag bits are used
to initialize DLCR6 register of MB86960A/MB86965A chip,
when the
.Li 0x0080
bit of the
.Ar flags
is set.
See below for more about DLCR6 override feature.
The
.Li 0x007F
flag bits must be 0 unless the
.Li 0x0080
bit is set,
to maintain the compatibility with future versions of the driver.
.It Li 0x0080
This flag overrides the default setting to the DLCR6 register
of MB86960A/MB86965A chip by a user supplied value,
which is taken from the lower 7 bits of the flag value.
This is a troubleshooting flag and should not be used
without understanding of the adapter hardware.
Consult the Fujitsu manual for more information
on DLCR6 settings.
.El
.Sh HARDWARE
Controllers and cards supported by the
.Nm
driver include:
.Pp
.Bl -bullet -compact
.It
Allied Telesis RE1000, RE1000Plus, ME1500 (110-pin)
.It
CONTEC C-NET(98)P2, C-NET (9N)E (110-pin), C-NET(9N)C (ExtCard)
.It
CONTEC C-NET(PC)C PC Card Ethernet
.It
Eagle Tech NE200T
.It
Eiger Labs EPX-10BT
.It
Fujitsu FMV-J182, FMV-J182A
.It
Fujitsu MB86960A, MB86965A
.It
Fujitsu MBH10303, MBH10302 PC Card Ethernet
.It
Fujitsu Towa LA501 Ethernet
.It
HITACHI HT-4840-11 PC Card Ethernet
.It
NextCom J Link NC5310
.It
RATOC REX-5588, REX-9822, REX-4886, and REX-R280
.It
RATOC REX-9880/9881/9882/9883
.It
TDK LAC-98012, LAC-98013, LAC-98025, LAC-9N011 (110-pin)
.It
TDK LAK-CD011, LAK-CD021, LAK-CD021A, LAK-CD021BX
.It
Ungermann-Bass Access/PC N98C+(PC85152, PC85142), Access/NOTE
N98(PC86132) (110-pin)
.El
.Sh FEATURES SPECIFIC TO HARDWARE MODELS
The
.Nm
driver has some features and limitations
which depend on adapter hardware models.
The following is a summary of these dependencies.
.Ss Fujitsu FMV-180 series adapters
Both automatic IRQ detection and automatic I/O port address detection
is available with these adapters.
.Pp
Automatic I/O port address detection feature of
.Nm
works mostly fine for FMV-180 series.
It works even if there are two or more FMV-180s in a system.
However, some combination of other adapters may confuse the driver.
It is recommended to explicitly specify
.Ar port
when you experience some difficulties with hardware probe.
.Pp
Automatic IRQ detection feature of
.Nm
works reliably for FMV-180 series.
It is recommended to explicitly specify
.Ar irq
always for FMV-180.
The hardware setting of IRQ is read
from the configuration EEPROM on the adapter,
even when the kernel config file specifies an IRQ value.
The driver will generate a warning message,
if the IRQ setting specified in
.Pa /boot/device.hints
does not match one stored in EEPROM.
Then, it will use the value specified in the file.
(This behavior has been changed from the previous releases.)
.Ss Allied-Telesis AT1700 series and RE2000 series adapters
Automatic I/O port address detection
is available with Allied-Telesis AT1700 series and RE2000 series,
while it is less reliable than FMV-180 series.
Using the feature with Allied-Telesis adapters
is not recommended.
.Pp
Automatic IRQ detection is also available with some limitation.
The
.Nm
driver
tries to get IRQ setting from the configuration EEPROM on the board,
if
.Ar irq
is not specified in
.Pa /boot/device.hints .
Unfortunately,
AT1700 series and RE2000 series seems to have two types of models;
One type allows IRQ selection from 3/4/5/9,
while the other from 10/11/12/15.
Identification of the models are not well known.
Hence, automatic IRQ detection with Allied-Telesis adapters
may not be reliable.
Specify an exact IRQ number if any troubles are encountered.
.Pp
Differences between AT1700 series and RE2000 series
or minor models in those series are not recognized.
.Ss Fujitsu MBH10302 PC card
The
.Nm
driver supports Fujitsu MBH10302 and compatible PC cards.
It requires the PC card (PCMCIA) support package.
.Sh SEE ALSO
.Xr netstat 1 ,
.Xr ed 4 ,
.Xr netintro 4 ,
.Xr ng_ether 4 ,
.Xr ifconfig 8
.Sh HISTORY
The
.Nm
driver appeared in
.Fx 2.0.5 .
.Sh AUTHORS, COPYRIGHT AND DISCLAIMER
The
.Nm
driver was originally written and contributed by
.An M. Sekiguchi Aq Mt seki@sysrap.cs.fujitsu.co.jp ,
following the
.Nm ed
driver written by
.An David Greenman .
PC card support in
.Nm
is written by
.An Hidetoshi Kimura Aq Mt h-kimura@tokyo.se.fujitsu.co.jp .
This manual page was written by
.An M. Sekiguchi .
.Pp
.Em "All Rights Reserved, Copyright (C) Fujitsu Limited 1995"
.Pp
This document and the associated software may be used, modified,
copied, distributed, and sold, in both source and binary form provided
that the above copyright, these terms and the following disclaimer are
retained.
The name of the author and/or the contributor may not be
used to endorse or promote products derived from this document and the
associated software without specific prior written permission.
.Pp
THIS DOCUMENT AND THE ASSOCIATED SOFTWARE IS PROVIDED BY THE AUTHOR
AND THE CONTRIBUTOR
.Dq 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 THE
CONTRIBUTOR 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
DOCUMENT AND THE ASSOCIATED SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
.Sh BUGS
Following are major known bugs:
.Pp
Statistics on the number of collisions maintained by the
.Nm
driver is not accurate;
the
.Fl i
option of
.Xr netstat 1
shows slightly less value than true number of collisions.
.Pp
More mbuf clusters are used than expected.
The packet receive routine has an intended violation
against the mbuf cluster allocation policy.
The unnecessarily allocated clusters are freed within short lifetime,
and it will not affect long term kernel memory usage.
.Pp
Although XNS and IPX support is included in the driver,
it has never been tested and it is expected to have a lot of bugs.

View file

@ -1937,7 +1937,6 @@ device xmphy # XaQti XMAC II
# LinkSys LNE100TX, LNE100TX V2.0, Jaton XpressNet, Alfa Inc GFC2204,
# KNE110TX.
# em: Intel Pro/1000 Gigabit Ethernet 82542, 82543, 82544 based adapters.
# fe: Fujitsu MB86960A/MB86965A Ethernet
# fxp: Intel EtherExpress Pro/100B
# (hint of prefer_iomap can be done to prefer I/O instead of Mem mapping)
# gem: Apple GMAC/Sun ERI/Sun GEM
@ -2040,9 +2039,6 @@ device xmphy # XaQti XMAC II
# Order for ISA devices is important here
device fe
hint.fe.0.at="isa"
hint.fe.0.port="0x300"
device sn
hint.sn.0.at="isa"
hint.sn.0.port="0x300"

View file

@ -1703,8 +1703,6 @@ dev/fdt/fdt_static_dtb.S optional fdt fdt_dtb_static \
dependency "${FDT_DTS_FILE:T:R}.dtb"
dev/fdt/simplebus.c optional fdt
dev/fdt/simple_mfd.c optional fdt
dev/fe/if_fe.c optional fe
dev/fe/if_fe_pccard.c optional fe pccard
dev/filemon/filemon.c optional filemon
dev/firewire/firewire.c optional firewire
dev/firewire/fwcrom.c optional firewire

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,361 +0,0 @@
/*-
* All Rights Reserved, Copyright (C) Fujitsu Limited 1995
*
* This software may be used, modified, copied, distributed, and sold, in
* both source and binary form provided that the above copyright, these
* terms and the following disclaimer are retained. The name of the author
* and/or the contributor 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 AND THE CONTRIBUTOR ``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 THE CONTRIBUTOR 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.
*
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/kernel.h>
#include <sys/socket.h>
#include <sys/systm.h>
#include <sys/lock.h>
#include <sys/module.h>
#include <sys/mutex.h>
#include <sys/bus.h>
#include <machine/bus.h>
#include <sys/rman.h>
#include <net/ethernet.h>
#include <net/if.h>
#include <net/if_var.h>
#include <net/if_mib.h>
#include <net/if_media.h>
#include <netinet/in.h>
#include <netinet/if_ether.h>
#include <dev/fe/mb86960.h>
#include <dev/fe/if_fereg.h>
#include <dev/fe/if_fevar.h>
#include <dev/pccard/pccardvar.h>
#include <dev/pccard/pccard_cis.h>
#include "card_if.h"
#include "pccarddevs.h"
/*
* PC Card (PCMCIA) specific code.
*/
static int fe_pccard_probe(device_t);
static int fe_pccard_attach(device_t);
static int fe_pccard_detach(device_t);
static const struct fe_pccard_product {
struct pccard_product mpp_product;
int mpp_flags;
int mpp_cfe;
#define MPP_MBH10302 1
#define MPP_ANYFUNC 2
#define MPP_SKIP_TO_CFE 4
} fe_pccard_products[] = {
/* These need to be first */
{ PCMCIA_CARD(FUJITSU2, FMV_J181), MPP_MBH10302 },
{ PCMCIA_CARD(FUJITSU2, FMV_J182), 0 },
{ PCMCIA_CARD(FUJITSU2, FMV_J182A), 0 },
{ PCMCIA_CARD(FUJITSU2, ITCFJ182A), 0 },
/* These need to be second */
{ PCMCIA_CARD(TDK, LAK_CD011), 0 },
{ PCMCIA_CARD(TDK, LAK_CD021BX), 0 },
{ PCMCIA_CARD(TDK, LAK_CF010), 0 },
#if 0 /* XXX 86960-based? */
{ PCMCIA_CARD(TDK, LAK_DFL9610), 0 },
#endif
{ PCMCIA_CARD(CONTEC, CNETPC), MPP_SKIP_TO_CFE, 2 },
{ PCMCIA_CARD(FUJITSU, LA501), 0 },
{ PCMCIA_CARD(FUJITSU, LA10S), 0 },
{ PCMCIA_CARD(FUJITSU, NE200T), MPP_MBH10302 },/* Sold by Eagle */
{ PCMCIA_CARD(HITACHI, HT_4840), MPP_MBH10302 | MPP_SKIP_TO_CFE, 10 },
{ PCMCIA_CARD(RATOC, REX_R280), 0 },
{ PCMCIA_CARD(XIRCOM, CE), MPP_ANYFUNC },
{ { NULL } }
};
static int
fe_pccard_probe(device_t dev)
{
int error;
uint32_t fcn = PCCARD_FUNCTION_UNSPEC;
const struct fe_pccard_product *pp;
int i;
if ((pp = (const struct fe_pccard_product *)pccard_product_lookup(dev,
(const struct pccard_product *)fe_pccard_products,
sizeof(fe_pccard_products[0]), NULL)) != NULL) {
if (pp->mpp_product.pp_name != NULL)
device_set_desc(dev, pp->mpp_product.pp_name);
if (pp->mpp_flags & MPP_ANYFUNC)
return (0);
/* Make sure we're a network function */
error = pccard_get_function(dev, &fcn);
if (error != 0)
return (error);
if (fcn != PCCARD_FUNCTION_NETWORK)
return (ENXIO);
if (pp->mpp_flags & MPP_SKIP_TO_CFE) {
for (i = pp->mpp_cfe; i < 32; i++) {
if (pccard_select_cfe(dev, i) == 0)
goto good;
}
device_printf(dev,
"Failed to map CFE %d or higher\n", pp->mpp_cfe);
return ENXIO;
}
good:;
return (0);
}
return (ENXIO);
}
static device_method_t fe_pccard_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, fe_pccard_probe),
DEVMETHOD(device_attach, fe_pccard_attach),
DEVMETHOD(device_detach, fe_pccard_detach),
{ 0, 0 }
};
static driver_t fe_pccard_driver = {
"fe",
fe_pccard_methods,
sizeof (struct fe_softc)
};
DRIVER_MODULE(fe, pccard, fe_pccard_driver, fe_devclass, 0, 0);
MODULE_DEPEND(fe, pccard, 1, 1, 1);
PCCARD_PNP_INFO(fe_pccard_products);
static int fe_probe_mbh(device_t, const struct fe_pccard_product *);
static int fe_probe_tdk(device_t, const struct fe_pccard_product *);
static int
fe_pccard_attach(device_t dev)
{
struct fe_softc *sc;
const struct fe_pccard_product *pp;
int error;
/* Prepare for the device probe process. */
sc = device_get_softc(dev);
sc->sc_unit = device_get_unit(dev);
pp = (const struct fe_pccard_product *) pccard_product_lookup(dev,
(const struct pccard_product *)fe_pccard_products,
sizeof(fe_pccard_products[0]), NULL);
if (pp == NULL)
return (ENXIO);
if (pp->mpp_flags & MPP_MBH10302)
error = fe_probe_mbh(dev, pp);
else
error = fe_probe_tdk(dev, pp);
if (error != 0) {
fe_release_resource(dev);
return (error);
}
error = fe_alloc_irq(dev, 0);
if (error != 0) {
fe_release_resource(dev);
return (error);
}
return (fe_attach(dev));
}
/*
* feunload - unload the driver and clear the table.
*/
static int
fe_pccard_detach(device_t dev)
{
struct fe_softc *sc = device_get_softc(dev);
struct ifnet *ifp = sc->ifp;
FE_LOCK(sc);
fe_stop(sc);
FE_UNLOCK(sc);
callout_drain(&sc->timer);
ether_ifdetach(ifp);
bus_teardown_intr(dev, sc->irq_res, sc->irq_handle);
if_free(ifp);
fe_release_resource(dev);
mtx_destroy(&sc->lock);
return 0;
}
/*
* Probe and initialization for Fujitsu MBH10302 PCMCIA Ethernet interface.
* Note that this is for 10302 only; MBH10304 is handled by fe_probe_tdk().
*/
static void
fe_init_mbh(struct fe_softc *sc)
{
/* Minimal initialization of 86960. */
DELAY(200);
fe_outb(sc, FE_DLCR6, sc->proto_dlcr6 | FE_D6_DLC_DISABLE);
DELAY(200);
/* Disable all interrupts. */
fe_outb(sc, FE_DLCR2, 0);
fe_outb(sc, FE_DLCR3, 0);
/* Enable master interrupt flag. */
fe_outb(sc, FE_MBH0, FE_MBH0_MAGIC | FE_MBH0_INTR_ENABLE);
}
static int
fe_probe_mbh(device_t dev, const struct fe_pccard_product *pp)
{
struct fe_softc *sc = device_get_softc(dev);
static struct fe_simple_probe_struct probe_table [] = {
{ FE_DLCR2, 0x58, 0x00 },
{ FE_DLCR4, 0x08, 0x00 },
{ FE_DLCR6, 0xFF, 0xB6 },
{ 0 }
};
/* MBH10302 occupies 32 I/O addresses. */
if (fe_alloc_port(dev, 32))
return ENXIO;
/* Fill the softc struct with default values. */
fe_softc_defaults(sc);
/*
* See if MBH10302 is on its address.
* I'm not sure the following probe code works. FIXME.
*/
if (!fe_simple_probe(sc, probe_table))
return ENXIO;
/* Get our station address from EEPROM. */
fe_inblk(sc, FE_MBH10, sc->enaddr, ETHER_ADDR_LEN);
/* Make sure we got a valid station address. */
if (!fe_valid_Ether_p(sc->enaddr, 0))
return ENXIO;
/* Determine the card type. */
sc->type = FE_TYPE_MBH;
sc->typestr = "MBH10302 (PCMCIA)";
/* We seems to need our own IDENT bits... FIXME. */
sc->proto_dlcr7 = FE_D7_BYTSWP_LH | FE_D7_IDENT_NICE;
/* Setup hooks. We need a special initialization procedure. */
sc->init = fe_init_mbh;
return 0;
}
static int
fe_pccard_xircom_mac(const struct pccard_tuple *tuple, void *argp)
{
uint8_t *enaddr = argp;
int i;
#if 1
/*
* We fail to map the CIS twice, for reasons unknown. We
* may fix this in the future by loading the CIS with a sane
* CIS from userland.
*/
static uint8_t defaultmac[ETHER_ADDR_LEN] = {
0x00, 0x80, 0xc7, 0xed, 0x16, 0x7b};
/* Copy the MAC ADDR and return success */
for (i = 0; i < ETHER_ADDR_LEN; i++)
enaddr[i] = defaultmac[i];
#else
/* FUNCE is not after FUNCID, so we gotta go find it */
if (tuple->code != 0x22)
return (0);
/* Make sure this is a sane node */
if (tuple->length < ETHER_ADDR_LEN + 3)
return (0);
/* Copy the MAC ADDR and return success */
for (i = 0; i < ETHER_ADDR_LEN; i++)
enaddr[i] = pccard_tuple_read_1(tuple, i + 3);
#endif
return (1);
}
/*
* Probe and initialization for TDK/CONTEC PCMCIA Ethernet interface.
* by MASUI Kenji <masui@cs.titech.ac.jp>
*
* (Contec uses TDK Ethernet chip -- hosokawa)
*
* This version of fe_probe_tdk has been rewrote to handle
* *generic* PC Card implementation of Fujitsu MB8696x family. The
* name _tdk is just for a historical reason. :-)
*/
static int
fe_probe_tdk (device_t dev, const struct fe_pccard_product *pp)
{
struct fe_softc *sc = device_get_softc(dev);
static struct fe_simple_probe_struct probe_table [] = {
{ FE_DLCR2, 0x10, 0x00 },
{ FE_DLCR4, 0x08, 0x00 },
/* { FE_DLCR5, 0x80, 0x00 }, Does not work well. */
{ 0 }
};
/* C-NET(PC)C occupies 16 I/O addresses. */
if (fe_alloc_port(dev, 16))
return ENXIO;
/* Fill the softc struct with default values. */
fe_softc_defaults(sc);
/*
* See if C-NET(PC)C is on its address.
*/
if (!fe_simple_probe(sc, probe_table))
return ENXIO;
/* Determine the card type. */
sc->type = FE_TYPE_TDK;
sc->typestr = "Generic MB8696x/78Q837x Ethernet (PCMCIA)";
pccard_get_ether(dev, sc->enaddr);
/* Make sure we got a valid station address. */
if (!fe_valid_Ether_p(sc->enaddr, 0)) {
pccard_cis_scan(dev, fe_pccard_xircom_mac, sc->enaddr);
}
/* Make sure we got a valid station address. */
if (!fe_valid_Ether_p(sc->enaddr, 0))
return ENXIO;
return 0;
}

View file

@ -1,158 +0,0 @@
/*-
* Hardware specification of various 8696x based Ethernet cards.
* Contributed by M. Sekiguchi <seki@sysrap.cs.fujitsu.co.jp>
*
* All Rights Reserved, Copyright (C) Fujitsu Limited 1995
*
* This software may be used, modified, copied, distributed, and sold,
* in both source and binary form provided that the above copyright,
* these terms and the following disclaimer are retained. The name of
* the author and/or the contributor 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 AND THE CONTRIBUTOR ``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 THE CONTRIBUTOR 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.
*/
/* $FreeBSD$ */
/*
* Registers on FMV-180 series' ISA bus interface ASIC.
* I'm not sure the following register names are appropriate.
* Doesn't it look silly, eh? FIXME.
*/
#define FE_FMV0 16 /* Card status register #0 */
#define FE_FMV1 17 /* Card status register #1 */
#define FE_FMV2 18 /* Card config register #0 */
#define FE_FMV3 19 /* Card config register #1 */
#define FE_FMV4 20 /* Station address #1 */
#define FE_FMV5 21 /* Station address #2 */
#define FE_FMV6 22 /* Station address #3 */
#define FE_FMV7 23 /* Station address #4 */
#define FE_FMV8 24 /* Station address #5 */
#define FE_FMV9 25 /* Station address #6 */
#define FE_FMV10 26 /* Buffer RAM control register */
#define FE_FMV11 27 /* Buffer RAM data register */
/*
* FMV-180 series' ASIC register values.
*/
/* FMV0: Card status register #0: Misc info? */
#define FE_FMV0_MEDIA 0x07 /* Supported physical media. */
#define FE_FMV0_PRRDY 0x10 /* ??? */
#define FE_FMV0_PRERR 0x20 /* ??? */
#define FE_FMV0_ERRDY 0x40 /* ??? */
#define FE_FMV0_IREQ 0x80 /* ??? */
#define FE_FMV0_MEDIUM_5 0x01 /* 10base5/Dsub */
#define FE_FMV0_MEDIUM_2 0x02 /* 10base2/BNC */
#define FE_FMV0_MEDIUM_T 0x04 /* 10baseT/RJ45 */
/* Card status register #1: Hardware revision. */
#define FE_FMV1_REV 0x0F /* Card revision */
#define FE_FMV1_UPPER 0xF0 /* Usage unknown */
/* Card config register #0: I/O port address assignment. */
#define FE_FMV2_IOS 0x07 /* I/O selection. */
#define FE_FMV2_MES 0x38 /* ??? boot ROM? */
#define FE_FMV2_IRS 0xC0 /* IRQ selection. */
#define FE_FMV2_IOS_SHIFT 0
#define FE_FMV2_MES_SHIFT 3
#define FE_FMV2_IRS_SHIFT 6
/* Card config register #1: IRQ enable */
#define FE_FMV3_IRQENB 0x80 /* IRQ enable. */
/*
* Register(?) specific to AT1700/RE2000.
*/
#define FE_ATI_RESET 0x1F /* Write to reset the 86965. */
/* EEPROM allocation (offsets) of AT1700/RE2000. */
#define FE_ATI_EEP_ADDR 0x08 /* Station address. (8-13) */
#define FE_ATI_EEP_MEDIA 0x18 /* Media type. */
#define FE_ATI_EEP_MAGIC 0x19 /* XXX Magic. */
#define FE_ATI_EEP_MODEL 0x1e /* Hardware type. */
#define FE_ATI_EEP_REVISION 0x1f /* Hardware revision. */
/* Value for FE_ATI_EEP_MODEL. */
#define FE_ATI_MODEL_AT1700T 0x00
#define FE_ATI_MODEL_AT1700BT 0x01
#define FE_ATI_MODEL_AT1700FT 0x02
#define FE_ATI_MODEL_AT1700AT 0x03
/*
* Registers on MBH10302.
*/
#define FE_MBH0 0x10 /* ??? Including interrupt. */
#define FE_MBH1 0x11 /* ??? */
#define FE_MBH10 0x1A /* Station address. (10 - 15) */
/* Values to be set in MBH0 register. */
#define FE_MBH0_MAGIC 0x0D /* Just a magic constant? */
#define FE_MBH0_INTR 0x10 /* Master interrupt control. */
#define FE_MBH0_INTR_ENABLE 0x10 /* Enable interrupts. */
#define FE_MBH0_INTR_DISABLE 0x00 /* Disable interrupts. */
/*
* Fujitsu MB86965 JLI mode support routines.
*/
/* Datasheet for 86965 explicitly states that it only supports serial
* EEPROM with 16 words (32 bytes) capacity. (I.e., 93C06.) However,
* ones with 64 words (128 bytes) are available in the marked, namely
* 93C46, and are also fully compatible with 86965. It is known that
* some boards (e.g., ICL) actually have 93C46 on them and use extra
* storage to keep various config info. */
#define JLI_EEPROM_SIZE 128
/*
* SSi 78Q8377A support routines.
*/
#define SSI_EEPROM_SIZE 512
#define SSI_DIN 0x01
#define SSI_DAT 0x01
#define SSI_CSL 0x02
#define SSI_CLK 0x04
#define SSI_EEP 0x10
#define FE_SSI_EEP_IRQ 9 /* Irq ??? */
#define FE_SSI_EEP_ADDR 16 /* Station(MAC) address */
#define FE_SSI_EEP_DUPLEX 25 /* Duplex mode ??? */
/*
* TDK/LANX boards support routines.
*/
/* AX012/AX013 equips an X24C01 chip, which has 128 bytes of memory cells. */
#define LNX_EEPROM_SIZE 128
/* Bit assignments and command definitions for the serial EEPROM
interface register in LANX ASIC. */
#define LNX_SDA_HI 0x08 /* Drive SDA line high (logical 1.) */
#define LNX_SDA_LO 0x00 /* Drive SDA line low (logical 0.) */
#define LNX_SDA_FL 0x08 /* Float (don't drive) SDA line. */
#define LNX_SDA_IN 0x01 /* Mask for reading SDA line. */
#define LNX_CLK_HI 0x04 /* Drive clock line high (active.) */
#define LNX_CLK_LO 0x00 /* Drive clock line low (inactive.) */

View file

@ -1,183 +0,0 @@
/*-
* All Rights Reserved, Copyright (C) Fujitsu Limited 1995
*
* This software may be used, modified, copied, distributed, and sold, in
* both source and binary form provided that the above copyright, these
* terms and the following disclaimer are retained. The name of the author
* and/or the contributor 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 AND THE CONTRIBUTOR ``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 THE CONTRIBUTOR 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.
*
* $FreeBSD$
*/
/* How many registers does an fe-supported adapter have at maximum? */
#define MAXREGISTERS 32
/* Shouldn't these be defined somewhere else such as isa_device.h? */
#define NO_IRQ 0
/* Flags for stability. */
#define UNSTABLE_IRQ 0x01 /* IRQ setting may be incorrect. */
#define UNSTABLE_MAC 0x02 /* Probed MAC address may be incorrect. */
#define UNSTABLE_TYPE 0x04 /* Probed vendor/model may be incorrect. */
/* Mapping between media bitmap (in fe_softc.mbitmap) and ifm_media. */
#define MB_HA 0x0001
#define MB_HM 0x0002
#define MB_HT 0x0004
#define MB_H2 0x0008
#define MB_H5 0x0010
#define MB_HF 0x0020
#define MB_FT 0x0040
/* Card types. */
#define FE_TYPE_SSI 1
#define FE_TYPE_JLI 2
#define FE_TYPE_FMV 3
#define FE_TYPE_LNX 4
#define FE_TYPE_UBN 5
#define FE_TYPE_GWY 6
#define FE_TYPE_MBH 7
#define FE_TYPE_TDK 8
#define FE_TYPE_RE1000 9
#define FE_TYPE_CNET9NE 10
#define FE_TYPE_REX 11
/*
* Data type for a multicast address filter on 8696x.
*/
struct fe_filter {
u_char data [FE_FILTER_LEN];
};
/*
* fe_softc: per line info and status
*/
struct fe_softc {
/* Used by "common" codes. */
struct ifnet *ifp;
int sc_unit;
u_char enaddr[6];
/* Used by config codes. */
int type;
int port_used;
struct resource * port_res;
struct resource * irq_res;
void * irq_handle;
/* Set by probe() and not modified in later phases. */
char const * typestr; /* printable name of the interface. */
u_short txb_size; /* size of TX buffer, in bytes */
u_char proto_dlcr4; /* DLCR4 prototype. */
u_char proto_dlcr5; /* DLCR5 prototype. */
u_char proto_dlcr6; /* DLCR6 prototype. */
u_char proto_dlcr7; /* DLCR7 prototype. */
u_char proto_bmpr13; /* BMPR13 prototype. */
u_char stability; /* How stable is this? */
u_short priv_info; /* info specific to a vendor/model. */
/* Vendor/model specific hooks. */
void (*init)(struct fe_softc *); /* Just before fe_init(). */
void (*stop)(struct fe_softc *); /* Just after fe_stop(). */
/* Transmission buffer management. */
u_short txb_free; /* free bytes in TX buffer */
u_char txb_count; /* number of packets in TX buffer */
u_char txb_sched; /* number of scheduled packets */
/* Excessive collision counter (see fe_tint() for details.) */
u_char tx_excolls; /* # of excessive collisions. */
/* Multicast address filter management. */
u_char filter_change; /* MARs must be changed ASAP. */
struct fe_filter filter;/* new filter value. */
/* Network management. */
struct ifmib_iso_8802_3 mibdata;
/* Media information. */
struct ifmedia media; /* used by if_media. */
u_short mbitmap; /* bitmap for supported media; see bit2media */
int defmedia; /* default media */
void (* msel)(struct fe_softc *); /* media selector. */
struct mtx lock;
struct callout timer;
int tx_timeout;
};
struct fe_simple_probe_struct {
u_char port; /* Offset from the base I/O address. */
u_char mask; /* Bits to be checked. */
u_char bits; /* Values to be compared against. */
};
#define FE_LOCK(sc) mtx_lock(&(sc)->lock)
#define FE_UNLOCK(sc) mtx_unlock(&(sc)->lock)
#define FE_ASSERT_LOCKED(sc) mtx_assert(&(sc)->lock, MA_OWNED)
extern devclass_t fe_devclass;
int fe_attach(device_t);
int fe_alloc_port(device_t, int);
int fe_alloc_irq(device_t, int);
void fe_release_resource(device_t);
int fe_simple_probe(struct fe_softc const *,
struct fe_simple_probe_struct const *);
int fe_valid_Ether_p(u_char const *, unsigned);
void fe_softc_defaults(struct fe_softc *);
void fe_stop(struct fe_softc *sc);
void fe_irq_failure(char const *, int, int, char const *);
void fe_msel_965(struct fe_softc *);
void fe_read_eeprom_jli(struct fe_softc *, u_char *);
void fe_init_jli(struct fe_softc *);
void fe_read_eeprom_ssi(struct fe_softc *, u_char *);
void fe_read_eeprom_lnx(struct fe_softc *, u_char *);
void fe_init_lnx(struct fe_softc *);
void fe_init_ubn(struct fe_softc *);
#define fe_inb(sc, port) \
bus_read_1((sc)->port_res, (port))
#define fe_outb(sc, port, value) \
bus_write_1((sc)->port_res, (port), (value))
#define fe_inw(sc, port) \
bus_read_2((sc)->port_res, (port))
#define fe_outw(sc, port, value) \
bus_write_2((sc)->port_res, (port), (value))
#define fe_insb(sc, port, addr, count) \
bus_read_multi_1((sc)->port_res, (port), (addr), (count))
#define fe_outsb(sc, port, addr, count) \
bus_write_multi_1((sc)->port_res, (port), (addr), (count))
#define fe_insw(sc, port, addr, count) \
bus_read_multi_2((sc)->port_res, (port), (addr), (count))
#define fe_outsw(sc, port, addr, count) \
bus_write_multi_2((sc)->port_res, (port), (addr), (count))
#define fe_inblk(sc, port, addr, count) \
bus_read_region_1((sc)->port_res, (port), (addr), (count))
#define fe_outblk(sc, port, addr, count) \
bus_write_region_1((sc)->port_res, (port), (addr), (count))

View file

@ -1,340 +0,0 @@
/*-
* All Rights Reserved, Copyright (C) Fujitsu Limited 1995
*
* This software may be used, modified, copied, distributed, and sold, in
* both source and binary form provided that the above copyright, these
* terms and the following disclaimer are retained. The name of the author
* and/or the contributor 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 AND THE CONTRIBUTOR ``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 THE CONTRIBUTOR 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.
*
* $FreeBSD$
*/
/*
* Registers of Fujitsu MB86960A/MB86965A series Ethernet controllers.
* Written and contributed by M.S. <seki@sysrap.cs.fujitsu.co.jp>
*/
/*
* Notes on register naming:
*
* Fujitsu documents for MB86960A/MB86965A uses no mnemorable names
* for their registers. They defined only three names for 32
* registers and appended numbers to distinguish registers of
* same name. Surprisingly, the numbers represent I/O address
* offsets of the registers from the base addresses, and their
* names correspond to the "bank" the registers are allocated.
* All this means that, for example, to say "read DLCR8" has no more
* than to say "read a register at offset 8 on bank DLCR."
*
* The following definitions may look silly, but that's what Fujitsu
* did, and it is necessary to know these names to read Fujitsu
* documents..
*/
/* Data Link Control Registers, on invaliant port addresses. */
#define FE_DLCR0 0
#define FE_DLCR1 1
#define FE_DLCR2 2
#define FE_DLCR3 3
#define FE_DLCR4 4
#define FE_DLCR5 5
#define FE_DLCR6 6
#define FE_DLCR7 7
/* More DLCRs, on register bank #0. */
#define FE_DLCR8 8
#define FE_DLCR9 9
#define FE_DLCR10 10
#define FE_DLCR11 11
#define FE_DLCR12 12
#define FE_DLCR13 13
#define FE_DLCR14 14
#define FE_DLCR15 15
/* Malticast Address Registers. On register bank #1. */
#define FE_MAR8 8
#define FE_MAR9 9
#define FE_MAR10 10
#define FE_MAR11 11
#define FE_MAR12 12
#define FE_MAR13 13
#define FE_MAR14 14
#define FE_MAR15 15
/* Buffer Memory Port Registers. On register back #2. */
#define FE_BMPR8 8
#define FE_BMPR9 9
#define FE_BMPR10 10
#define FE_BMPR11 11
#define FE_BMPR12 12
#define FE_BMPR13 13
#define FE_BMPR14 14
#define FE_BMPR15 15
/* More BMPRs, only on 86965, accessible only when JLI mode. */
#define FE_BMPR16 16
#define FE_BMPR17 17
#define FE_BMPR18 18
#define FE_BMPR19 19
/*
* Definitions of registers.
* I don't have Fujitsu documents of MB86960A/MB86965A, so I don't
* know the official names for each flags and fields. The following
* names are assigned by me (the author of this file,) since I cannot
* mnemorize hexadecimal constants for all of these functions.
* Comments?
*
* I've got documents from Fujitsu web site, recently. However, it's
* too late. Names for some fields (bits) are kept different from
* those used in the Fujitsu documents...
*/
/* DLCR0 -- transmitter status */
#define FE_D0_BUSERR 0x01 /* Bus write error? */
#define FE_D0_COLL16 0x02 /* Collision limit (16) encountered */
#define FE_D0_COLLID 0x04 /* Collision on last transmission */
#define FE_D0_JABBER 0x08 /* Jabber */
#define FE_D0_CRLOST 0x10 /* Carrier lost on last transmission */
#define FE_D0_PKTRCD 0x20 /* Last packet looped back correctly */
#define FE_D0_NETBSY 0x40 /* Network Busy (Carrier Detected) */
#define FE_D0_TXDONE 0x80 /* Transmission complete */
/* DLCR1 -- receiver status */
#define FE_D1_OVRFLO 0x01 /* Receiver buffer overflow */
#define FE_D1_CRCERR 0x02 /* CRC error on last packet */
#define FE_D1_ALGERR 0x04 /* Alignment error on last packet */
#define FE_D1_SRTPKT 0x08 /* Short (RUNT) packet is received */
#define FE_D1_RMTRST 0x10 /* Remote reset packet (type = 0x0900) */
#define FE_D1_DMAEOP 0x20 /* Host asserted End of DMA OPeration */
#define FE_D1_BUSERR 0x40 /* Bus read error */
#define FE_D1_PKTRDY 0x80 /* Packet(s) ready on receive buffer */
/* DLCR2 -- transmitter interrupt control; same layout as DLCR0 */
#define FE_D2_BUSERR FE_D0_BUSERR
#define FE_D2_COLL16 FE_D0_COLL16
#define FE_D2_COLLID FE_D0_COLLID
#define FE_D2_JABBER FE_D0_JABBER
#define FE_D2_TXDONE FE_D0_TXDONE
#define FE_D2_RESERVED 0x70
/* DLCR3 -- receiver interrupt control; same layout as DLCR1 */
#define FE_D3_OVRFLO FE_D1_OVRFLO
#define FE_D3_CRCERR FE_D1_CRCERR
#define FE_D3_ALGERR FE_D1_ALGERR
#define FE_D3_SRTPKT FE_D1_SRTPKT
#define FE_D3_RMTRST FE_D1_RMTRST
#define FE_D3_DMAEOP FE_D1_DMAEOP
#define FE_D3_BUSERR FE_D1_BUSERR
#define FE_D3_PKTRDY FE_D1_PKTRDY
/* DLCR4 -- transmitter operation mode */
#define FE_D4_DSC 0x01 /* Disable carrier sense on trans. */
#define FE_D4_LBC 0x02 /* Loop back test control */
#define FE_D4_CNTRL 0x04 /* - tied to CNTRL pin of the chip */
#define FE_D4_TEST1 0x08 /* Test output #1 */
#define FE_D4_COL 0xF0 /* Collision counter */
#define FE_D4_LBC_ENABLE 0x00 /* Perform loop back test */
#define FE_D4_LBC_DISABLE 0x02 /* Normal operation */
#define FE_D4_COL_SHIFT 4
/* DLCR5 -- receiver operation mode */
#define FE_D5_AFM0 0x01 /* Receive packets for other stations */
#define FE_D5_AFM1 0x02 /* Receive packets for this station */
#define FE_D5_RMTRST 0x04 /* Enable remote reset operation */
#define FE_D5_SRTPKT 0x08 /* Accept short (RUNT) packets */
#define FE_D5_SRTADR 0x10 /* Short (16 bits?) MAC address */
#define FE_D5_BADPKT 0x20 /* Accept packets with error */
#define FE_D5_BUFEMP 0x40 /* Receive buffer is empty */
#define FE_D5_TEST2 0x80 /* Test output #2 */
/* DLCR6 -- hardware configuration #0 */
#define FE_D6_BUFSIZ 0x03 /* Size of NIC buffer SRAM */
#define FE_D6_TXBSIZ 0x0C /* Size (and config)of trans. buffer */
#define FE_D6_BBW 0x10 /* Buffer SRAM bus width */
#define FE_D6_SBW 0x20 /* System bus width */
#define FE_D6_SRAM 0x40 /* Buffer SRAM access time */
#define FE_D6_DLC 0x80 /* Disable DLC (recever/transmitter) */
#define FE_D6_BUFSIZ_8KB 0x00 /* The board has 8KB SRAM */
#define FE_D6_BUFSIZ_16KB 0x01 /* The board has 16KB SRAM */
#define FE_D6_BUFSIZ_32KB 0x02 /* The board has 32KB SRAM */
#define FE_D6_BUFSIZ_64KB 0x03 /* The board has 64KB SRAM */
#define FE_D6_TXBSIZ_1x2KB 0x00 /* Single 2KB buffer for trans. */
#define FE_D6_TXBSIZ_2x2KB 0x04 /* Double 2KB buffers */
#define FE_D6_TXBSIZ_2x4KB 0x08 /* Double 4KB buffers */
#define FE_D6_TXBSIZ_2x8KB 0x0C /* Double 8KB buffers */
#define FE_D6_BBW_WORD 0x00 /* SRAM has 16 bit data line */
#define FE_D6_BBW_BYTE 0x10 /* SRAM has 8 bit data line */
#define FE_D6_SBW_WORD 0x00 /* Access with 16 bit (AT) bus */
#define FE_D6_SBW_BYTE 0x20 /* Access with 8 bit (XT) bus */
#define FE_D6_SRAM_150ns 0x00 /* The board has slow SRAM */
#define FE_D6_SRAM_100ns 0x40 /* The board has fast SRAM */
#define FE_D6_DLC_ENABLE 0x00 /* Normal operation */
#define FE_D6_DLC_DISABLE 0x80 /* Stop sending/receiving */
/* DLC7 -- hardware configuration #1 */
#define FE_D7_BYTSWP 0x01 /* Host byte order control */
#define FE_D7_EOPPOL 0x02 /* Polarity of DMA EOP signal */
#define FE_D7_RBS 0x0C /* Register bank select */
#define FE_D7_RDYPNS 0x10 /* Senses RDYPNSEL input signal */
#define FE_D7_POWER 0x20 /* Stand-by (power down) mode control */
#define FE_D7_IDENT 0xC0 /* Chip identification */
#define FE_D7_BYTSWP_LH 0x00 /* DEC/Intel byte order */
#define FE_D7_BYTSWP_HL 0x01 /* IBM/Motorolla byte order */
#define FE_D7_RBS_DLCR 0x00 /* Select DLCR8-15 */
#define FE_D7_RBS_MAR 0x04 /* Select MAR8-15 */
#define FE_D7_RBS_BMPR 0x08 /* Select BMPR8-15 */
#define FE_D7_POWER_DOWN 0x00 /* Power down (stand-by) mode */
#define FE_D7_POWER_UP 0x20 /* Normal operation */
#define FE_D7_IDENT_TDK 0x00 /* TDK chips? */
#define FE_D7_IDENT_NICE 0x80 /* Fujitsu NICE (86960) */
#define FE_D7_IDENT_EC 0xC0 /* Fujitsu EtherCoupler (86965) */
/* DLCR8 thru DLCR13 are for Ethernet station address. */
/* DLCR14 and DLCR15 are for TDR. (TDR is used for cable diagnostic.) */
/* MAR8 thru MAR15 are for Multicast address filter. */
/* BMPR8 and BMPR9 are for packet data. */
/* BMPR10 -- transmitter start trigger */
#define FE_B10_START 0x80 /* Start transmitter */
#define FE_B10_COUNT 0x7F /* Packet count */
/* BMPR11 -- 16 collisions control */
#define FE_B11_CTRL 0x01 /* Skip or resend errored packets */
#define FE_B11_MODE1 0x02 /* Restart transmitter after COLL16 */
#define FE_B11_MODE2 0x04 /* Automatic restart enable */
#define FE_B11_CTRL_RESEND 0x00 /* Re-send the collided packet */
#define FE_B11_CTRL_SKIP 0x01 /* Skip the collided packet */
/* BMPR12 -- DMA enable */
#define FE_B12_TXDMA 0x01 /* Enable transmitter DMA */
#define FE_B12_RXDMA 0x02 /* Enable receiver DMA */
/* BMPR13 -- DMA control */
#define FE_B13_BSTCTL 0x03 /* DMA burst mode control */
#define FE_B13_TPTYPE 0x04 /* Twisted pair cable impedance */
#define FE_B13_PORT 0x18 /* Port (TP/AUI) selection */
#define FE_B13_LNKTST 0x20 /* Link test enable */
#define FE_B13_SQTHLD 0x40 /* Lower squelch threshold */
#define FE_B13_IOUNLK 0x80 /* Change I/O base address, on JLI mode */
#define FE_B13_BSTCTL_1 0x00
#define FE_B13_BSTCTL_4 0x01
#define FE_B13_BSTCTL_8 0x02
#define FE_B13_BSTCLT_12 0x03
#define FE_B13_TPTYPE_UTP 0x00 /* Unshielded (standard) cable */
#define FE_B13_TPTYPE_STP 0x04 /* Shielded (IBM) cable */
#define FE_B13_PORT_AUTO 0x00 /* Auto detected */
#define FE_B13_PORT_TP 0x08 /* Force TP */
#define FE_B13_PORT_AUI 0x18 /* Force AUI */
/* BMPR14 -- More receiver control and more transmission interrupts */
#define FE_B14_FILTER 0x01 /* Filter out self-originated packets */
#define FE_B14_SQE 0x02 /* SQE interrupt enable */
#define FE_B14_SKIP 0x04 /* Skip a received packet */
#define FE_B14_RJAB 0x20 /* RJAB interrupt enable */
#define FE_B14_LLD 0x40 /* Local-link-down interrupt enable */
#define FE_B14_RLD 0x80 /* Remote-link-down interrupt enable */
/* BMPR15 -- More transmitter status; basically same layout as BMPR14 */
#define FE_B15_SQE FE_B14_SQE
#define FE_B15_RCVPOL 0x08 /* Reversed receive line polarity */
#define FE_B15_RMTPRT 0x10 /* ??? */
#define FE_B15_RAJB FE_B14_RJAB
#define FE_B15_LLD FE_B14_LLD
#define FE_B15_RLD FE_B14_RLD
/* BMPR16 -- EEPROM control */
#define FE_B16_DOUT 0x04 /* EEPROM Data in (CPU to EEPROM) */
#define FE_B16_SELECT 0x20 /* EEPROM chip select */
#define FE_B16_CLOCK 0x40 /* EEPROM shift clock */
#define FE_B16_DIN 0x80 /* EEPROM data out (EEPROM to CPU) */
/* BMPR17 -- EEPROM data */
#define FE_B17_DATA 0x80 /* EEPROM data bit */
/* BMPR18 -- cycle I/O address setting in JLI mode */
/* BMPR19 -- ISA interface configuration in JLI mode */
#define FE_B19_IRQ 0xC0
#define FE_B19_IRQ_SHIFT 6
#define FE_B19_ROM 0x38
#define FE_B19_ROM_SHIFT 3
#define FE_B19_ADDR 0x07
#define FE_B19_ADDR_SHIFT 0
/*
* An extra I/O port address to reset 86965. This location is called
* "ID ROM area" by Fujitsu document.
*/
/*
* Flags in Receive Packet Header... Basically same layout as DLCR1.
*/
#define FE_RPH_OVRFLO FE_D1_OVRFLO
#define FE_RPH_CRCERR FE_D1_CRCERR
#define FE_RPH_ALGERR FE_D1_ALGERR
#define FE_RPH_SRTPKT FE_D1_SRTPKT
#define FE_RPH_RMTRST FE_D1_RMTRST
#define FE_RPH_GOOD 0x20 /* Good packet follows */
/*
* EEPROM specification (of JLI mode).
*/
/* Number of bytes in an EEPROM accessible through 86965. */
#define FE_EEPROM_SIZE 32
/* Offset for JLI config; automatically copied into BMPR19 at startup. */
#define FE_EEPROM_CONF 0
/*
* Some 8696x specific constants.
*/
/* Length (in bytes) of a Multicast Address Filter. */
#define FE_FILTER_LEN 8
/* How many packets we can put in the transmission buffer on NIC memory. */
#define FE_QUEUEING_MAX 127
/* Length (in bytes) of a "packet length" word in transmission buffer. */
#define FE_DATA_LEN_LEN 2
/* Special Multicast Address Filter value. */
#define FE_FILTER_NOTHING { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }
#define FE_FILTER_ALL { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }

View file

@ -271,7 +271,6 @@ device wb # Winbond W89C840F
device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')
# ISA Ethernet NICs. pccard NICs included.
device fe # Fujitsu MB8696x based cards
device sn # SMC's 9000 series of Ethernet chips
device xe # Xircom pccard Ethernet

View file

@ -118,7 +118,6 @@ SUBDIR= \
ext2fs \
fdc \
fdescfs \
${_fe} \
${_ffec} \
filemon \
firewire \
@ -599,7 +598,6 @@ _dpms= dpms
_em= em
_et= et
_exca= exca
_fe= fe
_if_ndis= if_ndis
_io= io
_ix= ix

View file

@ -1,10 +0,0 @@
# $FreeBSD$
.PATH: ${SRCTOP}/sys/dev/fe
KMOD= if_fe
SRCS= if_fe.c if_fe_isa.c if_fe_pccard.c
SRCS+= bus_if.h card_if.h device_if.h isa_if.h pccarddevs.h
.include <bsd.kmod.mk>