FCP-101: Remove cs(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:22:45 +00:00
parent 9e774e5340
commit e1edf1240b
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=347909
13 changed files with 1 additions and 2323 deletions

View file

@ -40,6 +40,7 @@
# 20190518: Remove obsolete 10 and 10/100 ethernet drivers.
OLD_FILES+=usr/share/man/man4/bm.4
OLD_FILES+=usr/share/man/man4/cs.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

@ -6,7 +6,6 @@ MAN= apm.4 \
ce.4 \
cp.4 \
CPU_ELAN.4 \
cs.4 \
ctau.4 \
cx.4 \
ep.4 \

View file

@ -1,160 +0,0 @@
.\"
.\" Copyright (c) 1998 Michael Smith
.\" 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.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 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.
.\"
.\" $FreeBSD$
.\"
.Dd October 24 2018
.Dt CS 4 i386
.Os
.Sh NAME
.Nm cs
.Nd "Ethernet device driver"
.Sh SYNOPSIS
To compile this driver into the kernel,
place the following line in your
kernel configuration file:
.Bd -ragged -offset indent
.Cd "device cs"
.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_cs_load="YES"
.Ed
.Pp
In
.Pa /boot/device.hints :
.Cd hint.cs.0.at="isa"
.Cd hint.cs.0.port="0x300"
.Cd hint.cs.0.irq="10"
.Cd hint.cs.0.maddr="0xd000"
.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
driver provides support for ISA Ethernet adapters based on the
.Tn Crystal Semiconductor CS8900
and
.Tn CS8920
NICs.
These devices are used on the
.Tn IBM EtherJet ISA
adapters and in many embedded applications where the high integration, small
size and low cost of the CS89x0 family compensate for their drawbacks.
.Pp
The
.Nm
driver will obtain configuration parameters either from
.Pa /boot/device.hints
or from the card.
At least the I/O port number must be specified.
Other parameters specified in
.Pa /boot/device.hints
will be used if present;
the card may be soft-configured so these may be any valid
value.
Adapters based on the CS8920 normally offer PnP configuration and the driver
will detect the
.Tn IBM EtherJet
and the
.Tn CSC6040
adapters automatically.
.Pp
Note that the CS8900 is limited to 4 IRQ values; these are normally implemented
as 5, 10, 11 and 12.
The CS8920 has no such limitation.
.Pp
Memory-mapped and DMA operation are not supported at this time.
.Pp
In addition to the ISA devices, the PC Card devices based on the CS889x0
family are also supported.
The IBM EtherJet PCMCIA Card is the only known device based on this
chip.
The PC Card support does not need the above specific ISA hints to work.
The PC Card support may not work for 10base2 (thinnet) connections and may
bogusly claim to support 10base5 (there are no known cards that have an
AUI necessary for 10base5 support on their dongles).
.Sh DIAGNOSTICS
.Bl -diag
.It "cs%d: full/half duplex negotiation timeout"
The attempt to negotiate duplex settings with the hub timed out.
This may
indicate a cabling problem or a faulty or incompatible hub.
.It "cs%d: failed to enable <media>"
The CS89x0 failed to select the nominated media, either because it is not
present or not operating correctly.
.It "cs%d: No EEPROM, assuming defaults"
The CS89x0 does not have an EEPROM, or the EEPROM is hopelessly damaged.
Operation
will only be successful if the configuration entry lists suitable values for
the adapter.
.It "cs%d: Invalid irq"
The IRQ specified in the configuration entry is not valid for the adapter.
.It "cs%d: Could not allocate memory for NIC"
There is a critical memory shortage.
The adapter will not function.
.It "cs%d: Adapter has no media"
The adapter is not configured for a specific media type.
The media type will have
to be manually set.
.It "This is a %s, but LDN %d is disabled"
The PnP probe code found a recognised adapter, but the adapter is disabled.
.It "failed to read pnp parms"
A PnP adapter was found, but configuration parameters for it could not be read.
.It "failed to pnp card parameters"
The parameters obtained via PnP were not accepted by the driver.
The adapter
may not function.
.El
.Sh SEE ALSO
.Xr arp 4 ,
.Xr netintro 4 ,
.Xr ng_ether 4 ,
.Xr ifconfig 8
.Sh AUTHORS
.An -nosplit
The
.Nm
device driver was written by
.An Maxim Bolotin
and
.An Oleg Sharoiko .
This manpage was written by
.An Michael Smith .
.Sh CAVEATS
The CS89x0 family of adapters have a very small RAM buffer (4K).
This may
cause problems with extremely high network loads or bursty network traffic.
In particular, NFS operations should be limited to 1k read/write transactions
in order to avoid overruns.

View file

@ -1358,9 +1358,6 @@ dev/ciss/ciss.c optional ciss
dev/cmx/cmx.c optional cmx
dev/cmx/cmx_pccard.c optional cmx pccard
dev/cpufreq/ichss.c optional cpufreq pci
dev/cs/if_cs.c optional cs
dev/cs/if_cs_isa.c optional cs isa
dev/cs/if_cs_pccard.c optional cs pccard
dev/cxgb/cxgb_main.c optional cxgb pci \
compile-with "${NORMAL_C} -I$S/dev/cxgb"
dev/cxgb/cxgb_sge.c optional cxgb pci \

File diff suppressed because it is too large Load diff

View file

@ -1,123 +0,0 @@
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
* Copyright (c) 1997,1998 Maxim Bolotin and Oleg Sharoiko.
* 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 unmodified, 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.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 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.
*
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/lock.h>
#include <sys/kernel.h>
#include <sys/mutex.h>
#include <sys/socket.h>
#include <sys/module.h>
#include <sys/bus.h>
#include <machine/bus.h>
#include <machine/resource.h>
#include <net/ethernet.h>
#include <net/if.h>
#include <net/if_media.h>
#include <isa/isavar.h>
#include <dev/cs/if_csvar.h>
#include <dev/cs/if_csreg.h>
static int cs_isa_probe(device_t);
static int cs_isa_attach(device_t);
static struct isa_pnp_id cs_ids[] = {
{ 0x4060630e, NULL }, /* CSC6040 */
{ 0x10104d24, NULL }, /* IBM EtherJet */
{ 0, NULL }
};
/*
* Determine if the device is present
*/
static int
cs_isa_probe(device_t dev)
{
int error;
/* Check isapnp ids */
error = ISA_PNP_PROBE(device_get_parent(dev), dev, cs_ids);
/* If the card had a PnP ID that didn't match any we know about */
if (error == ENXIO)
goto end;
/* If we've matched, or there's no PNP ID, probe chip */
if (error == 0 || error == ENOENT)
error = cs_cs89x0_probe(dev);
end:
/* Make sure IRQ is assigned for probe message and available */
if (error == 0)
error = cs_alloc_irq(dev, 0);
cs_release_resources(dev);
return (error);
}
static int
cs_isa_attach(device_t dev)
{
struct cs_softc *sc = device_get_softc(dev);
cs_alloc_port(dev, 0, CS_89x0_IO_PORTS);
cs_alloc_irq(dev, sc->irq_rid);
return (cs_attach(dev));
}
static device_method_t cs_isa_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, cs_isa_probe),
DEVMETHOD(device_attach, cs_isa_attach),
DEVMETHOD(device_detach, cs_detach),
{ 0, 0 }
};
static driver_t cs_isa_driver = {
"cs",
cs_isa_methods,
sizeof(struct cs_softc),
};
extern devclass_t cs_devclass;
DRIVER_MODULE(cs, isa, cs_isa_driver, cs_devclass, 0, 0);
MODULE_DEPEND(cs, isa, 1, 1, 1);
MODULE_DEPEND(cs, ether, 1, 1, 1);
ISA_PNP_INFO(cs_ids);

