http://pcmcia-cs.sourceforge.net/ftp/doc/PCMCIA-HOWTO.html

Manually inserting PCMCIA card (for instance after using a PCMCIA cdrom
drive to install Linux so that no NIC could be installed).

cardctl ident

modprobe axnet_cs
ifconfig eth0 up
dhclient

--------------------------------------------------------------------------------

cardctl ident
	socket 0:
	product info:  "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM", ""
	manfid: 0x0101, 0x1234
	function : 2 (serial)
 --OR--

cardmgr will report an unsupported card in the system log:
	cardmgr[460]: unsupported card in socket 1
	cardmgr[460]: product info: "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM"
	cardmgr[460]: manfid: 0x0101, 0x1234  function: 2 (serial)


/etc/pcmcia/config:
	card "Megahertz XJ2288 V.34 Fax Modem"
	  version "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM"
	  bind "serial_cs"
  --OR--
	card "Megahertz XJ2288 V.34 Fax Modem"
	  manfid 0x0101, 0x1234
	  bind "serial_cs"

--------------------------------------------------------------------------------

/etc/pcmcia/config

Here is an example of how cardmgr will report an unsupported card in the system
log:
	cardmgr[460]: unsupported card in socket 1
	cardmgr[460]: product info: "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM"
	cardmgr[460]: manfid: 0x0101, 0x1234  function: 2 (serial)

The corresponding entry in /etc/pcmcia/config would be:
	card "Megahertz XJ2288 V.34 Fax Modem"
	  version "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM"
	  bind "serial_cs"

or using the more compact product ID codes:
	card "Megahertz XJ2288 V.34 Fax Modem"
	  manfid 0x0101, 0x1234
	  bind "serial_cs"

You can use ``*'' to match strings that don't need to match exactly, like
version numbers. When making new config entries, be careful to copy the
strings exactly, preserving case and blank spaces. Also be sure that the
config entry has the same number of strings as are reported in the log file.

After editing /etc/pcmcia/config, you can signal cardmgr to reload the file
with:
	kill -HUP `cat /var/run/cardmgr.pid`

--------------------------------------------------------------------------------

Using Schemes:

Since lilo passes unrecognized options to init as environment variables, a value
for SCHEME (or any other PCMCIA startup option) at the boot prompt will be
propagated into the PCMCIA startup script.

/etc/lilo.conf
	root = /dev/hda1
	read-only
	image = /boot/vmlinuz
	  label  = home
	  append = "SCHEME=home"
	image = /boot/vmlinuz
	  label  = work
	  append = "SCHEME=work"

--OR--
Example of a network.opts script with scheme-specific settings:

	case "$ADDRESS" in
	work,*,*,*)
	    # definitions for network card in work scheme
	    ...
	    ;;
	home,*,*,*|default,*,*,*)
	    # definitions for network card in home scheme
	    ...
	    ;;
	esac

To select between the two sets of settings, run either:
	cardctl scheme home
	cardctl scheme work

To find out the current scheme setting, run:
	cardctl scheme

By default, the scheme setting is persistent across boots. This can have
undesirable effects if networking is initialized for the wrong environment.
Optionally, you can set the initial scheme value with the SCHEME startup
option.

--------------------------------------------------------------------------------

Notes:

The cardctl command does the equivalent of shutting down all your cards and
restarting them. The command can be safely executed whether or not the PCMCIA
system is loaded, but the command may fail if you are using other PCMCIA devices
at the time (even if their configurations are not explicitly dependant on the
scheme setting).


In theory, it should not really matter which interrupt is allocated to which
device, as long as two devices are not configured to use the same interrupt.
In /etc/pcmcia/config.opts you'll find a place for excluding interrupts that
are used by non-PCMCIA devices.


All the client card drivers have a parameter called irq_list for specifying
which interrupts they may try to allocate. These driver options should be set
in your /etc/pcmcia/config file. For example:
	device "serial_cs"
	  module "serial_cs" opts "irq_list=8,12"
would specify that the serial driver should only use irq 8 or irq 12.
Regardless of irq_list settings, Card Services will never allocate an
interrupt that is already in use by another device, or an interrupt that
is excluded in the config file.




Cardmgr records device information for each socket in /var/lib/pcmcia/stab. Here
is a sample stab listing:
	Socket 0: Adaptec APA-1460 SlimSCSI
	0       scsi    aha152x_cs      0       sda     8       0
	0       scsi    aha152x_cs      1       scd0    11      0
	Socket 1: Serial or Modem Card
	1       serial  serial_cs       0       ttyS1   5       65



The ``cardctl suspend'' and ``cardctl resume'' commands can be used to shut down a card without unloading its associated drivers. The ``cardctl reset'' command attempts to reset and reconfigure a card. ``cardctl insert'' and ``cardctl eject'' mimic the actions performed when a card is physically inserted or ejected, including loading or unloading drivers, and configuring or shutting down devices. 
If you are running X, the cardinfo utility produces a graphical display showing the current status of all PCMCIA sockets, similar in content to ``cardctl config''. It also provides a graphical interface to most other cardctl functions.
For these card types (IDE, SCSI, CardBus), it is recommended that you always use ``cardctl eject'' before ejecting.
Whether or not APM is configured, you can use ``cardctl suspend'' before suspending your laptop, and ``cardctl resume'' after resuming, to cleanly shut down and restart your PCMCIA cards. This will not work with a modem that is in use, because the serial driver isn't able to save and restore the modem operating parameters.
Some drivers, notably the PCMCIA SCSI drivers, cannot recover from a suspend/resume cycle. When using a PCMCIA SCSI card, always use ``cardctl eject'' prior to suspending the system.


To unload the entire PCMCIA package, invoke rc.pcmcia with:
	/etc/rc.d/rc.pcmcia stop
This script will take several seconds to run, to give all client drivers time
to shut down gracefully. If a device is currently in use, the shutdown will be
incomplete, and some kernel modules may not be unloaded. To avoid this, use
``cardctl eject'' to shut down all sockets before invoking rc.pcmcia. The exit
status of the cardctl command will indicate if any sockets could not be shut
down.

--------------------------------------------------------------------------------

cardctl ident
 Socket 0:
  product info: "Linksys", "EtherFast 10/100 PC Card (PCMPC100 V3)", "V2.0", " "
  manfid: 0x0149, 0xc1ab
  function: 6 (network)