1 2NOTE 3---- 4 5This document was contributed by Cirrus Logic for kernel 2.2.5. This version 6has been updated for 2.3.48 by Andrew Morton. 7 8Cirrus make a copy of this driver available at their website, as 9described below. In general, you should use the driver version which 10comes with your Linux distribution. 11 12 13 14CIRRUS LOGIC LAN CS8900/CS8920 ETHERNET ADAPTERS 15Linux Network Interface Driver ver. 2.00 <kernel 2.3.48> 16=============================================================================== 17 18 19TABLE OF CONTENTS 20 211.0 CIRRUS LOGIC LAN CS8900/CS8920 ETHERNET ADAPTERS 22 1.1 Product Overview 23 1.2 Driver Description 24 1.2.1 Driver Name 25 1.2.2 File in the Driver Package 26 1.3 System Requirements 27 1.4 Licensing Information 28 292.0 ADAPTER INSTALLATION and CONFIGURATION 30 2.1 CS8900-based Adapter Configuration 31 2.2 CS8920-based Adapter Configuration 32 333.0 LOADING THE DRIVER AS A MODULE 34 354.0 COMPILING THE DRIVER 36 4.1 Compiling the Driver as a Loadable Module 37 4.2 Compiling the driver to support memory mode 38 4.3 Compiling the driver to support Rx DMA 39 405.0 TESTING AND TROUBLESHOOTING 41 5.1 Known Defects and Limitations 42 5.2 Testing the Adapter 43 5.2.1 Diagnostic Self-Test 44 5.2.2 Diagnostic Network Test 45 5.3 Using the Adapter's LEDs 46 5.4 Resolving I/O Conflicts 47 486.0 TECHNICAL SUPPORT 49 6.1 Contacting Cirrus Logic's Technical Support 50 6.2 Information Required Before Contacting Technical Support 51 6.3 Obtaining the Latest Driver Version 52 6.4 Current maintainer 53 6.5 Kernel boot parameters 54 55 561.0 CIRRUS LOGIC LAN CS8900/CS8920 ETHERNET ADAPTERS 57=============================================================================== 58 59 601.1 PRODUCT OVERVIEW 61 62The CS8900-based ISA Ethernet Adapters from Cirrus Logic follow 63IEEE 802.3 standards and support half or full-duplex operation in ISA bus 64computers on 10 Mbps Ethernet networks. The adapters are designed for operation 65in 16-bit ISA or EISA bus expansion slots and are available in 6610BaseT-only or 3-media configurations (10BaseT, 10Base2, and AUI for 10Base-5 67or fiber networks). 68 69CS8920-based adapters are similar to the CS8900-based adapter with additional 70features for Plug and Play (PnP) support and Wakeup Frame recognition. As 71such, the configuration procedures differ somewhat between the two types of 72adapters. Refer to the "Adapter Configuration" section for details on 73configuring both types of adapters. 74 75 761.2 DRIVER DESCRIPTION 77 78The CS8900/CS8920 Ethernet Adapter driver for Linux supports the Linux 79v2.3.48 or greater kernel. It can be compiled directly into the kernel 80or loaded at run-time as a device driver module. 81 821.2.1 Driver Name: cs89x0 83 841.2.2 Files in the Driver Archive: 85 86The files in the driver at Cirrus' website include: 87 88 readme.txt - this file 89 build - batch file to compile cs89x0.c. 90 cs89x0.c - driver C code 91 cs89x0.h - driver header file 92 cs89x0.o - pre-compiled module (for v2.2.5 kernel) 93 config/Config.in - sample file to include cs89x0 driver in the kernel. 94 config/Makefile - sample file to include cs89x0 driver in the kernel. 95 config/Space.c - sample file to include cs89x0 driver in the kernel. 96 97 98 991.3 SYSTEM REQUIREMENTS 100 101The following hardware is required: 102 103 * Cirrus Logic LAN (CS8900/20-based) Ethernet ISA Adapter 104 105 * IBM or IBM-compatible PC with: 106 * An 80386 or higher processor 107 * 16 bytes of contiguous IO space available between 210h - 370h 108 * One available IRQ (5,10,11,or 12 for the CS8900, 3-7,9-15 for CS8920). 109 110 * Appropriate cable (and connector for AUI, 10BASE-2) for your network 111 topology. 112 113The following software is required: 114 115* LINUX kernel version 2.3.48 or higher 116 117 * CS8900/20 Setup Utility (DOS-based) 118 119 * LINUX kernel sources for your kernel (if compiling into kernel) 120 121 * GNU Toolkit (gcc and make) v2.6 or above (if compiling into kernel 122 or a module) 123 124 125 1261.4 LICENSING INFORMATION 127 128This program is free software; you can redistribute it and/or modify it under 129the terms of the GNU General Public License as published by the Free Software 130Foundation, version 1. 131 132This program is distributed in the hope that it will be useful, but WITHOUT 133ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 134FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 135more details. 136 137For a full copy of the GNU General Public License, write to the Free Software 138Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 139 140 141 1422.0 ADAPTER INSTALLATION and CONFIGURATION 143=============================================================================== 144 145Both the CS8900 and CS8920-based adapters can be configured using parameters 146stored in an on-board EEPROM. You must use the DOS-based CS8900/20 Setup 147Utility if you want to change the adapter's configuration in EEPROM. 148 149When loading the driver as a module, you can specify many of the adapter's 150configuration parameters on the command-line to override the EEPROM's settings 151or for interface configuration when an EEPROM is not used. (CS8920-based 152adapters must use an EEPROM.) See Section 3.0 LOADING THE DRIVER AS A MODULE. 153 154Since the CS8900/20 Setup Utility is a DOS-based application, you must install 155and configure the adapter in a DOS-based system using the CS8900/20 Setup 156Utility before installation in the target LINUX system. (Not required if 157installing a CS8900-based adapter and the default configuration is acceptable.) 158 159 1602.1 CS8900-BASED ADAPTER CONFIGURATION 161 162CS8900-based adapters shipped from Cirrus Logic have been configured 163with the following "default" settings: 164 165 Operation Mode: Memory Mode 166 IRQ: 10 167 Base I/O Address: 300 168 Memory Base Address: D0000 169 Optimization: DOS Client 170 Transmission Mode: Half-duplex 171 BootProm: None 172 Media Type: Autodetect (3-media cards) or 173 10BASE-T (10BASE-T only adapter) 174 175You should only change the default configuration settings if conflicts with 176another adapter exists. To change the adapter's configuration, run the 177CS8900/20 Setup Utility. 178 179 1802.2 CS8920-BASED ADAPTER CONFIGURATION 181 182CS8920-based adapters are shipped from Cirrus Logic configured as Plug 183and Play (PnP) enabled. However, since the cs89x0 driver does NOT 184support PnP, you must install the CS8920 adapter in a DOS-based PC and 185run the CS8900/20 Setup Utility to disable PnP and configure the 186adapter before installation in the target Linux system. Failure to do 187this will leave the adapter inactive and the driver will be unable to 188communicate with the adapter. 189 190 191 **************************************************************** 192 * CS8920-BASED ADAPTERS: * 193 * * 194 * CS8920-BASED ADAPTERS ARE PLUG and PLAY ENABLED BY DEFAULT. * 195 * THE CS89X0 DRIVER DOES NOT SUPPORT PnP. THEREFORE, YOU MUST * 196 * RUN THE CS8900/20 SETUP UTILITY TO DISABLE PnP SUPPORT AND * 197 * TO ACTIVATE THE ADAPTER. * 198 **************************************************************** 199 200 201 202 2033.0 LOADING THE DRIVER AS A MODULE 204=============================================================================== 205 206If the driver is compiled as a loadable module, you can load the driver module 207with the 'modprobe' command. Many of the adapter's configuration parameters can 208be specified as command-line arguments to the load command. This facility 209provides a means to override the EEPROM's settings or for interface 210configuration when an EEPROM is not used. 211 212Example: 213 214 insmod cs89x0.o io=0x200 irq=0xA media=aui 215 216This example loads the module and configures the adapter to use an IO port base 217address of 200h, interrupt 10, and use the AUI media connection. The following 218configuration options are available on the command line: 219 220* io=### - specify IO address (200h-360h) 221* irq=## - specify interrupt level 222* use_dma=1 - Enable DMA 223* dma=# - specify dma channel (Driver is compiled to support 224 Rx DMA only) 225* dmasize=# (16 or 64) - DMA size 16K or 64K. Default value is set to 16. 226* media=rj45 - specify media type 227 or media=bnc 228 or media=aui 229 or media=auto 230* duplex=full - specify forced half/full/autonegotiate duplex 231 or duplex=half 232 or duplex=auto 233* debug=# - debug level (only available if the driver was compiled 234 for debugging) 235 236NOTES: 237 238a) If an EEPROM is present, any specified command-line parameter 239 will override the corresponding configuration value stored in 240 EEPROM. 241 242b) The "io" parameter must be specified on the command-line. 243 244c) The driver's hardware probe routine is designed to avoid 245 writing to I/O space until it knows that there is a cs89x0 246 card at the written addresses. This could cause problems 247 with device probing. To avoid this behaviour, add one 248 to the `io=' module parameter. This doesn't actually change 249 the I/O address, but it is a flag to tell the driver 250 to partially initialise the hardware before trying to 251 identify the card. This could be dangerous if you are 252 not sure that there is a cs89x0 card at the provided address. 253 254 For example, to scan for an adapter located at IO base 0x300, 255 specify an IO address of 0x301. 256 257d) The "duplex=auto" parameter is only supported for the CS8920. 258 259e) The minimum command-line configuration required if an EEPROM is 260 not present is: 261 262 io 263 irq 264 media type (no autodetect) 265 266f) The following additional parameters are CS89XX defaults (values 267 used with no EEPROM or command-line argument). 268 269 * DMA Burst = enabled 270 * IOCHRDY Enabled = enabled 271 * UseSA = enabled 272 * CS8900 defaults to half-duplex if not specified on command-line 273 * CS8920 defaults to autoneg if not specified on command-line 274 * Use reset defaults for other config parameters 275 * dma_mode = 0 276 277g) You can use ifconfig to set the adapter's Ethernet address. 278 279h) Many Linux distributions use the 'modprobe' command to load 280 modules. This program uses the '/etc/conf.modules' file to 281 determine configuration information which is passed to a driver 282 module when it is loaded. All the configuration options which are 283 described above may be placed within /etc/conf.modules. 284 285 For example: 286 287 > cat /etc/conf.modules 288 ... 289 alias eth0 cs89x0 290 options cs89x0 io=0x0200 dma=5 use_dma=1 291 ... 292 293 In this example we are telling the module system that the 294 ethernet driver for this machine should use the cs89x0 driver. We 295 are asking 'modprobe' to pass the 'io', 'dma' and 'use_dma' 296 arguments to the driver when it is loaded. 297 298i) Cirrus recommend that the cs89x0 use the ISA DMA channels 5, 6 or 299 7. You will probably find that other DMA channels will not work. 300 301j) The cs89x0 supports DMA for receiving only. DMA mode is 302 significantly more efficient. Flooding a 400 MHz Celeron machine 303 with large ping packets consumes 82% of its CPU capacity in non-DMA 304 mode. With DMA this is reduced to 45%. 305 306k) If your Linux kernel was compiled with inbuilt plug-and-play 307 support you will be able to find information about the cs89x0 card 308 with the command 309 310 cat /proc/isapnp 311 312l) If during DMA operation you find erratic behavior or network data 313 corruption you should use your PC's BIOS to slow the EISA bus clock. 314 315m) If the cs89x0 driver is compiled directly into the kernel 316 (non-modular) then its I/O address is automatically determined by 317 ISA bus probing. The IRQ number, media options, etc are determined 318 from the card's EEPROM. 319 320n) If the cs89x0 driver is compiled directly into the kernel, DMA 321 mode may be selected by providing the kernel with a boot option 322 'cs89x0_dma=N' where 'N' is the desired DMA channel number (5, 6 or 7). 323 324 Kernel boot options may be provided on the LILO command line: 325 326 LILO boot: linux cs89x0_dma=5 327 328 or they may be placed in /etc/lilo.conf: 329 330 image=/boot/bzImage-2.3.48 331 append="cs89x0_dma=5" 332 label=linux 333 root=/dev/hda5 334 read-only 335 336 The DMA Rx buffer size is hardwired to 16 kbytes in this mode. 337 (64k mode is not available). 338 339 3404.0 COMPILING THE DRIVER 341=============================================================================== 342 343The cs89x0 driver can be compiled directly into the kernel or compiled into 344a loadable device driver module. 345 346 3474.1 COMPILING THE DRIVER AS A LOADABLE MODULE 348 349To compile the driver into a loadable module, use the following command 350(single command line, without quotes): 351 352"gcc -D__KERNEL__ -I/usr/src/linux/include -I/usr/src/linux/net/inet -Wall 353-Wstrict-prototypes -O2 -fomit-frame-pointer -DMODULE -DCONFIG_MODVERSIONS 354-c cs89x0.c" 355 3564.2 COMPILING THE DRIVER TO SUPPORT MEMORY MODE 357 358Support for memory mode was not carried over into the 2.3 series kernels. 359 3604.3 COMPILING THE DRIVER TO SUPPORT Rx DMA 361 362The compile-time optionality for DMA was removed in the 2.3 kernel 363series. DMA support is now unconditionally part of the driver. It is 364enabled by the 'use_dma=1' module option. 365 366 3675.0 TESTING AND TROUBLESHOOTING 368=============================================================================== 369 3705.1 KNOWN DEFECTS and LIMITATIONS 371 372Refer to the RELEASE.TXT file distributed as part of this archive for a list of 373known defects, driver limitations, and work arounds. 374 375 3765.2 TESTING THE ADAPTER 377 378Once the adapter has been installed and configured, the diagnostic option of 379the CS8900/20 Setup Utility can be used to test the functionality of the 380adapter and its network connection. Use the diagnostics 'Self Test' option to 381test the functionality of the adapter with the hardware configuration you have 382assigned. You can use the diagnostics 'Network Test' to test the ability of the 383adapter to communicate across the Ethernet with another PC equipped with a 384CS8900/20-based adapter card (it must also be running the CS8900/20 Setup 385Utility). 386 387 NOTE: The Setup Utility's diagnostics are designed to run in a 388 DOS-only operating system environment. DO NOT run the diagnostics 389 from a DOS or command prompt session under Windows 95, Windows NT, 390 OS/2, or other operating system. 391 392To run the diagnostics tests on the CS8900/20 adapter: 393 394 1.) Boot DOS on the PC and start the CS8900/20 Setup Utility. 395 396 2.) The adapter's current configuration is displayed. Hit the ENTER key to 397 get to the main menu. 398 399 4.) Select 'Diagnostics' (ALT-G) from the main menu. 400 * Select 'Self-Test' to test the adapter's basic functionality. 401 * Select 'Network Test' to test the network connection and cabling. 402 403 4045.2.1 DIAGNOSTIC SELF-TEST 405 406The diagnostic self-test checks the adapter's basic functionality as well as 407its ability to communicate across the ISA bus based on the system resources 408assigned during hardware configuration. The following tests are performed: 409 410 * IO Register Read/Write Test 411 The IO Register Read/Write test insures that the CS8900/20 can be 412 accessed in IO mode, and that the IO base address is correct. 413 414 * Shared Memory Test 415 The Shared Memory test insures the CS8900/20 can be accessed in memory 416 mode and that the range of memory addresses assigned does not conflict 417 with other devices in the system. 418 419 * Interrupt Test 420 The Interrupt test insures there are no conflicts with the assigned IRQ 421 signal. 422 423 * EEPROM Test 424 The EEPROM test insures the EEPROM can be read. 425 426 * Chip RAM Test 427 The Chip RAM test insures the 4K of memory internal to the CS8900/20 is 428 working properly. 429 430 * Internal Loop-back Test 431 The Internal Loop Back test insures the adapter's transmitter and 432 receiver are operating properly. If this test fails, make sure the 433 adapter's cable is connected to the network (check for LED activity for 434 example). 435 436 * Boot PROM Test 437 The Boot PROM test insures the Boot PROM is present, and can be read. 438 Failure indicates the Boot PROM was not successfully read due to a 439 hardware problem or due to a conflicts on the Boot PROM address 440 assignment. (Test only applies if the adapter is configured to use the 441 Boot PROM option.) 442 443Failure of a test item indicates a possible system resource conflict with 444another device on the ISA bus. In this case, you should use the Manual Setup 445option to reconfigure the adapter by selecting a different value for the system 446resource that failed. 447 448 4495.2.2 DIAGNOSTIC NETWORK TEST 450 451The Diagnostic Network Test verifies a working network connection by 452transferring data between two CS8900/20 adapters installed in different PCs 453on the same network. (Note: the diagnostic network test should not be run 454between two nodes across a router.) 455 456This test requires that each of the two PCs have a CS8900/20-based adapter 457installed and have the CS8900/20 Setup Utility running. The first PC is 458configured as a Responder and the other PC is configured as an Initiator. 459Once the Initiator is started, it sends data frames to the Responder which 460returns the frames to the Initiator. 461 462The total number of frames received and transmitted are displayed on the 463Initiator's display, along with a count of the number of frames received and 464transmitted OK or in error. The test can be terminated anytime by the user at 465either PC. 466 467To setup the Diagnostic Network Test: 468 469 1.) Select a PC with a CS8900/20-based adapter and a known working network 470 connection to act as the Responder. Run the CS8900/20 Setup Utility 471 and select 'Diagnostics -> Network Test -> Responder' from the main 472 menu. Hit ENTER to start the Responder. 473 474 2.) Return to the PC with the CS8900/20-based adapter you want to test and 475 start the CS8900/20 Setup Utility. 476 477 3.) From the main menu, Select 'Diagnostic -> Network Test -> Initiator'. 478 Hit ENTER to start the test. 479 480You may stop the test on the Initiator at any time while allowing the Responder 481to continue running. In this manner, you can move to additional PCs and test 482them by starting the Initiator on another PC without having to stop/start the 483Responder. 484 485 486 4875.3 USING THE ADAPTER'S LEDs 488 489The 2 and 3-media adapters have two LEDs visible on the back end of the board 490located near the 10Base-T connector. 491 492Link Integrity LED: A "steady" ON of the green LED indicates a valid 10Base-T 493connection. (Only applies to 10Base-T. The green LED has no significance for 494a 10Base-2 or AUI connection.) 495 496TX/RX LED: The yellow LED lights briefly each time the adapter transmits or 497receives data. (The yellow LED will appear to "flicker" on a typical network.) 498 499 5005.4 RESOLVING I/O CONFLICTS 501 502An IO conflict occurs when two or more adapter use the same ISA resource (IO 503address, memory address or IRQ). You can usually detect an IO conflict in one 504of four ways after installing and or configuring the CS8900/20-based adapter: 505 506 1.) The system does not boot properly (or at all). 507 508 2.) The driver cannot communicate with the adapter, reporting an "Adapter 509 not found" error message. 510 511 3.) You cannot connect to the network or the driver will not load. 512 513 4.) If you have configured the adapter to run in memory mode but the driver 514 reports it is using IO mode when loading, this is an indication of a 515 memory address conflict. 516 517If an IO conflict occurs, run the CS8900/20 Setup Utility and perform a 518diagnostic self-test. Normally, the ISA resource in conflict will fail the 519self-test. If so, reconfigure the adapter selecting another choice for the 520resource in conflict. Run the diagnostics again to check for further IO 521conflicts. 522 523In some cases, such as when the PC will not boot, it may be necessary to remove 524the adapter and reconfigure it by installing it in another PC to run the 525CS8900/20 Setup Utility. Once reinstalled in the target system, run the 526diagnostics self-test to ensure the new configuration is free of conflicts 527before loading the driver again. 528 529When manually configuring the adapter, keep in mind the typical ISA system 530resource usage as indicated in the tables below. 531 532I/O Address Device IRQ Device 533----------- -------- --- -------- 534 200-20F Game I/O adapter 3 COM2, Bus Mouse 535 230-23F Bus Mouse 4 COM1 536 270-27F LPT3: third parallel port 5 LPT2 537 2F0-2FF COM2: second serial port 6 Floppy Disk controller 538 320-32F Fixed disk controller 7 LPT1 539 8 Real-time Clock 540 9 EGA/VGA display adapter 541 12 Mouse (PS/2) 542Memory Address Device 13 Math Coprocessor 543-------------- --------------------- 14 Hard Disk controller 544A000-BFFF EGA Graphics Adapter 545A000-C7FF VGA Graphics Adapter 546B000-BFFF Mono Graphics Adapter 547B800-BFFF Color Graphics Adapter 548E000-FFFF AT BIOS 549 550 551 552 5536.0 TECHNICAL SUPPORT 554=============================================================================== 555 5566.1 CONTACTING CIRRUS LOGIC'S TECHNICAL SUPPORT 557 558Cirrus Logic's CS89XX Technical Application Support can be reached at: 559 560Telephone :(800) 888-5016 (from inside U.S. and Canada) 561 :(512) 442-7555 (from outside the U.S. and Canada) 562Fax :(512) 912-3871 563Email :ethernet@crystal.cirrus.com 564WWW :http://www.cirrus.com 565 566 5676.2 INFORMATION REQUIRED BEFORE CONTACTING TECHNICAL SUPPORT 568 569Before contacting Cirrus Logic for technical support, be prepared to provide as 570Much of the following information as possible. 571 5721.) Adapter type (CRD8900, CDB8900, CDB8920, etc.) 573 5742.) Adapter configuration 575 576 * IO Base, Memory Base, IO or memory mode enabled, IRQ, DMA channel 577 * Plug and Play enabled/disabled (CS8920-based adapters only) 578 * Configured for media auto-detect or specific media type (which type). 579 5803.) PC System's Configuration 581 582 * Plug and Play system (yes/no) 583 * BIOS (make and version) 584 * System make and model 585 * CPU (type and speed) 586 * System RAM 587 * SCSI Adapter 588 5894.) Software 590 591 * CS89XX driver and version 592 * Your network operating system and version 593 * Your system's OS version 594 * Version of all protocol support files 595 5965.) Any Error Message displayed. 597 598 599 6006.3 OBTAINING THE LATEST DRIVER VERSION 601 602You can obtain the latest CS89XX drivers and support software from Cirrus Logic's 603Web site. You can also contact Cirrus Logic's Technical Support (email: 604ethernet@crystal.cirrus.com) and request that you be registered for automatic 605software-update notification. 606 607Cirrus Logic maintains a web page at http://www.cirrus.com with the 608latest drivers and technical publications. 609 610 6116.4 Current maintainer 612 613In February 2000 the maintenance of this driver was assumed by Andrew 614Morton. 615 6166.5 Kernel module parameters 617 618For use in embedded environments with no cs89x0 EEPROM, the kernel boot 619parameter `cs89x0_media=' has been implemented. Usage is: 620 621 cs89x0_media=rj45 or 622 cs89x0_media=aui or 623 cs89x0_media=bnc 624 625