		PCMCIA Card Services for Linux

NOTE: This is *beta* software.  I'll do my best to fix problems that
are reported to me, but if you don't tell me, I may never know.  If
you are going to try to use this code, you should feel morally bound
to send me your experiences, good or bad :)

Features of this release include:

-- Support for some SRAM memory cards

-- No kernel patches

-- New file organization, installation procedure, etc

-- See the SUPPORTED.CARDS file for a complete list of PCMCIA cards
   known to work with this release.

-- Completely automatic system resource management: ports, interrupts,
   and memory windows are chosen to avoid conflicts, with no user
   intervention.

-- Completely based on loadable modules: PCMCIA support can be loaded
   and unloaded at any time, and PCMCIA client drivers are loaded and
   unloaded in response to card insertion and removal events.

-- Improved card description file minimizes redundant information, or
   information that can be found out from the cards themselves.

-- Compatibility with Solaris PCMCIA Card Services API.

PREREQUISITES

This version of Card Services requires a 1.1.49 kernel.  Older kernels
will not work, so don't bother trying!

You can get current kernel sources and patches from tsx-11.mit.edu in
/pub/linux/sources/system/v1.1.  For 1.1.49, you can get an already
patched 'linux-1.1.45.tar.gz', and apply just patches 46 through 49 to
that.

You will also need a set of current module utilities (insmod, rmmod,
etc).  These can be found in the same directory on tsx-11.mit.edu, in
the file 'modules.tgz'.  

INSTALLATION

First make sure the definitions in 'make.options' are consistent with
your site setup.  Then just run 'make' in this directory.  Do 'make
install' to install the kernel modules and card manager daemon.  Do
'make install-etc' to install the sample config files.  If you are
installing over an older version, new config files will be copied to
/etc/pcmcia with a '.N' suffix -- you should replace or update your
existing files by hand.

When configuring your kernel, if you plan on using a PCMCIA ethernet
card, you should turn on networking support but turn off all the
normal Linux network card drivers, including the "pocket and portable
adapters".  With 1.1.49, just select "n" for "Network device support"
to disable all the normal drivers.  The PCMCIA network card drivers are
all implemented as loadable modules.

The new PCMCIA code is completely made up of loadable modules.  You
need to install the latest module utilities, which support module
stacking.  Before using the PCMCIA code, you'll need to install the
core modules:

	insmod /usr/src/linux/modules/pcmcia_core.o

Install only one of the following:

	insmod /usr/src/linux/modules/i82365.o
	insmod /usr/src/linux/modules/tcic.o

and finally:

	insmod /usr/src/linux/modules/ds.o

If you don't know what kind of PCMCIA controller chip you have, you
can use the 'probe' utility in the cardmgr directory to determine
this.

In order to use the new drivers, you need to run a user-level daemon
to process card insertion/removal events.  This is called 'cardmgr';
it is similar in function to Barry Jaspan's 'pcmciad' in earlier
PCMCIA releases.  'cardmgr' reads a configuration file describing
known PCMCIA devices from /etc/pcmcia/config.  A sample file is
included in the this directory.  The file 'rc.sample' contains an
example of how to modify your system startup file /etc/rc.d/rc.M to
automatically start up PCMCIA support.

You can unload PCMCIA support by ejecting all cards (thereby unloading
any card-specific modules), killing cardmgr, and using 'rmmod' to
remove the core PCMCIA modules.

BUG REPORTS

Before reporting a bug, check the HINTS file for help with some common
problems.  If you have a problem, you can compile the PCMCIA modules
with a lot of debugging turned on, in the modules directory:

	make clean
	make XFLAGS=-DPCMCIA_DEBUG=5

If you are going to report a bug, please send me a description of your
system, your PCMCIA card(s), the version of the PCMCIA driver you are
using, a description of your problem, and the contents of your system
log file (/usr/adm/messages).  Some drivers may also write messages to
/usr/adm/debug or /usr/adm/syslog, so check those files also.

	-- David Hinds
	   dhinds@allegro.stanford.edu