View file

@ -1,121 +0,0 @@
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
* Copyright (c) 1999 M. Warner Losh <imp@village.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. 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.
*
* 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.
*
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/lock.h>
#include <sys/kernel.h>
#include <sys/mutex.h>
#include <sys/socket.h>
#include <sys/module.h>
#include <sys/bus.h>
#include <machine/bus.h>
#include <machine/resource.h>
#include <net/ethernet.h>
#include <net/if.h>
#include <net/if_media.h>
#include <dev/cs/if_csvar.h>
#include <dev/cs/if_csreg.h>
#include <dev/pccard/pccardvar.h>
#include <dev/pccard/pccard_cis.h>
#include "card_if.h"
#include "pccarddevs.h"
static const struct pccard_product cs_pccard_products[] = {
PCMCIA_CARD(IBM, ETHERJET),
{ NULL }
};
static int
cs_pccard_probe(device_t dev)
{
const struct pccard_product *pp;
uint32_t fcn = PCCARD_FUNCTION_UNSPEC;
/* Make sure we're a network function */
pccard_get_function(dev, &fcn);
if (fcn != PCCARD_FUNCTION_NETWORK)
return (ENXIO);
if ((pp = pccard_product_lookup(dev, cs_pccard_products,
sizeof(cs_pccard_products[0]), NULL)) != NULL) {
if (pp->pp_name != NULL)
device_set_desc(dev, pp->pp_name);
return 0;
}
return EIO;
}
static int
cs_pccard_attach(device_t dev)
{
struct cs_softc *sc = device_get_softc(dev);
int error;
sc->flags |= CS_NO_IRQ;
error = cs_cs89x0_probe(dev);
if (error != 0)
return (error);
error = cs_alloc_irq(dev, sc->irq_rid);
if (error != 0)
goto bad;
return (cs_attach(dev));
bad:
cs_release_resources(dev);
return (error);
}
static device_method_t cs_pccard_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, cs_pccard_probe),
DEVMETHOD(device_attach, cs_pccard_attach),
DEVMETHOD(device_detach, cs_detach),
{ 0, 0 }
};
static driver_t cs_pccard_driver = {
"cs",
cs_pccard_methods,
sizeof(struct cs_softc),
};
extern devclass_t cs_devclass;
DRIVER_MODULE(cs, pccard, cs_pccard_driver, cs_devclass, 0, 0);
MODULE_DEPEND(cs, ether, 1, 1, 1);
PCCARD_PNP_INFO(cs_pccard_products);

