| NOTE | |
| ---- | |
| This document was contributed by Cirrus Logic for kernel 2.2.5. This version | |
| has been updated for 2.3.48 by Andrew Morton. | |
| Cirrus make a copy of this driver available at their website, as | |
| described below. In general, you should use the driver version which | |
| comes with your Linux distribution. | |
| CIRRUS LOGIC LAN CS8900/CS8920 ETHERNET ADAPTERS | |
| Linux Network Interface Driver ver. 2.00 <kernel 2.3.48> | |
| =============================================================================== | |
| TABLE OF CONTENTS | |
| 1.0 CIRRUS LOGIC LAN CS8900/CS8920 ETHERNET ADAPTERS | |
| 1.1 Product Overview | |
| 1.2 Driver Description | |
| 1.2.1 Driver Name | |
| 1.2.2 File in the Driver Package | |
| 1.3 System Requirements | |
| 1.4 Licensing Information | |
| 2.0 ADAPTER INSTALLATION and CONFIGURATION | |
| 2.1 CS8900-based Adapter Configuration | |
| 2.2 CS8920-based Adapter Configuration | |
| 3.0 LOADING THE DRIVER AS A MODULE | |
| 4.0 COMPILING THE DRIVER | |
| 4.1 Compiling the Driver as a Loadable Module | |
| 4.2 Compiling the driver to support memory mode | |
| 4.3 Compiling the driver to support Rx DMA | |
| 5.0 TESTING AND TROUBLESHOOTING | |
| 5.1 Known Defects and Limitations | |
| 5.2 Testing the Adapter | |
| 5.2.1 Diagnostic Self-Test | |
| 5.2.2 Diagnostic Network Test | |
| 5.3 Using the Adapter's LEDs | |
| 5.4 Resolving I/O Conflicts | |
| 6.0 TECHNICAL SUPPORT | |
| 6.1 Contacting Cirrus Logic's Technical Support | |
| 6.2 Information Required Before Contacting Technical Support | |
| 6.3 Obtaining the Latest Driver Version | |
| 6.4 Current maintainer | |
| 6.5 Kernel boot parameters | |
| 1.0 CIRRUS LOGIC LAN CS8900/CS8920 ETHERNET ADAPTERS | |
| =============================================================================== | |
| 1.1 PRODUCT OVERVIEW | |
| The CS8900-based ISA Ethernet Adapters from Cirrus Logic follow | |
| IEEE 802.3 standards and support half or full-duplex operation in ISA bus | |
| computers on 10 Mbps Ethernet networks. The adapters are designed for operation | |
| in 16-bit ISA or EISA bus expansion slots and are available in | |
| 10BaseT-only or 3-media configurations (10BaseT, 10Base2, and AUI for 10Base-5 | |
| or fiber networks). | |
| CS8920-based adapters are similar to the CS8900-based adapter with additional | |
| features for Plug and Play (PnP) support and Wakeup Frame recognition. As | |
| such, the configuration procedures differ somewhat between the two types of | |
| adapters. Refer to the "Adapter Configuration" section for details on | |
| configuring both types of adapters. | |
| 1.2 DRIVER DESCRIPTION | |
| The CS8900/CS8920 Ethernet Adapter driver for Linux supports the Linux | |
| v2.3.48 or greater kernel. It can be compiled directly into the kernel | |
| or loaded at run-time as a device driver module. | |
| 1.2.1 Driver Name: cs89x0 | |
| 1.2.2 Files in the Driver Archive: | |
| The files in the driver at Cirrus' website include: | |
| readme.txt - this file | |
| build - batch file to compile cs89x0.c. | |
| cs89x0.c - driver C code | |
| cs89x0.h - driver header file | |
| cs89x0.o - pre-compiled module (for v2.2.5 kernel) | |
| config/Config.in - sample file to include cs89x0 driver in the kernel. | |
| config/Makefile - sample file to include cs89x0 driver in the kernel. | |
| config/Space.c - sample file to include cs89x0 driver in the kernel. | |
| 1.3 SYSTEM REQUIREMENTS | |
| The following hardware is required: | |
| * Cirrus Logic LAN (CS8900/20-based) Ethernet ISA Adapter | |
| * IBM or IBM-compatible PC with: | |
| * An 80386 or higher processor | |
| * 16 bytes of contiguous IO space available between 210h - 370h | |
| * One available IRQ (5,10,11,or 12 for the CS8900, 3-7,9-15 for CS8920). | |
| * Appropriate cable (and connector for AUI, 10BASE-2) for your network | |
| topology. | |
| The following software is required: | |
| * LINUX kernel version 2.3.48 or higher | |
| * CS8900/20 Setup Utility (DOS-based) | |
| * LINUX kernel sources for your kernel (if compiling into kernel) | |
| * GNU Toolkit (gcc and make) v2.6 or above (if compiling into kernel | |
| or a module) | |
| 1.4 LICENSING INFORMATION | |
| This program is free software; you can redistribute it and/or modify it under | |
| the terms of the GNU General Public License as published by the Free Software | |
| Foundation, version 1. | |
| This program is distributed in the hope that it will be useful, but WITHOUT | |
| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | |
| more details. | |
| For a full copy of the GNU General Public License, write to the Free Software | |
| Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
| 2.0 ADAPTER INSTALLATION and CONFIGURATION | |
| =============================================================================== | |
| Both the CS8900 and CS8920-based adapters can be configured using parameters | |
| stored in an on-board EEPROM. You must use the DOS-based CS8900/20 Setup | |
| Utility if you want to change the adapter's configuration in EEPROM. | |
| When loading the driver as a module, you can specify many of the adapter's | |
| configuration parameters on the command-line to override the EEPROM's settings | |
| or for interface configuration when an EEPROM is not used. (CS8920-based | |
| adapters must use an EEPROM.) See Section 3.0 LOADING THE DRIVER AS A MODULE. | |
| Since the CS8900/20 Setup Utility is a DOS-based application, you must install | |
| and configure the adapter in a DOS-based system using the CS8900/20 Setup | |
| Utility before installation in the target LINUX system. (Not required if | |
| installing a CS8900-based adapter and the default configuration is acceptable.) | |
| 2.1 CS8900-BASED ADAPTER CONFIGURATION | |
| CS8900-based adapters shipped from Cirrus Logic have been configured | |
| with the following "default" settings: | |
| Operation Mode: Memory Mode | |
| IRQ: 10 | |
| Base I/O Address: 300 | |
| Memory Base Address: D0000 | |
| Optimization: DOS Client | |
| Transmission Mode: Half-duplex | |
| BootProm: None | |
| Media Type: Autodetect (3-media cards) or | |
| 10BASE-T (10BASE-T only adapter) | |
| You should only change the default configuration settings if conflicts with | |
| another adapter exists. To change the adapter's configuration, run the | |
| CS8900/20 Setup Utility. | |
| 2.2 CS8920-BASED ADAPTER CONFIGURATION | |
| CS8920-based adapters are shipped from Cirrus Logic configured as Plug | |
| and Play (PnP) enabled. However, since the cs89x0 driver does NOT | |
| support PnP, you must install the CS8920 adapter in a DOS-based PC and | |
| run the CS8900/20 Setup Utility to disable PnP and configure the | |
| adapter before installation in the target Linux system. Failure to do | |
| this will leave the adapter inactive and the driver will be unable to | |
| communicate with the adapter. | |
| **************************************************************** | |
| * CS8920-BASED ADAPTERS: * | |
| * * | |
| * CS8920-BASED ADAPTERS ARE PLUG and PLAY ENABLED BY DEFAULT. * | |
| * THE CS89X0 DRIVER DOES NOT SUPPORT PnP. THEREFORE, YOU MUST * | |
| * RUN THE CS8900/20 SETUP UTILITY TO DISABLE PnP SUPPORT AND * | |
| * TO ACTIVATE THE ADAPTER. * | |
| **************************************************************** | |
| 3.0 LOADING THE DRIVER AS A MODULE | |
| =============================================================================== | |
| If the driver is compiled as a loadable module, you can load the driver module | |
| with the 'modprobe' command. Many of the adapter's configuration parameters can | |
| be specified as command-line arguments to the load command. This facility | |
| provides a means to override the EEPROM's settings or for interface | |
| configuration when an EEPROM is not used. | |
| Example: | |
| insmod cs89x0.o io=0x200 irq=0xA media=aui | |
| This example loads the module and configures the adapter to use an IO port base | |
| address of 200h, interrupt 10, and use the AUI media connection. The following | |
| configuration options are available on the command line: | |
| * io=### - specify IO address (200h-360h) | |
| * irq=## - specify interrupt level | |
| * use_dma=1 - Enable DMA | |
| * dma=# - specify dma channel (Driver is compiled to support | |
| Rx DMA only) | |
| * dmasize=# (16 or 64) - DMA size 16K or 64K. Default value is set to 16. | |
| * media=rj45 - specify media type | |
| or media=bnc | |
| or media=aui | |
| or media=auto | |
| * duplex=full - specify forced half/full/autonegotiate duplex | |
| or duplex=half | |
| or duplex=auto | |
| * debug=# - debug level (only available if the driver was compiled | |
| for debugging) | |
| NOTES: | |
| a) If an EEPROM is present, any specified command-line parameter | |
| will override the corresponding configuration value stored in | |
| EEPROM. | |
| b) The "io" parameter must be specified on the command-line. | |
| c) The driver's hardware probe routine is designed to avoid | |
| writing to I/O space until it knows that there is a cs89x0 | |
| card at the written addresses. This could cause problems | |
| with device probing. To avoid this behaviour, add one | |
| to the `io=' module parameter. This doesn't actually change | |
| the I/O address, but it is a flag to tell the driver | |
| to partially initialise the hardware before trying to | |
| identify the card. This could be dangerous if you are | |
| not sure that there is a cs89x0 card at the provided address. | |
| For example, to scan for an adapter located at IO base 0x300, | |
| specify an IO address of 0x301. | |
| d) The "duplex=auto" parameter is only supported for the CS8920. | |
| e) The minimum command-line configuration required if an EEPROM is | |
| not present is: | |
| io | |
| irq | |
| media type (no autodetect) | |
| f) The following additional parameters are CS89XX defaults (values | |
| used with no EEPROM or command-line argument). | |
| * DMA Burst = enabled | |
| * IOCHRDY Enabled = enabled | |
| * UseSA = enabled | |
| * CS8900 defaults to half-duplex if not specified on command-line | |
| * CS8920 defaults to autoneg if not specified on command-line | |
| * Use reset defaults for other config parameters | |
| * dma_mode = 0 | |
| g) You can use ifconfig to set the adapter's Ethernet address. | |
| h) Many Linux distributions use the 'modprobe' command to load | |
| modules. This program uses the '/etc/conf.modules' file to | |
| determine configuration information which is passed to a driver | |
| module when it is loaded. All the configuration options which are | |
| described above may be placed within /etc/conf.modules. | |
| For example: | |
| > cat /etc/conf.modules | |
| ... | |
| alias eth0 cs89x0 | |
| options cs89x0 io=0x0200 dma=5 use_dma=1 | |
| ... | |
| In this example we are telling the module system that the | |
| ethernet driver for this machine should use the cs89x0 driver. We | |
| are asking 'modprobe' to pass the 'io', 'dma' and 'use_dma' | |
| arguments to the driver when it is loaded. | |
| i) Cirrus recommend that the cs89x0 use the ISA DMA channels 5, 6 or | |
| 7. You will probably find that other DMA channels will not work. | |
| j) The cs89x0 supports DMA for receiving only. DMA mode is | |
| significantly more efficient. Flooding a 400 MHz Celeron machine | |
| with large ping packets consumes 82% of its CPU capacity in non-DMA | |
| mode. With DMA this is reduced to 45%. | |
| k) If your Linux kernel was compiled with inbuilt plug-and-play | |
| support you will be able to find information about the cs89x0 card | |
| with the command | |
| cat /proc/isapnp | |
| l) If during DMA operation you find erratic behavior or network data | |
| corruption you should use your PC's BIOS to slow the EISA bus clock. | |
| m) If the cs89x0 driver is compiled directly into the kernel | |
| (non-modular) then its I/O address is automatically determined by | |
| ISA bus probing. The IRQ number, media options, etc are determined | |
| from the card's EEPROM. | |
| n) If the cs89x0 driver is compiled directly into the kernel, DMA | |
| mode may be selected by providing the kernel with a boot option | |
| 'cs89x0_dma=N' where 'N' is the desired DMA channel number (5, 6 or 7). | |
| Kernel boot options may be provided on the LILO command line: | |
| LILO boot: linux cs89x0_dma=5 | |
| or they may be placed in /etc/lilo.conf: | |
| image=/boot/bzImage-2.3.48 | |
| append="cs89x0_dma=5" | |
| label=linux | |
| root=/dev/hda5 | |
| read-only | |
| The DMA Rx buffer size is hardwired to 16 kbytes in this mode. | |
| (64k mode is not available). | |
| 4.0 COMPILING THE DRIVER | |
| =============================================================================== | |
| The cs89x0 driver can be compiled directly into the kernel or compiled into | |
| a loadable device driver module. | |
| 4.1 COMPILING THE DRIVER AS A LOADABLE MODULE | |
| To compile the driver into a loadable module, use the following command | |
| (single command line, without quotes): | |
| "gcc -D__KERNEL__ -I/usr/src/linux/include -I/usr/src/linux/net/inet -Wall | |
| -Wstrict-prototypes -O2 -fomit-frame-pointer -DMODULE -DCONFIG_MODVERSIONS | |
| -c cs89x0.c" | |
| 4.2 COMPILING THE DRIVER TO SUPPORT MEMORY MODE | |
| Support for memory mode was not carried over into the 2.3 series kernels. | |
| 4.3 COMPILING THE DRIVER TO SUPPORT Rx DMA | |
| The compile-time optionality for DMA was removed in the 2.3 kernel | |
| series. DMA support is now unconditionally part of the driver. It is | |
| enabled by the 'use_dma=1' module option. | |
| 5.0 TESTING AND TROUBLESHOOTING | |
| =============================================================================== | |
| 5.1 KNOWN DEFECTS and LIMITATIONS | |
| Refer to the RELEASE.TXT file distributed as part of this archive for a list of | |
| known defects, driver limitations, and work arounds. | |
| 5.2 TESTING THE ADAPTER | |
| Once the adapter has been installed and configured, the diagnostic option of | |
| the CS8900/20 Setup Utility can be used to test the functionality of the | |
| adapter and its network connection. Use the diagnostics 'Self Test' option to | |
| test the functionality of the adapter with the hardware configuration you have | |
| assigned. You can use the diagnostics 'Network Test' to test the ability of the | |
| adapter to communicate across the Ethernet with another PC equipped with a | |
| CS8900/20-based adapter card (it must also be running the CS8900/20 Setup | |
| Utility). | |
| NOTE: The Setup Utility's diagnostics are designed to run in a | |
| DOS-only operating system environment. DO NOT run the diagnostics | |
| from a DOS or command prompt session under Windows 95, Windows NT, | |
| OS/2, or other operating system. | |
| To run the diagnostics tests on the CS8900/20 adapter: | |
| 1.) Boot DOS on the PC and start the CS8900/20 Setup Utility. | |
| 2.) The adapter's current configuration is displayed. Hit the ENTER key to | |
| get to the main menu. | |
| 4.) Select 'Diagnostics' (ALT-G) from the main menu. | |
| * Select 'Self-Test' to test the adapter's basic functionality. | |
| * Select 'Network Test' to test the network connection and cabling. | |
| 5.2.1 DIAGNOSTIC SELF-TEST | |
| The diagnostic self-test checks the adapter's basic functionality as well as | |
| its ability to communicate across the ISA bus based on the system resources | |
| assigned during hardware configuration. The following tests are performed: | |
| * IO Register Read/Write Test | |
| The IO Register Read/Write test insures that the CS8900/20 can be | |
| accessed in IO mode, and that the IO base address is correct. | |
| * Shared Memory Test | |
| The Shared Memory test insures the CS8900/20 can be accessed in memory | |
| mode and that the range of memory addresses assigned does not conflict | |
| with other devices in the system. | |
| * Interrupt Test | |
| The Interrupt test insures there are no conflicts with the assigned IRQ | |
| signal. | |
| * EEPROM Test | |
| The EEPROM test insures the EEPROM can be read. | |
| * Chip RAM Test | |
| The Chip RAM test insures the 4K of memory internal to the CS8900/20 is | |
| working properly. | |
| * Internal Loop-back Test | |
| The Internal Loop Back test insures the adapter's transmitter and | |
| receiver are operating properly. If this test fails, make sure the | |
| adapter's cable is connected to the network (check for LED activity for | |
| example). | |
| * Boot PROM Test | |
| The Boot PROM test insures the Boot PROM is present, and can be read. | |
| Failure indicates the Boot PROM was not successfully read due to a | |
| hardware problem or due to a conflicts on the Boot PROM address | |
| assignment. (Test only applies if the adapter is configured to use the | |
| Boot PROM option.) | |
| Failure of a test item indicates a possible system resource conflict with | |
| another device on the ISA bus. In this case, you should use the Manual Setup | |
| option to reconfigure the adapter by selecting a different value for the system | |
| resource that failed. | |
| 5.2.2 DIAGNOSTIC NETWORK TEST | |
| The Diagnostic Network Test verifies a working network connection by | |
| transferring data between two CS8900/20 adapters installed in different PCs | |
| on the same network. (Note: the diagnostic network test should not be run | |
| between two nodes across a router.) | |
| This test requires that each of the two PCs have a CS8900/20-based adapter | |
| installed and have the CS8900/20 Setup Utility running. The first PC is | |
| configured as a Responder and the other PC is configured as an Initiator. | |
| Once the Initiator is started, it sends data frames to the Responder which | |
| returns the frames to the Initiator. | |
| The total number of frames received and transmitted are displayed on the | |
| Initiator's display, along with a count of the number of frames received and | |
| transmitted OK or in error. The test can be terminated anytime by the user at | |
| either PC. | |
| To setup the Diagnostic Network Test: | |
| 1.) Select a PC with a CS8900/20-based adapter and a known working network | |
| connection to act as the Responder. Run the CS8900/20 Setup Utility | |
| and select 'Diagnostics -> Network Test -> Responder' from the main | |
| menu. Hit ENTER to start the Responder. | |
| 2.) Return to the PC with the CS8900/20-based adapter you want to test and | |
| start the CS8900/20 Setup Utility. | |
| 3.) From the main menu, Select 'Diagnostic -> Network Test -> Initiator'. | |
| Hit ENTER to start the test. | |
| You may stop the test on the Initiator at any time while allowing the Responder | |
| to continue running. In this manner, you can move to additional PCs and test | |
| them by starting the Initiator on another PC without having to stop/start the | |
| Responder. | |
| 5.3 USING THE ADAPTER'S LEDs | |
| The 2 and 3-media adapters have two LEDs visible on the back end of the board | |
| located near the 10Base-T connector. | |
| Link Integrity LED: A "steady" ON of the green LED indicates a valid 10Base-T | |
| connection. (Only applies to 10Base-T. The green LED has no significance for | |
| a 10Base-2 or AUI connection.) | |
| TX/RX LED: The yellow LED lights briefly each time the adapter transmits or | |
| receives data. (The yellow LED will appear to "flicker" on a typical network.) | |
| 5.4 RESOLVING I/O CONFLICTS | |
| An IO conflict occurs when two or more adapter use the same ISA resource (IO | |
| address, memory address or IRQ). You can usually detect an IO conflict in one | |
| of four ways after installing and or configuring the CS8900/20-based adapter: | |
| 1.) The system does not boot properly (or at all). | |
| 2.) The driver cannot communicate with the adapter, reporting an "Adapter | |
| not found" error message. | |
| 3.) You cannot connect to the network or the driver will not load. | |
| 4.) If you have configured the adapter to run in memory mode but the driver | |
| reports it is using IO mode when loading, this is an indication of a | |
| memory address conflict. | |
| If an IO conflict occurs, run the CS8900/20 Setup Utility and perform a | |
| diagnostic self-test. Normally, the ISA resource in conflict will fail the | |
| self-test. If so, reconfigure the adapter selecting another choice for the | |
| resource in conflict. Run the diagnostics again to check for further IO | |
| conflicts. | |
| In some cases, such as when the PC will not boot, it may be necessary to remove | |
| the adapter and reconfigure it by installing it in another PC to run the | |
| CS8900/20 Setup Utility. Once reinstalled in the target system, run the | |
| diagnostics self-test to ensure the new configuration is free of conflicts | |
| before loading the driver again. | |
| When manually configuring the adapter, keep in mind the typical ISA system | |
| resource usage as indicated in the tables below. | |
| I/O Address Device IRQ Device | |
| ----------- -------- --- -------- | |
| 200-20F Game I/O adapter 3 COM2, Bus Mouse | |
| 230-23F Bus Mouse 4 COM1 | |
| 270-27F LPT3: third parallel port 5 LPT2 | |
| 2F0-2FF COM2: second serial port 6 Floppy Disk controller | |
| 320-32F Fixed disk controller 7 LPT1 | |
| 8 Real-time Clock | |
| 9 EGA/VGA display adapter | |
| 12 Mouse (PS/2) | |
| Memory Address Device 13 Math Coprocessor | |
| -------------- --------------------- 14 Hard Disk controller | |
| A000-BFFF EGA Graphics Adapter | |
| A000-C7FF VGA Graphics Adapter | |
| B000-BFFF Mono Graphics Adapter | |
| B800-BFFF Color Graphics Adapter | |
| E000-FFFF AT BIOS | |
| 6.0 TECHNICAL SUPPORT | |
| =============================================================================== | |
| 6.1 CONTACTING CIRRUS LOGIC'S TECHNICAL SUPPORT | |
| Cirrus Logic's CS89XX Technical Application Support can be reached at: | |
| Telephone :(800) 888-5016 (from inside U.S. and Canada) | |
| :(512) 442-7555 (from outside the U.S. and Canada) | |
| Fax :(512) 912-3871 | |
| Email :ethernet@crystal.cirrus.com | |
| WWW :http://www.cirrus.com | |
| 6.2 INFORMATION REQUIRED BEFORE CONTACTING TECHNICAL SUPPORT | |
| Before contacting Cirrus Logic for technical support, be prepared to provide as | |
| Much of the following information as possible. | |
| 1.) Adapter type (CRD8900, CDB8900, CDB8920, etc.) | |
| 2.) Adapter configuration | |
| * IO Base, Memory Base, IO or memory mode enabled, IRQ, DMA channel | |
| * Plug and Play enabled/disabled (CS8920-based adapters only) | |
| * Configured for media auto-detect or specific media type (which type). | |
| 3.) PC System's Configuration | |
| * Plug and Play system (yes/no) | |
| * BIOS (make and version) | |
| * System make and model | |
| * CPU (type and speed) | |
| * System RAM | |
| * SCSI Adapter | |
| 4.) Software | |
| * CS89XX driver and version | |
| * Your network operating system and version | |
| * Your system's OS version | |
| * Version of all protocol support files | |
| 5.) Any Error Message displayed. | |
| 6.3 OBTAINING THE LATEST DRIVER VERSION | |
| You can obtain the latest CS89XX drivers and support software from Cirrus Logic's | |
| Web site. You can also contact Cirrus Logic's Technical Support (email: | |
| ethernet@crystal.cirrus.com) and request that you be registered for automatic | |
| software-update notification. | |
| Cirrus Logic maintains a web page at http://www.cirrus.com with the | |
| latest drivers and technical publications. | |
| 6.4 Current maintainer | |
| In February 2000 the maintenance of this driver was assumed by Andrew | |
| Morton. | |
| 6.5 Kernel module parameters | |
| For use in embedded environments with no cs89x0 EEPROM, the kernel boot | |
| parameter `cs89x0_media=' has been implemented. Usage is: | |
| cs89x0_media=rj45 or | |
| cs89x0_media=aui or | |
| cs89x0_media=bnc | |