The Linux kernel PCMCIA system has three main components. At the lowest level are the socket drivers. Next is the Card Services module. Drivers for specific cards are layered on top of Card Services. One special Card Services client, called Driver Services, provides a link betweek user level utility programs and the kernel facilities.
The socket driver layer is loosely based on the Socket Services API.
There are two socket driver modules. The
tcic module supports
the Databook TCIC-2 family of host controllers. The
module supports the Intel i82365sl family and various Intel-compatible
controllers, including Cirrus, VLSI, Ricoh, and Vadem chips. In
i82365 module implements support for CardBus controllers
that follow the ``Yenta'' register-level specification.
Card Services is the largest single component of the package.
It provides an API somewhat similar to DOS Card Services, adapted to a
Unix environment. The Linux implementation was based in part on the
Solaris interface specification. It is implemented in the
pcmcia_core module. Most version 2.1 features are implemented,
with some PC Card 95 features.
The Driver Services layer implements a user mode pseudo-device for
accessing some Card Services functions from utility programs.
It is responsible for keeping track of all client drivers, and
for matching up drivers with physical sockets. It is implemented in
This document describes the kernel interface to the Card Services and Driver Services modules, and the user interface to Driver Services. It is intended for use by client device driver developers. The Linux PCMCIA-HOWTO describes how to install and use Linux PCMCIA support. It is available from http://pcmcia-cs.sourceforge.net.
Copyright (c) 1996-2002 David A. Hinds
This document may be reproduced or distributed in any form without my prior permission. Modified versions of this document, including translations into other languages, may be freely distributed, provided that they are clearly identified as such, and this copyright is included intact.
This document may be included in commercial distributions without my prior consent. While it is not required, I would like to be informed of such usage. If you intend to incorporate this document in a published work, please contact me to make sure you have the latest available version.
This document is provided ``AS IS'', with no express or implied warranties. Use the information in this document at your own risk.
I'd like to thank all the Linux users who have helped test and debug this software, and who have helped with driver development. I should also thank Linus Torvalds, Donald Becker, Alan Cox, and Bjorn Ekwall for Linux kernel development help. I'm especially grateful to Michael Bender for many helpful discussions about the Solaris implementation.