View file

@ -1,590 +0,0 @@
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
* Copyright (c) 1997,1998 Maxim Bolotin and Oleg Sharoiko.
* 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 unmodified, 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.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 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.
*
*/
/*
* $FreeBSD$
*/
#include <sys/rman.h>
#define CS_89x0_IO_PORTS 0x0020
#define PP_ChipID 0x0000 /* offset 0h -> Corp -ID */
/* offset 2h -> Model/Product Number */
/* offset 3h -> Chip Revision Number */
#define PP_ISAIOB 0x0020 /* IO base address */
#define PP_CS8900_ISAINT 0x0022 /* ISA interrupt select */
#define PP_CS8900_ISADMA 0x0024 /* ISA Rec DMA channel */
#define PP_CS8920_ISAINT 0x0370 /* ISA interrupt select */
#define PP_CS8920_ISADMA 0x0374 /* ISA Rec DMA channel */
#define PP_ISASOF 0x0026 /* ISA DMA offset */
#define PP_DmaFrameCnt 0x0028 /* ISA DMA Frame count */
#define PP_DmaByteCnt 0x002A /* ISA DMA Byte count */
#define PP_CS8920_ISAMemB 0x0348 /* Memory base */
/* EEPROM data and command registers */
#define PP_EECMD 0x0040 /* NVR Interface Command register */
#define PP_EEData 0x0042 /* NVR Interface Data Register */
#define PP_DebugReg 0x0044 /* Debug Register */
#define PP_RxCFG 0x0102 /* Rx Bus config */
#define PP_RxCTL 0x0104 /* Receive Control Register */
#define PP_TxCFG 0x0106 /* Transmit Config Register */
#define PP_TxCMD 0x0108 /* Transmit Command Register */
#define PP_BufCFG 0x010A /* Bus configuration Register */
#define PP_LineCTL 0x0112 /* Line Config Register */
#define PP_SelfCTL 0x0114 /* Self Command Register */
#define PP_BusCTL 0x0116 /* ISA bus control Register */
#define PP_TestCTL 0x0118 /* Test Register */
#define PP_AutoNegCTL 0x011C /* Auto Negotiation Ctrl */
#define PP_ISQ 0x0120 /* Interrupt Status */
#define PP_RxEvent 0x0124 /* Rx Event Register */
#define PP_TxEvent 0x0128 /* Tx Event Register */
#define PP_BufEvent 0x012C /* Bus Event Register */
#define PP_RxMiss 0x0130 /* Receive Miss Count */
#define PP_TxCol 0x0132 /* Transmit Collision Count */
#define PP_LineST 0x0134 /* Line State Register */
#define PP_SelfST 0x0136 /* Self State register */
#define PP_BusST 0x0138 /* Bus Status */
#define PP_TDR 0x013C /* Time Domain Reflectometry */
#define PP_AutoNegST 0x013E /* Auto Neg Status */
#define PP_TxCommand 0x0144 /* Tx Command */
#define PP_TxLength 0x0146 /* Tx Length */
#define PP_LAF 0x0150 /* Hash Table */
#define PP_IA 0x0158 /* Physical Address Register */
#define PP_RxStatus 0x0400 /* Receive start of frame */
#define PP_RxLength 0x0402 /* Receive Length of frame */
#define PP_RxFrame 0x0404 /* Receive frame pointer */
#define PP_TxFrame 0x0A00 /* Transmit frame pointer */
/*
* Primary I/O Base Address. If no I/O base is supplied by the user, then this
* can be used as the default I/O base to access the PacketPage Area.
*/
#define DEFAULTIOBASE 0x0300
#define FIRST_IO 0x020C /* First I/O port to check */
#define LAST_IO 0x037C /* Last I/O port to check (+10h) */
#define ADD_MASK 0x3000 /* Mask it use of the ADD_PORT register */
#define ADD_SIG 0x3000 /* Expected ID signature */
#define CHIP_EISA_ID_SIG 0x630E /* Product ID Code for Crystal Chip (CS8900 spec 4.3) */
#define PRODUCT_ID_ADD 0x0002 /* Address of product ID */
/* Mask to find out the types of registers */
#define REG_TYPE_MASK 0x001F
/* Eeprom Commands */
#define ERSE_WR_ENBL 0x00F0
#define ERSE_WR_DISABLE 0x0000
/* Defines Control/Config register quintuplet numbers */
#define RX_BUF_CFG 0x0003
#define RX_CONTROL 0x0005
#define TX_CFG 0x0007
#define TX_COMMAND 0x0009
#define BUF_CFG 0x000B
#define LINE_CONTROL 0x0013
#define SELF_CONTROL 0x0015
#define BUS_CONTROL 0x0017
#define TEST_CONTROL 0x0019
/* Defines Status/Count registers quintuplet numbers */
#define RX_EVENT 0x0004
#define TX_EVENT 0x0008
#define BUF_EVENT 0x000C
#define RX_MISS_COUNT 0x0010
#define TX_COL_COUNT 0x0012
#define LINE_STATUS 0x0014
#define SELF_STATUS 0x0016
#define BUS_STATUS 0x0018
#define TDR 0x001C
/*
* PP_RxCFG - Receive Configuration and Interrupt Mask
* bit definition - Read/write
*/
#define SKIP_1 0x0040
#define RX_STREAM_ENBL 0x0080
#define RX_OK_ENBL 0x0100
#define RX_DMA_ONLY 0x0200
#define AUTO_RX_DMA 0x0400
#define BUFFER_CRC 0x0800
#define RX_CRC_ERROR_ENBL 0x1000
#define RX_RUNT_ENBL 0x2000
#define RX_EXTRA_DATA_ENBL 0x4000
/* PP_RxCTL - Receive Control bit definition - Read/write */
#define RX_IA_HASH_ACCEPT 0x0040
#define RX_PROM_ACCEPT 0x0080
#define RX_OK_ACCEPT 0x0100
#define RX_MULTCAST_ACCEPT 0x0200
#define RX_IA_ACCEPT 0x0400
#define RX_BROADCAST_ACCEPT 0x0800
#define RX_BAD_CRC_ACCEPT 0x1000
#define RX_RUNT_ACCEPT 0x2000
#define RX_EXTRA_DATA_ACCEPT 0x4000
#define RX_ALL_ACCEPT (RX_PROM_ACCEPT | RX_BAD_CRC_ACCEPT | \
RX_RUNT_ACCEPT | RX_EXTRA_DATA_ACCEPT)
/*
* Default receive mode - individually addressed, broadcast, and error free
*/
#define RX_DEF_ACCEPT (RX_IA_ACCEPT | RX_BROADCAST_ACCEPT | RX_OK_ACCEPT)
/*
* PP_TxCFG - Transmit Configuration Interrupt Mask
* bit definition - Read/write
*/
#define TX_LOST_CRS_ENBL 0x0040
#define TX_SQE_ERROR_ENBL 0x0080
#define TX_OK_ENBL 0x0100
#define TX_LATE_COL_ENBL 0x0200
#define TX_JBR_ENBL 0x0400
#define TX_ANY_COL_ENBL 0x0800
#define TX_16_COL_ENBL 0x8000
/*
* PP_TxCMD - Transmit Command bit definition - Read-only
*/
#define TX_START_4_BYTES 0x0000
#define TX_START_64_BYTES 0x0040
#define TX_START_128_BYTES 0x0080
#define TX_START_ALL_BYTES 0x00C0
#define TX_FORCE 0x0100
#define TX_ONE_COL 0x0200
#define TX_TWO_PART_DEFF_DISABLE 0x0400
#define TX_NO_CRC 0x1000
#define TX_RUNT 0x2000
/*
* PP_BufCFG - Buffer Configuration Interrupt Mask
* bit definition - Read/write
*/
#define GENERATE_SW_INTERRUPT 0x0040
#define RX_DMA_ENBL 0x0080
#define READY_FOR_TX_ENBL 0x0100
#define TX_UNDERRUN_ENBL 0x0200
#define RX_MISS_ENBL 0x0400
#define RX_128_BYTE_ENBL 0x0800
#define TX_COL_COUNT_OVRFLOW_ENBL 0x1000
#define RX_MISS_COUNT_OVRFLOW_ENBL 0x2000
#define RX_DEST_MATCH_ENBL 0x8000
/*
* PP_LineCTL - Line Control bit definition - Read/write
*/
#define SERIAL_RX_ON 0x0040
#define SERIAL_TX_ON 0x0080
#define AUI_ONLY 0x0100
#define AUTO_AUI_10BASET 0x0200
#define MODIFIED_BACKOFF 0x0800
#define NO_AUTO_POLARITY 0x1000
#define TWO_PART_DEFDIS 0x2000
#define LOW_RX_SQUELCH 0x4000
/*
* PP_SelfCTL - Software Self Control bit definition - Read/write
*/
#define POWER_ON_RESET 0x0040
#define SW_STOP 0x0100
#define SLEEP_ON 0x0200
#define AUTO_WAKEUP 0x0400
#define HCB0_ENBL 0x1000
#define HCB1_ENBL 0x2000
#define HCB0 0x4000
#define HCB1 0x8000
/*
* PP_BusCTL - ISA Bus Control bit definition - Read/write
*/
#define RESET_RX_DMA 0x0040
#define MEMORY_ON 0x0400
#define DMA_BURST_MODE 0x0800
#define IO_CHANNEL_READY_ON 0x1000
#define RX_DMA_SIZE_64Ks 0x2000
#define ENABLE_IRQ 0x8000
/*
* PP_TestCTL - Test Control bit definition - Read/write
*/
#define LINK_OFF 0x0080
#define ENDEC_LOOPBACK 0x0200
#define AUI_LOOPBACK 0x0400
#define BACKOFF_OFF 0x0800
#define FAST_TEST 0x8000
/*
* PP_RxEvent - Receive Event Bit definition - Read-only
*/
#define RX_IA_HASHED 0x0040
#define RX_DRIBBLE 0x0080
#define RX_OK 0x0100
#define RX_HASHED 0x0200
#define RX_IA 0x0400
#define RX_BROADCAST 0x0800
#define RX_CRC_ERROR 0x1000
#define RX_RUNT 0x2000
#define RX_EXTRA_DATA 0x4000
#define HASH_INDEX_MASK 0x0FC00
/*
* PP_TxEvent - Transmit Event Bit definition - Read-only
*/
#define TX_LOST_CRS 0x0040
#define TX_SQE_ERROR 0x0080
#define TX_OK 0x0100
#define TX_LATE_COL 0x0200
#define TX_JBR 0x0400
#define TX_16_COL 0x8000
#define TX_SEND_OK_BITS (TX_OK | TX_LOST_CRS)
#define TX_COL_COUNT_MASK 0x7800
/*
* PP_BufEvent - Buffer Event Bit definition - Read-only
*/
#define SW_INTERRUPT 0x0040
#define RX_DMA 0x0080
#define READY_FOR_TX 0x0100
#define TX_UNDERRUN 0x0200
#define RX_MISS 0x0400
#define RX_128_BYTE 0x0800
#define TX_COL_OVRFLW 0x1000
#define RX_MISS_OVRFLW 0x2000
#define RX_DEST_MATCH 0x8000
/*
* PP_LineST - Ethernet Line Status bit definition - Read-only
*/
#define LINK_OK 0x0080
#define AUI_ON 0x0100
#define TENBASET_ON 0x0200
#define POLARITY_OK 0x1000
#define CRS_OK 0x4000
/*
* PP_SelfST - Chip Software Status bit definition
*/
#define ACTIVE_33V 0x0040
#define INIT_DONE 0x0080
#define SI_BUSY 0x0100
#define EEPROM_PRESENT 0x0200
#define EEPROM_OK 0x0400
#define EL_PRESENT 0x0800
#define EE_SIZE_64 0x1000
/*
* PP_BusST - ISA Bus Status bit definition
*/
#define TX_BID_ERROR 0x0080
#define READY_FOR_TX_NOW 0x0100
/*
* PP_AutoNegCTL - Auto Negotiation Control bit definition
*/
#define RE_NEG_NOW 0x0040
#define ALLOW_FDX 0x0080
#define AUTO_NEG_ENABLE 0x0100
#define NLP_ENABLE 0x0200
#define FORCE_FDX 0x8000
#define AUTO_NEG_BITS (FORCE_FDX | NLP_ENABLE | AUTO_NEG_ENABLE)
#define AUTO_NEG_MASK (FORCE_FDX | NLP_ENABLE | AUTO_NEG_ENABLE | \
ALLOW_FDX | RE_NEG_NOW)
/*
* PP_AutoNegST - Auto Negotiation Status bit definition
*/
#define AUTO_NEG_BUSY 0x0080
#define FLP_LINK 0x0100
#define FLP_LINK_GOOD 0x0800
#define LINK_FAULT 0x1000
#define HDX_ACTIVE 0x4000
#define FDX_ACTIVE 0x8000
/*
* The following block defines the ISQ event types
*/
#define ISQ_RECEIVER_EVENT 0x04
#define ISQ_TRANSMITTER_EVENT 0x08
#define ISQ_BUFFER_EVENT 0x0c
#define ISQ_RX_MISS_EVENT 0x10
#define ISQ_TX_COL_EVENT 0x12
#define ISQ_EVENT_MASK 0x003F /* ISQ mask to find out type of event */
#define ISQ_HIST 16 /* small history buffer */
#define AUTOINCREMENT 0x8000 /* Bit mask to set bit-15 for autoincrement */
#define TXRXBUFSIZE 0x0600
#define RXDMABUFSIZE 0x8000
#define RXDMASIZE 0x4000
#define TXRX_LENGTH_MASK 0x07FF
/* rx options bits */
#define RCV_WITH_RXON 1 /* Set SerRx ON */
#define RCV_COUNTS 2 /* Use Framecnt1 */
#define RCV_PONG 4 /* Pong respondent */
#define RCV_DONG 8 /* Dong operation */
#define RCV_POLLING 0x10 /* Poll RxEvent */
#define RCV_ISQ 0x20 /* Use ISQ, int */
#define RCV_AUTO_DMA 0x100 /* Set AutoRxDMAE */
#define RCV_DMA 0x200 /* Set RxDMA only */
#define RCV_DMA_ALL 0x400 /* Copy all DMA'ed */
#define RCV_FIXED_DATA 0x800 /* Every frame same */
#define RCV_IO 0x1000 /* Use ISA IO only */
#define RCV_MEMORY 0x2000 /* Use ISA Memory */
#define RAM_SIZE 0x1000 /* The card has 4k bytes or RAM */
#define PKT_START PP_TxFrame /* Start of packet RAM */
#define RX_FRAME_PORT 0x0000
#define TX_FRAME_PORT RX_FRAME_PORT
#define TX_CMD_PORT 0x0004
#define TX_CS8900_NOW 0x0000 /* Tx packet after 5 bytes copied */
#define TX_CS8900_AFTER_381 0x0020 /* Tx packet after 381 bytes copied */
#define TX_CS8900_AFTER_ALL 0x0060 /* Tx packet after all bytes copied */
#define TX_CS8920_NOW 0x0000 /* Tx packet after 5 bytes copied */
#define TX_CS8920_AFTER_381 0x0040 /* Tx packet after 381 bytes copied */
#define TX_CS8920_AFTER_1021 0x0080 /* Tx packet after1021 bytes copied */
#define TX_CS8920_AFTER_ALL 0x00C0 /* Tx packet after all bytes copied */
#define TX_LEN_PORT 0x0006
#define ISQ_PORT 0x0008
#define ADD_PORT 0x000A
#define DATA_PORT 0x000C
#define EEPROM_WRITE_EN 0x00F0
#define EEPROM_WRITE_DIS 0x0000
#define EEPROM_WRITE_CMD 0x0100
#define EEPROM_READ_CMD 0x0200
/* Receive Header
* Description of header of each packet in receive area of memory
*/
#define RBUF_EVENT_LOW 0 /* Low byte of RxEvent - status of received frame */
#define RBUF_EVENT_HIGH 1 /* High byte of RxEvent - status of received frame */
#define RBUF_LEN_LOW 2 /* Length of received data - low byte */
#define RBUF_LEN_HI 3 /* Length of received data - high byte */
#define RBUF_HEAD_LEN 4 /* Length of this header */
#define CHIP_READ 0x1 /* Used to mark state of the repins code (chip or dma) */
#define DMA_READ 0x2 /* Used to mark state of the repins code (chip or dma) */
/* for bios scan */
/* */
#ifdef CSDEBUG
/* use these values for debugging bios scan */
#define BIOS_START_SEG 0x00000
#define BIOS_OFFSET_INC 0x0010
#else
#define BIOS_START_SEG 0x0c000
#define BIOS_OFFSET_INC 0x0200
#endif
#define BIOS_LAST_OFFSET 0x0fc00
/*
* Word offsets into the EEPROM configuration buffer
*/
#define ISA_CNF_OFFSET 0x3
#define INT_NO_MASK 0x000F
#define DMA_NO_MASK 0x0070
#define USE_SA 0x0080
#define IOCHRDY_ENABLE 0x0100
#define ISA_DMA_SIZE 0x0200 /* 0 16k 1 64k */
#define ISA_AUTO_RxDMA 0x0400
#define ISA_RxDMA 0x0800
#define DMA_BURST 0x1000
#define STREAM_TRANSFER 0x2000
#define ANY_ISA_DMA (ISA_AUTO_RxDMA | ISA_RxDMA)
#define BOOT_PROM_FLAG 0x4000
#define MEMORY_MODE 0x8000
#define PACKET_PAGE_BASE (ISA_CNF_OFFSET + 1)
#define BOOT_ROM_BASE (ISA_CNF_OFFSET + 2)
#define BOOT_PROM_MASK (ISA_CNF_OFFSET + 3)
#define TX_CTL_OFFSET (ISA_CNF_OFFSET + 4) /* 8900 eeprom */
#define AUTO_NEG_CNF_OFFSET (ISA_CNF_OFFSET + 4) /* 8920 eeprom */
/*
* the assumption here is that the bits in the eeprom are generally
* in the same position as those in the autonegctl register.
* Of course the IMM bit is not in that register so it must be
* masked out
*/
#define EE_FORCE_FDX 0x8000
#define EE_NLP_ENABLE 0x0200
#define EE_AUTO_NEG_ENABLE 0x0100
#define EE_ALLOW_FDX 0x0080
#define EE_AUTO_NEG_CNF_MASK (EE_FORCE_FDX | EE_NLP_ENABLE | \
EE_AUTO_NEG_ENABLE | EE_ALLOW_FDX)
#define IMM_BIT 0x0040 /* ignore missing media */
#define ADAPTER_CNF_OFFSET (ISA_CNF_OFFSET + 5)
#define A_CNF_MEDIA 0x0007
#define A_CNF_10B_T 0x0001
#define A_CNF_AUI 0x0002
#define A_CNF_10B_2 0x0004
#define A_CNF_MEDIA_TYPE 0x0060
#define A_CNF_MEDIA_AUTO 0x0000
#define A_CNF_MEDIA_10B_T 0x0020
#define A_CNF_MEDIA_AUI 0x0040
#define A_CNF_MEDIA_10B_2 0x0060
#define A_CNF_DC_DC_POLARITY 0x0080
#define A_CNF_WAKE_ENABLED 0x0100
#define A_CNF_WAKE_CFG 0x0200
#define A_CNF_CAN_WAKE 0x0400
#define A_CNF_OPT_FLAGS 0x1800 /* 00 server, 01 DOS 10 multi-user */
#define A_CNF_NO_AUTO_POLARITY 0x2000
#define A_CNF_LOW_RX_SQUELCH 0x4000
#define A_CNF_EXTND_10B_2 0x8000
#define MFG_DATE_OFFSET (ISA_CNF_OFFSET + 8)
#define PACKET_PAGE_OFFSET 0x8
/* DMA controller registers */
#define DMA_BASE 0x00 /* DMA controller base */
#define DMA_BASE_2 0x0C0 /* DMA controller base */
#define DMA_STAT 0x0D0 /* DMA controller status register */
#define DMA_MASK 0x0D4 /* DMA controller mask register */
#define DMA_MODE 0x0D6 /* DMA controller mode register */
#define DMA_RESETFF 0x0D8 /* DMA controller first/last flip flop */
/* DMA data */
#define DMA_DISABLE 0x04 /* Disable channel n */
#define DMA_ENABLE 0x00 /* Enable channel n */
/* Demand transfers, incr. address, auto init, writes, ch. n */
#define DMA_RX_MODE 0x14
/* Demand transfers, incr. address, auto init, reads, ch. n */
#define DMA_TX_MODE 0x18
#define DMA_SIZE (16*1024) /* Size of dma buffer - 16k */
#define CS8900 0x0000
#define CS8920 0x4000
#define CS8920M 0x6000
#define REVISON_BITS 0x1F00
#define EEVER_NUMBER 0x12
#define CHKSUM_LEN 0x14
#define CHKSUM_VAL 0x0000
#define START_EEPROM_DATA 0x001c /* Offset into eeprom for start of data */
#define IRQ_MAP_EEPROM_DATA 0x0046 /* Offset into eeprom for the IRQ map */
#define IRQ_MAP_LEN 0x0004 /* No of bytes to read for the IRQ map */
#define PNP_IRQ_FRMT 0x0022 /* PNP small item IRQ format */
#define CS8900_IRQ_MAP 0x1c20 /* This IRQ map is fixed */
#define CS8920_NO_INTS 0x0F /* Max CS8920 interrupt select # */
#define PNP_ADD_PORT 0x0279
#define PNP_WRITE_PORT 0x0A79
#define GET_PNP_ISA_STRUCT 0x40
#define PNP_ISA_STRUCT_LEN 0x06
#define PNP_CSN_CNT_OFF 0x01
#define PNP_RD_PORT_OFF 0x02
#define PNP_FUNCTION_OK 0x00
#define PNP_WAKE 0x03
#define PNP_RSRC_DATA 0x04
#define PNP_RSRC_READY 0x01
#define PNP_STATUS 0x05
#define PNP_ACTIVATE 0x30
#define PNP_CNF_IO_H 0x60
#define PNP_CNF_IO_L 0x61
#define PNP_CNF_INT 0x70
#define PNP_CNF_DMA 0x74
#define PNP_CNF_MEM 0x48
#define BIT0 1
#define BIT15 0x8000
#define CS_DUPLEX_AUTO 0
#define CS_DUPLEX_FULL 1
#define CS_DUPLEX_HALF 2
/*
* It would appear that for pccards (well, the IBM EtherJet PCMCIA card) that
* are connected to card bus bridges there's a problem. For reading the
* value back you have to go into 8 bit mode. The Linux driver also uses
* this trick. This may be a bug in the card and how it handles fast 16-bit
* read after a write.
*/
#define HACK_FOR_CARDBUS_BRIDGE_PROBLEM
#ifdef HACK_FOR_CARDBUS_BRIDGE_PROBLEM
static __inline uint16_t
cs_inw(struct cs_softc *sc, int off)
{
if (off & 1)
device_printf(sc->dev, "BUG: inw to an odd address.\n");
return ((bus_read_1(sc->port_res, off)) |
(bus_read_1(sc->port_res, off + 1) << 8));
}
#else
static __inline uint16_t
cs_inw(struct cs_softc *sc, int off)
{
return (bus_read_2(sc->port_res, off));
}
#endif
static __inline void
cs_outw(struct cs_softc *sc, int off, uint16_t val)
{
bus_write_2(sc->port_res, off, val);
}
static __inline uint16_t
cs_readreg(struct cs_softc *sc, uint16_t port)
{
cs_outw(sc, ADD_PORT, port);
return (cs_inw(sc, DATA_PORT));
}
static __inline void
cs_writereg(struct cs_softc *sc, uint16_t port, uint16_t val)
{
cs_outw(sc, ADD_PORT, port);
cs_outw(sc, DATA_PORT, val);
}
static __inline void
reset_chip(struct cs_softc *sc)
{
cs_writereg(sc, PP_SelfCTL,
cs_readreg(sc, PP_SelfCTL) | POWER_ON_RESET);
}
#define cs_duplex_full(sc) \
(cs_writereg(sc, PP_AutoNegCTL, FORCE_FDX))
#define cs_duplex_half(sc) \
(cs_writereg(sc, PP_AutoNegCTL, NLP_ENABLE))

