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