View file

@ -1,82 +0,0 @@
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
* Copyright (c) 1999 M. Warner Losh <imp@village.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. 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.
*
* 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.
*
* $FreeBSD$
*/
#ifndef _IF_CSVAR_H
#define _IF_CSVAR_H
/*
* cs_softc: per line info and status
*/
struct cs_softc {
/* Ethernet common code */
struct ifnet *ifp;
device_t dev;
/* Configuration words from EEPROM */
int auto_neg_cnf; /* AutoNegotitation configuration */
int adapter_cnf; /* Adapter configuration */
int isa_config; /* ISA configuration */
int chip_type; /* Type of chip */
u_char enaddr[ETHER_ADDR_LEN];
struct ifmedia media; /* Media information */
int port_rid; /* resource id for port range */
struct resource* port_res; /* resource for port range */
int irq_rid; /* resource id for irq */
struct resource* irq_res; /* resource for irq */
void* irq_handle; /* handle for irq handler */
int flags;
#define CS_NO_IRQ 0x1
int send_cmd;
int line_ctl; /* */
int send_underrun;
void *recv_ring;
unsigned char *buffer;
int buf_len;
struct mtx lock;
struct callout timer;
int tx_timeout;
};
#define CS_LOCK(sc) mtx_lock(&(sc)->lock)
#define CS_UNLOCK(sc) mtx_unlock(&(sc)->lock)
#define CS_ASSERT_LOCKED(sc) mtx_assert(&(sc)->lock, MA_OWNED)
int cs_alloc_port(device_t dev, int rid, int size);
int cs_alloc_irq(device_t dev, int rid);
int cs_attach(device_t dev);
int cs_cs89x0_probe(device_t dev);
int cs_detach(device_t dev);
void cs_release_resources(device_t dev);
#endif /* _IF_CSVAR_H */

View file

@ -272,7 +272,6 @@ device wb # Winbond W89C840F
device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')
# ISA Ethernet NICs. pccard NICs included.
device cs # Crystal Semiconductor CS89x0 NIC
# 'device ed' requires 'device miibus'
device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards
device ex # Intel EtherExpress Pro/10 and Pro/10+

View file

@ -502,7 +502,6 @@ device cpufreq
# V.35/RS-232/RS-530/RS-449/X.21/G.703/E1/E3/T3/STS-1
# serial adaptor (requires sppp (default), or NETGRAPH if
# NETGRAPH_CRONYX is configured)
# cs: IBM Etherjet and other Crystal Semi CS89x0-based adapters
# ctau: Cronyx Tau sync dual port V.35/RS-232/RS-530/RS-449/X.21/G.703/E1
# serial adaptor (requires sppp (default), or NETGRAPH if
# NETGRAPH_CRONYX is configured)
@ -529,7 +528,6 @@ device cpufreq
device bxe # Broadcom NetXtreme II BCM5771X/BCM578XX 10GbE
device ce
device cp
device cs # Crystal Semiconductor CS89x0 NIC
hint.cs.0.at="isa"
hint.cs.0.port="0x300"
device ctau

View file

@ -98,7 +98,6 @@ SUBDIR= \
${_cpufreq} \
${_crypto} \
${_cryptodev} \
${_cs} \
${_ctau} \
ctl \
${_cxgb} \
@ -600,7 +599,6 @@ _cardbus= cardbus
_cbb= cbb
_cpuctl= cpuctl
_cpufreq= cpufreq
_cs= cs
_dpms= dpms
_ed= ed
_em= em

View file

@ -1,9 +0,0 @@
# $FreeBSD$
.PATH: ${SRCTOP}/sys/dev/cs
KMOD= if_cs
SRCS= if_cs.c if_cs_isa.c if_cs_pccard.c
SRCS+= bus_if.h card_if.h device_if.h isa_if.h pccarddevs.h
.include <bsd.kmod.mk>