Escolar Documentos
Profissional Documentos
Cultura Documentos
Volume 1
Overview and Glossary
PCMCIA
JEIDA
©1999, PCMCIA/JEIDA PCMCIA HAS BEEN NOTIFIED BY OS/2 is a trademark of IBM
All rights reserved. CERTAIN THIRD PARTIES THAT Coporation.
THE IMPLEMENTATION OF THE
No part of this publication may be STANDARD WILL REQUIRE A Intel and Pentium are registered
reproduced, stored in a retrieval LICENSE FROM THOSE THIRD trademarks of Intel Corporation.
system, or transmitted, in any form or PARTIES TO AVOID
by any means, mechanical, MS-DOS, OnNow and Windows NT
INFRINGEMENT OF THEIR are trademarks and Microsoft,
electronic, photocopying, recording RIGHTS. PCMCIA HAS OBTAINED
or otherwise, without prior written Windows and Win32 are registered
FROM SOME, BUT NOT ALL, OF trademarks of Microsoft Corporation.
permission of PCMCIA and JEIDA. THOSE PARTIES A GRANT OF
Printed in the United States of All other product names are
IMMUNITY THAT PCMCIA WILL
America. trademarks, registered trademarks, or
EXTEND TO YOU, CONTINGENT
PCMCIA (Personal Computer UPON YOUR ENTERING INTO servicemarks of their respective
Memory Card International AND DELIVERING TO PCMCIA owners.
Association) THE RECIPROCAL GRANT OF
2635 North First Street, Suite 209 IMMUNITY AGREEMENT
San Jose, CA 95134 USA CONTAINED ELSEWHERE IN
+1-408-433-2273 THIS STANDARD.
+1-408-433-9558 (Fax) IMPORTANT:
http://www.pc-card.com
In order to receive the Grant of
JEIDA (Japan Electronic Industry Immunity, the owner of this
Development Association) Standard must sign and return the
Kikai Shinko Kaikan, 3-5-8, Shibakoen enclosed Registration Card to:
Minato-ku, Tokyo 105, JAPAN PCMCIA
+81-3-3433-1923 2635 North First Street, Suite 209
+81-3-3433-6350 (Fax) San Jose, CA 95134 USA
http://www.pc-card.gr.jp
NEITHER PCMCIA NOR JEIDA
The PC Card logo and PC Card are MAKES ANY WARRANTY,
trademarks of PCMCIA, registered in EXPRESS OR IMPLIED, WITH
the United States. The PC Card logo RESPECT TO THE STANDARD,
and PC Card are trademarks of INCLUDING AS TO NON-
JEIDA, registered in Japan. INFRINGEMENT,
MERCHANTABILITY OR FITNESS
Cover Design: Greg Barr FOR A PARTICULAR PURPOSE.
THIS STANDARD IS PROVIDED TO
YOU ÒAS IS.Ó
CONTENTS
1. Introduction____________________________________________1
1.1 PC Card Standard Overview ..............................................................................................1
1.2 History .................................................................................................................................2
1.2.1 History of the PC Card Standard ........................................................................................................................................2
1.2.2 PCMCIA Standard Release 1.0/JEIDA 4.0 (June 1990)...............................................................................................3
1.2.3 PCMCIA Standard Release 2.0/JEIDA 4.1 (September 1991)..................................................................................3
1.2.4 PCMCIA Standard Release 2.01 (November 1992) ......................................................................................................3
1.2.5 PCMCIA Standard Release 2.1/JEIDA 4.2 (July 1993) ...............................................................................................3
1.2.6 PC Card Standard February 1995 (Release 5.0) ............................................................................................................3
1.2.6.1 PC Card Standard March 1995 Update............................................................................................................4
1.2.6.2 PC Card Standard May 1995 Update................................................................................................................4
1.2.6.3 PC Card Standard November 1995 Update.....................................................................................................4
1.2.6.4 PC Card Standard March 1996 Update............................................................................................................4
1.2.7 PC Card Standard March 1997 (Release 6.0) .................................................................................................................4
1.2.8 PC Card Standard 6.1 Update (April 1998)....................................................................................................................4
1.2.9 PC Card Standard Release 7.0 (February 1999) ............................................................................................................5
1.3 Uses......................................................................................................................................6
1.4 Future Trends ......................................................................................................................6
1.5 The PC Card Standard ¾ A PCMCIA and JEIDA Joint Release......................................7
5. Glossary______________________________________________ 25
iv Ó1999PCMCIA/JEIDA
OVERVIEW AND GLOSSARY
1. I N T R OD U C T ION
This Overview describes the Personal Computer Memory Card International Association (PCMCIA)
and the Japan Electronic Industry Development Association (JEIDA) PC CardÔ Standard which is
the result of countless hours of effort by the members of JEIDA and PCMCIA. PCMCIA and JEIDA
are grateful for and acknowledge the dedicated efforts of the PCMCIA and JEIDA staff and
volunteer members in the creation and production of this Standard.
Ó 1999 PCMCIA/JEIDA 1
INTRODUCTION
1.2 History
2 Ó1999PCMCIA/JEIDA
OVERVIEW AND GLOSSARY
Ó 1999 PCMCIA/JEIDA 3
INTRODUCTION
The Standard was also enhanced to support the following optional features:
· Low-voltage-only operation (3.3 volt)
· Hardware Direct Memory Access (DMA)
· Multiple-function cards
· Industry standard power management interface (APM)
· A high throughput 32Ðbit bus mastering interface (CardBus)
4 Ó1999PCMCIA/JEIDA
OVERVIEW AND GLOSSARY
Ó 1999 PCMCIA/JEIDA 5
INTRODUCTION
1.3 Uses
PC Card technology is used in a wide variety of products including notebook computers, sub-
notebook computers, palmtop computers, pen computers, desktop computers, cameras, printers,
telephones, medical instruments, television set-top boxes and other embedded application hosts. PC
Cards supporting storage and I/O applications for the host systems mentioned above also
incorporate PC Card technology as does the system and application software required to operate the
cards and hosts.
The PC Card Standard is aimed at developers of the above mentioned PC Card-based products
and is designed for the technical audience. The Standard is used by technical developers to create
standard PC Card products such as cards, hosts, silicon, and software.
6 Ó1999PCMCIA/JEIDA
OVERVIEW AND GLOSSARY
Ó 1999 PCMCIA/JEIDA 7
OVERVIEW AND GLOSSARY
Ó 1999 PCMCIA/JEIDA 9
OVERVIEW AND GLOSSARY
3 . C O M P AT I B I L I T Y
Over time, PC Cards containing new technologies have been introduced, and significant new
capabilities have been added to the Standard. At the same time, considerable experience has been
gained by card, host and software vendors, and opportunities to improve compatibility have been
recognized. The goal remains to make PC Card technology as easy to use as possible with the ideal
scenario being that the customer takes the PC Card out of its box, plugs it into the system and
begins to use it. It is recommended that in order to support PC Card technology, developers keep
the goal of compatibility in mind and use the areas of the Standard designed to support
compatibility and interoperability. Also, there is opportunity within the PCMCIA organization
meetings to discuss compatibility and share information.
The Standard encompasses many capabilities and optional features. Due to this complexity,
manufacturers can choose different feature sets or even have different interpretations. Therefore,
development planned for flexibility and adaptability will allow for the greatest compatibility. One
way to be prepared for the variety of the real world is to perform exhaustive testing of designs with
all of the significant components: from software functions and modules to entire platforms.
On a very general level, the following describes how a card and system interact when they are
Òcompatible:Ó
For a card to operate properly, the host must first be able to provide adequate power at the correct
voltage(s) to identify and operate the card. It must successfully identify the card by reading its Card
Information Structure (CIS), and, in some cases, by sensing several pins on the interface. These pins
are important in systems mechanically able to accept CardBus or other low voltage cards. The CIS
contains detailed information on a card including its allowed ÒconfigurationsÓ which tell the host
system the various ways that the card can be set up and what system resources are required.
Once the card has been identified, the system must determine if the card requires a user-installed
Card Services client driver (typically LAN cards, SCSI cards, audio cards or CardBus cards). If no
user installed driver software is found, the system then determines whether the card can be
supported by the hostÕs built-in ÒSuper ClientÓ driver (typically memory cards, ATA devices or
Fax/Modems). The host then links the card with the appropriate driver and configures the card and
the socket.
In the case of a data storage device such as a memory card or disk drive, the file system must be
able to access the data on the card. This sometimes requires a link to be established with a specific
installable file system.
A user may want to ÒsuspendÓ and ÒresumeÓ the operation of notebook or other system with PC
Cards in the slots. To do this successfully, a card-specific routine must communicate with advanced
power management software, which must then access the card through Card and Socket Services.
Lastly, Card Services Client Drivers must operate consistently from one card supplier to the next,
and be as flexible as possible to accommodate varying system configurations automatically. Also,
Òcard-awareÓ application programs, like communications programs, need to coexist with older
applications programs.
Ó 1999 PCMCIA/JEIDA 11
OVERVIEW AND GLOSSARY
4 . TE C H N IC AL DE S C R IP T ION S
Ó 1999 PCMCIA/JEIDA 13
TECHNICAL DESCRIPTIONS
14 Ó1999PCMCIA/JEIDA
OVERVIEW AND GLOSSARY
Ó 1999 PCMCIA/JEIDA 15
TECHNICAL DESCRIPTIONS
16 Ó1999PCMCIA/JEIDA
OVERVIEW AND GLOSSARY
Ó 1999 PCMCIA/JEIDA 17
TECHNICAL DESCRIPTIONS
NOTE: The inclusion of partition, file format, translation layer or media type
information in this document does not constitute an endorsement by
PCMCIA or JEIDA. PCMCIA and JEIDA are only acknowledging this
information has been used to record data on a PC Card and, in some cases,
that PCMCIA and JEIDA members have agreed that using the documented
implementation may reduce problems encountered when attempting to
interchange data between host systems.
18 Ó1999PCMCIA/JEIDA
OVERVIEW AND GLOSSARY
Ó 1999 PCMCIA/JEIDA 19
TECHNICAL DESCRIPTIONS
20 Ó1999PCMCIA/JEIDA
OVERVIEW AND GLOSSARY
4.9 Guidelines
The Guidelines document provides implementation examples and further explanations of the PC
Card Standard to:
· Enhance the interoperability of PC Card components, including card hardware and
software, system hardware and software, and applications.
· Facilitate the development of PC Card technology by increasing the understanding of the
Standard by PC Card Implementation community.
These guidelines are not requirements made by the PCMCIA or JEIDA Standards organizations.
Rather, they are implementation examples, suggestions and hints. The Guidelines included are
described below.
Electrical Guidelines
· CardBus/PCI Common Silicon
· Thermal Logo Usage
Physical Guidelines
· Modem I/O Unshielded Connector for Open Systems
· 15 Position Shielded Latching I/O Connector
· Maximum I/O Connector Dimensions
· Extended Card Dimensions
Software Guidelines
· Enabler Capabilities and Behavior
· Card-Application Interaction
· CardBus Operational Scenarios
· CIS Design for Several Common Implementations
Ó 1999 PCMCIA/JEIDA 21
TECHNICAL DESCRIPTIONS
22 Ó1999PCMCIA/JEIDA
OVERVIEW AND GLOSSARY
4.11.2.2 Still Image, Sound and Related Information Format for PC Card
Digital Still Camera (DSC) 68-Pin Standards
This specification is maintained independently by JEIDA. Please refer to previous releases of the PC
Card Standard or contact JEIDA for this specification.
Ó 1999 PCMCIA/JEIDA 23
OVERVIEW AND GLOSSARY
5 . G L OS S AR Y
Ó 1999 PCMCIA/JEIDA 25
GLOSSARY
Audio Device A device that normally provides both a speaker and microphone for input/output of audio. Optionally, if the
application allows, the device can be limited to only output (speaker) capability.
Average Current Maximum current required averaged over 1 second.
backoff A directive to terminate the current transaction and retry it at a later time, also referred to as retry.
Base Address Register Window A memory or I/O space mapping supported by a Base Address Register in the card's configuration
space.
BIOS Acronym for Basic Input/Output System. When BIOS is in Read-Only Memory devices it may be
referred to as ROM BIOS.
BIST register An optional register in the header region of the CardBus Configuration Space. It is used for control and
status of built-in self tests.
bit field A field containing only 1 bit.
Block A block is the basic 512 byte region of storage into which the storage media is divided. Addressing in the
ATA protocol is performed on block boundaries. Each block of data represents one sector of data using
the ATA Cylinder-Head-Sector address protocol. The Logical Block Address protocol uses sequential
block addresses to access the media.
Block Allocation Map (BAM) An FTL control structure that is used to store Erase Unit block allocation information when hidden areas
are not used to store this information. See the Media Storgage Formats Specification.
BPB Acronym for BIOS Parameter Block. A data structure used by the Microsoft BPB/FAT File System to
describe the size and format of storage media.
bridge The logic that connects one computer bus to another, allowing an agent on one bus to access an agent on
the other, such as a CardBus controller.
BSY (ATA Busy bit) A bit in the ATA Status register which is used by the ATA protocol to indicate that the ATA registers on
the card are not available for use by the host.
burst transfer The basic data transfer mechanism of CardBus PC Cards. A burst is comprised of an address phase
and one or more data phases.
bus acquisition latency The second component of access latency. The amount of time that a requesting device waits for the bus
to become free after CGNT# has been asserted.
bus commands Used to indicate to a target. The type of transaction the master is requesting.
bus master An agent which has an ability to obtain control of the interface and perform memory or I/O reads and
writes to system resources. The master initiates a bus transaction.
Bus Segment Reset Bus Segment Reset is defined as the hardware reset signal that is taken as actual physical input to a
given component within a system. For example the Bus Segment Reset signal for a PCI to CardBus
bridge component is RST# as defined in the PCI Local Bus Specification. For CardBus cards, this is
the CRST# signal.
bus slave An agent that sends or receives data under control of a bus master, also referred to as bus target or a bus
transaction target.
There are two types of slaves:
I/O slave - selected by its address in the I/O address space;
memory slave - selected by its address in the memory address space.
Callback Handler A Client routine to which Card Services may transfer control when events requiring Client notification
occur.
Card Configuration and Status This Configuration register provides the host control for the following functions: Status Changed Signal,
Register Audio Signal, and Power Down Request. It provides status information about Status Changed state and
Interrupt Request state. In addition, it can be used to advise the card that all I/O to the card will be eight
bits wide. Refer to the PC Card Standard Electrical Specification for detailed information about this
register.
Card Enumeration The process performed by the host to provide a unique card identification number to each drive when the
Twin Cards option is used. The host writes a unique number to the Copy field in the Socket and Copy
register of each card sharing the same configuration.
Card Information Structure A data structure which is stored on a PC Card in a standard manner which contains information about
(CIS) the capabilities of the card as well as the formatting and organization of data on the card.
Card software Software which configures and/or accesses the card. This may include:
· device drivers
· applications
· generic enablers
In PC Card parlance, card software is that software which could be a Card Services client.
CardBus Function A set of functionality inside a CardBus card represented by one 256 byte configuration space. Each
CardBus function within a device generally has a separate software driver.
26 Ó1999PCMCIA/JEIDA
OVERVIEW AND GLOSSARY
CardBus PC Card PC Cards which use the 32-bit interface defined in the PC Card Standard. A single CardBus PC Card
may contain up to eight CardBus Functions.
CardBus PC Card adapter The chip(s) that isolate(s) the CardBus PC Cards from the rest of the system. Depending on the
definition of the system bus, this might be a set of electrical buffers or it may be a complete bus bridge.
This is the same as the host CardBus PC Card adapter.
CardBus PC Card arbiter A function which controls access to the CardBus PC Card interface.
CardBus PC Card connector An expansion connector that conforms to the electrical and mechanical requirements of the PC Card
Standard for CardBus PC Cards.
CardBus PC Card sequencer An entity which performs the actual CardBus PC Card operations in a device, e.g., a state machine. The
sequencer guarantees that the CardBus PC Card protocol is not violated.
CardBus PC Card socket A receptacle into which a CardBus PC Card can be inserted. The term socket has similar meaning, but
can apply to either 16-bit PC Card, CardBus PC Card, or both types of sockets.
central resource The interface support functions supplied by the host system which is typically in a host CardBus PC
Card adapter, or could be distributed in the system.
CHS Acronym for Cylinder-Head-Sector addressing.
CIS Acronym for Card Information Structure.
Clear (a bit) A bit is Cleared when its value is set to "0."
Client A user of Card Services, Socket Services, or XIP functions. May be a device driver, utility program or
application program.
clock edge (or edge) Refers to the rising edge of the clock (CCLK). The only time that the signals have any significance on
the CardBus PC Card interface is at the rising edge of the clock.
Cluster Another term for a block.
Command Block Registers The ATA Command Block registers include the following ATA registers: Data register(s), Error register,
Feature register, Sector Count register, Sector Number register, Cylinder Low register, Drive/Head
register, Command register, and Status register, but not the Alternate Status register. Seven of the
Command Block registers are written by the host to provide a command and its parameters. These
registers are: Feature register, Sector Count register, Sector Number register, Cylinder Low register,
Cylinder High register, Drive/Head register, and Command register.
Common Memory Conventional memory area on 16-bit PC Cards when REG# is negated.
Common Memory Space This 16 bit wide, memory space is one of the three address spaces available on the 16-bit PC Card.
This address space is accessed by memory read and memory write operations which occur while the
REG# signal is negated. This address space is defined both for bytes located at even and odd byte
addresses. A PC Card bus multiplexing protocol is used to ensure that the odd bytes of this space can
be accessed by both eight and 16 bit hosts. The ATA registers are located in this space when Memory
Mapped ATA registers are supported.
Configuration Configuration is a process by which a host initializes or alters its socket operation and the Configuration
registers on a PC Card to match the PC Card's capabilities to the host's capabilities and available
system resources.
configuration address space See configuration space
configuration cycle A CardBus PC Card cycle used for system configuration via the configuration address space.
Configuration Option Register This register is the first of the Card Configuration registers located in the Attribute Memory Space of a
PC Card. It is used by the host to control the PC Card's Configuration Index in bits 5 to 0, its Interrupt
Mode in bit 6 (Pulsed = 0 or Level =1) and the PC Card Soft Reset in bit 7 (Soft Reset asserted = 1).
Configuration Registers A set of registers, defined by the PC Card Standard, which are used by the host to control the operational
configuration of the card.
Configuration Space A CardBus PC Card address space, used for configuration and error handling, which consists of a 64-
byte header space and a 192-byte device-dependent space.
Contiguous I/O Addresses An I/O address decoding in which the Card decodes address lines (example A[3::0]), while the Socket is
responsible for decoding all other address lines to produce the Card Enable signals for I/O cycles to the
card.
Control Block Registers The ATA Control Block registers include the following ATA registers: Alternate Status register, Device
Control register and Drive Address register.
Custom Interface Custom Interfaces support enhanced features, such as internal bus extensions, or customized signals
not applicable across architectures.
Cylinder Group of tracks accessed without moving the head used to read or write rotating media.
Cylinder-Head-Sector Address A method for specifying the location of a block of data on a mass storage device. This is the traditional
method for addressing a block of data on rotating media using the ATA protocol. This method partitions
an address into a cylinder portion, one or more heads within each cylinder and one or more sectors
within each cylinder-head combination.
Ó 1999 PCMCIA/JEIDA 27
GLOSSARY
DAA Direct Access Attachment. A device that provides electrical protection to telecommunications medium. It
may be internal or external to a Modem I/O Card. (See Guidelines)
Device Dependent Space The last 192 bytes of the CardBus PC Card Configuration Space. In this context, ÒdeviceÓ is synonymous
to Òfunction.Ó
Digital Video Broadcasting Port A PC Card Custom Interface which provides a bi-directional video and audio bus and a command
control interface providing a DVB compliant Conditional Access system.
Direct Memory Access (DMA) The process of moving data from I/O to memory or vice versa without the intervention of the processor.
Direct Memory Access, third When DMA is performed by a DMA controller as opposed to having an I/O device become a master on
party the bus and move the data to/from memory on its own.
Directory A system file used to maintain the structure of a file system.
DMA Acronym for Direct Memory Access
DOS Acronym for Disk Operating System. More specifically, the term refers to MS-DOS, DR DOS, Novell
DOS, Datalight ROM DOS, et al.
Double Word A 32-bit block of data, also known as Quadlet.
Dual Drive The Dual Drive option defines a single PC Card ATA mass storage card that contains two separate and
distinct logical ATA devices. One device acts as the ATA Master, the other as the ATA Slave.
DUT Device Under Test.
DVB An acronym for Digital Video Broadcasting, a European television standardization body
DWORD See Double Word.
Edge Sensitive Interrupt An interrupt detected by the host system based upon the transition of the signal from negated to asserted.
The host must see the edge to latch this type of interrupt. Commonly used in ISA Bus machines.
EISA Acronym for Extended Industry Standard Architecture. Refers to an expansion bus promoted by
manufacturers of IBM-compatible personal computers that feature 32-bit addressing and bus-mastering
capabilities. Not compatible with Micro Channel. Compatible with ISA 8-bit and 16-bit adapter cards.
EISA Bus An internal host Bus which is available in some hosts and can be used to connect PC Card sockets to the
host CPU. An EISA bus can program each interrupt request line for either positive-true, edge sensitive,
interrupts (IRQn) or negative-true, level sensitive, interrupts (IRQn#).
End-user A person who uses a host system.
Erase Unit The area of flash media that is handled as a single erasable unit by the FTL. An Erase Unit may be one
(1) or more Erase Zones. All Erase Units in an FTL partition are the same size. The size of an Erase
Unit is set when the FTL partition is formatted and the Erase Unit Headers written to the media. See the
Media Storgage Formats Specification.
Erase Unit Header An FTL data structure that describes an Erase Unit. See the Media Storgage Formats Specification.
Erase Zone An area of flash media that must be erased as a single unit due to the characteristics of the media. May
be determined from DGTPL_BUS and DGTPL_EBS in the Device Geometry Info field of the Device
Geometry tuple, if present in the Card Information Structure. See the Media Storgage Formats
Specification.
exclusive access An access to a target's address range which is guaranteed to complete without being interrupted by an
access to the same target by another bus master. Also known as atomic operation.
FFS Acronym for Flash File System.
field Depending on context, field may have different meanings.
· In the context of a tuple, a field is the smallest readable unit which has a distinct meaning.
· In the context of configuration and memory space, a field is a distinct area in a register.
File A related unit of information stored on media.
File System Part or extension of an operating system that manages files on a host system. May be limited or
optimized to one type of media.
Flash A type of non-volatile media that may allow byte read and write access, but requires the media to be
erased before it is written. In addition, erase operations are required to be performed on a block of
contiguous bytes.
FTL Acronym for Flash Translation Layer.
Function A PC Card capability, for example, a modem or LAN function.
function X (X is a number) In a multifunction PC Card, each function is numbered uniquely. Numbering begins at 0, and all cards
will therefore have a function 0. From the Card Services' client point of view, functions are numbered 1
to n, and all cards will therefore have a function 1.
28 Ó1999PCMCIA/JEIDA
OVERVIEW AND GLOSSARY
generic enabler A Card Services client which is capable of configuring a variety of cards. It may or may not have other
capabilities such as:
· providing an alternate interface to Card Services
· providing the user information about the installed cards
This type of enabler is not custom designed for configuring specific cards; but, using the CIS and the
Card Services interface, it can configure many different kinds of cards.
graceful rejection It is made clear to the user that the PC Card is not usable in that socket, either through a message
(visual or audio), or mechanical keying. In addition, no data corruption and no physical, electrical, or
functional damage is caused to the system or card.
Handle A Card Services assigned identifier associated with Card Services managed system resources.
Hardware Reset See PC Card Hardware Reset.
Hardware Window A 16-bit PC Card physical window (either memory or I/O). This is an area in a host systemÕs memory
or I/O address space through which a 16-bit PC Card may be addressed.
Header Space The first 64 bytes of the CardBus PC Card Configuration Space. The Header Space consists of fields
which allow a CardBus PC Card function to be generically controlled. See also Device Dependent
Space.
Hidden Arbitration Arbitration that occurs during a previous access so that no CardBus PC Card bus cycles are consumed
by arbitration, except when the bus is idle.
High (Logic Level) A signal is in the high logic state when it is above VIH level. See the PC Card Standard Electrical
Specification for the precise electrical definition.
Host A computer system or other equipment which contains hardware (a Socket) and software for utilizing a
PC Card.
Host System Same as host
hot swapping The ability to insert or remove a PC Card without cycling the system power or re-booting the system.
I/O An abbreviation for Input / Output.
I/O Address Space The I/O address space is one of the three address spaces available on a PC Card. The I/O address
space is accessed by asserting the I/O Read signal, IORD#, or the I/O Write signal, IOWR#, while the
Attribute Memory Select Signal, REG#, and at least one Card Enable, CE1# or CE2# are asserted.
I/O Card PC Card Standard compliant card used for I/O (input/output) operations and connected internally to
medium via a Medium Access Device. (See Guidelines)
I/O Cycle An I/O cycle is an Input operation(I/O Read) or Output operation (I/O Write) which accesses the PC
Card's I/O address space.
I/O Interface The I/O Interface is an interface supporting both memory cycles and I/O cycles. This interface is not
active at power up or following a PC Card reset. This interface is permitted to be enabled when both the
PC Card socket and PC Card installed in the socket support the I/O interface. The host configures a PC
Card for the I/O interface using the Configuration Option register. PC Cards which support the I/O
interface must indicate their support in the CIS on the card.
I/O Mapped A storage location or register is I/O mapped when it is available to be accessed using I/O cycles. The
register or storage location might also be accessible using memory cycles, in which case it would also
be memory mapped.
IDE Acronym for Integrated Drive Electronics. Disk storage devices with IDE are often referred to as ATA
drives.
idle state Any clock period that the bus is idle (CFRAME# and CIRDY# are deasserted).
IEEE Acronym for the Institute for Electrical and Electronic Engineers
IEEE 1394 A high speed serial bus that supports both arbitrated asynchronous communications and high-priority
isochronous transmissions necessary for real-time full motion video and other high-speed data transfer.
Init. or Initialization The state that a device must enter immediately following the Reset state. In this state, the device must
allow access to its Configuration Space. It must draw a minimum current/power necessary for
accessing its Configuration Space, and for the device initialization.
IREQ# The Interrupt Request signal between a PC Card and a socket when the I/O interface is active.
IRQn One of the Interrupt Request Signals between a socket and the host's CPU. Selection of the specific
Interrupt Request Signal which is used to carry an Interrupt Request from a PC Card to the Host's CPU
is controlled by hardware associated with the socket. Depending upon the host system implementation
the IRQn signal may be either IRQn or IRQn#.
ISA Acronym for Industry Standard Architecture. Refers to an IBM-compatible expansion bus of the type
incorporated in IBM-AT compatible personal computers. Uses 16-bit addressing.
ISA Bus Acronym for Industry Standard Architecture Bus. An internal host Bus which is available in some hosts
and can be used to connect PC Card sockets to the host CPU. While serving the same basic purpose as
Ó 1999 PCMCIA/JEIDA 29
GLOSSARY
a Micro Channel bus or an EISA bus, some bus protocols and signals are different. An ISA bus uses
positive-true, edge sensitive, interrupt request lines (IRQn).
JEDEC Acronym for Joint Electronic Device Engineering Council.
JEIDA Acronym for Japan Electronic Industry Development Association.
keepers Another name for pull-up resistors that are only used to sustain a signal state.
latency See access latency.
latency timer A mechanism for ensuring that a bus master does not extend the access latency of other masters beyond
a specified value.
LBA Acronym for Logical Block Address.
legacy PCI devices A class of devices built before the PCI Bus Power Management Interface Specification for PCI-to-
CardBus Bridges was added to the PC Card Standard and are PC Card Standard, February 1995
compliant. Legacy PCI to CardBus bridge and CardBus card devices are assumed to be in the D0 power
management state whenever power is applied to them.
Level Sensitive Interrupt A host system interrupt based upon the logic level of the signal which causes repeated interrupts as long
as the interrupt request signal is in the asserted state, and the interrupt request is not disabled. Used in
Micro Channel Architecture bus hosts and available in EISA bus hosts.
LIM Acronym for Lotus/Intel/Microsoft, commonly used to refer to an Expanded Memory Specification, for
page swapping and memory management on DOS-based computers (LIMÊ4.0).
livelock A condition in which two or more operations require completion of another operation before they can
complete.
Logical Address An address based on accessing the media in Logical Erase Unit order. See the Media Storgage
Formats Specification.
Logical Block Address A logical block address is a sequential address for accessing the blocks on the storage media. The first
block of the media is addressed as block 0 and succeeding blocks are numbered sequentially until the
last block is encountered.
Logical Erase Unit Number A logical number assigned to an Erase Unit by the FTL. The FTL assigns logical numbers to Erase
(LogicalEUN) Units to remap the ordering of the physical media and simplify recovering superseded areas. See the
Media Storgage Formats Specification.
LONGLINK A LONGLINK is a pointer from one tuple chain to another. Such a link is described by one of the
LONGLINK tuples: CISTPL_LONGLINK_A, CISTPL_LONGLINK_C, CISTPL_LONGLINK_CB. See
Metaformat Specification
Low (Logic Level) A signal is in the low logic level when it is below or equal to the VIH level. See the Electrical
Specification for the precise electrical definition.
LSB Acronym for Least Significant Bit and Least Significant Byte. That portion of a number, address or field
which occurs rightmost when its value is written as a single number in conventional hexadecimal or
binary notation. The portion of the number having the least weight in a mathematical calculation using the
value.
Mandatory A characteristic or feature which must be present in every implementation of the standard.
mapping Associating a given card address space with a host system address space.
master See Bus Master
master-abort A termination mechanism that allows a master to terminate a transaction when no target responds.
Maximum Interface A 7 position connector interface on the I/O Modem PC Card, connected to DAA. (See Guidelines)
MBR Acronym for Master Boot Record. An MBR is a specially formatted first physical sector on block
storage media.
Media Material used to store data. May be silicon, magnetic oxide or any other material that can retain
information for later retrieval.
Medium Access Device A device that provides access to a communications medium; in this instance through a Data Access
Arrangement (Modem or Modem-FAX). (See Guidelines)
memory area An area of the card memory addressed by a memory handle. It may be part of a single memory region
or span two or more memory regions.
Memory Cycle A memory cycle is a memory read operation (using Output Enable) or memory write operation (using
Write Enable) which accesses the PC Card's common memory or attribute memory address space.
memory handle A Card Services-assigned identifier for a card memory area. Used to access memory on a card with the
Card Services read, write, copy, and erase memory functions.
Memory Interface The memory interface is the default interface after power up, PC Card Hardware Reset and PC Card
Soft Reset for both PC Card cards and sockets. This interface supports memory operations only.
Contrast with I/O interface.
Memory Mapped A storage location or register is memory mapped when it is available to be accessed using memory
30 Ó1999PCMCIA/JEIDA
OVERVIEW AND GLOSSARY
cycles. The register or storage location might also be accessible using I/O cycles, in which case it would
also be I/O mapped.
memory paging A method of extending PC Card memory space to contain as many as 242 Common Memory locations.
Without memory paging, the 26 address signals at the PC Card connector allow 64Mbytes of Common
Memory.
memory region A homogeneous card memory area using one type of memory device.
Metaformat Low level format standard of a PC Card.
Micro Channel Micro Channel Architecture. Refers to an IBM expansion bus of the type incorporated in some of the
personal computers in the PS/2 line. Features 32-bit addressing and bus-mastering capabilities. Not
compatible with ISA or EISA. A Micro Channel Bus uses negative-true, level sensitive, interrupt request
lines (IRQn#).
Minimum Interface A 4 position connector interface on the I/O Modem PC Card, connected to DAA. (See Guidelines)
motherboard A circuit board containing the basic functions (e.g., CPU, memory, I/O, and expansion connectors) of a
host system.
MSB Acronym for Most Significant Bit and Most Significant Byte. That portion of a number, address or field
which occurs leftmost when its value is written as a single number in conventional hexadecimal or
binary notation. The portion of the number having the most weight in a mathematical calculation using the
value.
MTD Acronym for Memory Technology Driver. Embedded or installable component of Card Services that
contains device-specific read, write, copy and erase algorithms.
Negated A signal is negated when it is in the state opposed to that which is indicated by the name of the signal.
See the Conventions section. Opposite of Asserted.
NMI Acronym for Non-Maskable Interrupt (usually caused by a catastrophic error).
Offset The offset of a port or a memory location is the difference between the address of the specific port or
memory address and the address of the first port or memory address within a contiguous group of ports
or a memory window. This term is used when identifying the locations of registers located with respect
to the base address of a block of contiguous I/O ports. It is also used when identifying the location of
memory mapped registers with respect to the base address of the memory window.
Open System Cards Cards which contain selected I/O connectors and electrical-performance components, such that cables
using connector plugs described herein can be used interchangeably with similar function cards
regardless of supplier. (See Guidelines)
Operating System Software on a host system that manages resources and provides services, including power
management services, device drivers, user mode services, and/or kernel mode services.
optional A characteristic or feature which is not mandatory, but is specifically permitted. If an optional
characteristic or feature is present, it must be implemented as described in this the PC Card Standard.
Optional characteristics or features are specifically identified.
Ó 1999 PCMCIA/JEIDA 31
GLOSSARY
originating device From the perspective of the operating system (Host CPU), the first bridge component encountered with
a PCI bus downstream of it is defined as the Originating Device for that PCI bus segment. For a
CardBus card, the originating device is the PCI to CardBus bridge controlling its bus (see figure below).
CPU
Host Bridge
Originating Device
PCI Bus I/F for bus(0)
PCI Bus(0)
PCI to CardBus
Bridge
Secondary Bus I/F Originating Device
for CardBus bus
CardBus bus
output driver An electrical drive element (transistor) for a single signal on a CardBus PC Card device.
page A subdivision of a 16-bit PC Card window. If there is more than one page in a window, all pages are 16
KBytes in size.
Paging See memory paging
partition A subdivision of a storage device, typically formatted for use with a single type of file system.
PC Acronym for Personal Computer. Often used to refer to an 80x86 based computer system.
PC Card A memory or I/O card compatible with the PC Card Standard. When cards are referred to as PC
Cards, what is being addressed are those characteristics common to both 16-bit PC Cards and CardBus
PC Cards.
PC Card Hardware Reset PC Card Hardware Reset is caused when the socket asserts the RESET signal to the PC Card. During
PC Card Hardware Reset, the PC Card interface is set to be the Memory Only Interface, and the
Configuration Option register is set to 00H. Other configuration registers and the READY signal are also
affected as detailed in the PC Card Standard.
PC Card Soft Reset PC Card Soft Reset is caused when the host sets bit 7 of a PC Card's Configuration Option register. PC
Card Soft Reset is asserted while bit 7 of Configuration Option register is set. The effect of PC Card Soft
Reset is identical to the effect of PC Card Hardware Reset except that bit 7 of the Configuration Option
register is not cleared by the reset condition. Because the other bits of the Configuration Option are
written at the same time as the PC Card Soft Reset bit, it is recommended that the PC Card Soft Reset
bit be cleared by writing a 00H to the Configuration Option register.
PC Card Standard The PC Card Standard. The applicable revision is given in the Related Documents section.
PCI Acronym for the Peripheral Component Interface bus
PCI to CardBus bridge PCI to CardBus bridges couple two independent buses together. They are characterized by a primary
bus interface, and a secondary bus interface and are always a PCI bus and a CardBus card bus.
PCI device A physical device consisting of one load on the PCI bus and having only one IDSEL input. This single
PCI Device may contain up to 8 PCI Functions.
32 Ó1999PCMCIA/JEIDA
OVERVIEW AND GLOSSARY
PCI or CardBus function A set of functionality inside a PCI or CardBus Device represented by one 256 byte configuration space.
Each PCI and CardBus function within a device generally has a separate software driver.
PCI Function Context The variable data held by the PCI function, usually volatile. Function context refers to small amounts of
information held internal to the function. Function Context is not limited only to the contents of the
functionÕs PCI registers, but rather refers also to the operational states of the function including state
machine context, power state, execution stack (in some cases), etc. For a PCI to CardBus Bridge, the
internal status and mask registers and the VCC control signals would be a special case of Function
Context which must be preserved.
PCMCIA Acronym for the Personal Computer Memory Card International Association.
peer-to-peer This term is used to describe data transfers between two agents which are both capable of gaining the
bus mastership. It is used to specify the rules of changing the master/slave relationships between such
agents.
phase One or more clocks in which a single unit of information is transferred, consisting of:
· an address phase (a single address transfer)
· a data phase (one transfer state plus zero or more wait states)
Physical Address An address based on accessing the media in Physical Erase Unit order. See the Media Storgage
Formats Specification.
Physical Erase Unit Number The number assigned to an Erase Unit based on its location on the physical media. This number never
(PhysicalEUN) changes and is implied by the Erase Unit's position on the media. The Erase Unit at the beginning of an
FTL partition is known as the First Physical Erase Unit. If the partition begins at physical address zero
(0), the First Physical Erase Unit is number zero (0). See the Media Storgage Formats Specification.
Pin Replacement Register The Pin Replacement register is the third Card Configuration register. It is used to retrieve status
information from the PC Card about Battery, Busy and Write Protect while the card has the I/O interface
active.
plug-n-play An ability to insert and put into operation, or remove a PC Card without cycling the system power, re-
booting the system, or requiring a manual user intervention for configuration.
PME Context Power Management Event Context is defined as the functional state information and logic required to
generate Power Management Events (PMEs), report PME status, and enable PMEs.
positive decoding A method of address decoding in which a device responds to accesses only within an assigned address
range. See also subtractive decoding.
POST Acronym for Power-On Self Test. A series of diagnostic routines performed when a system is powered
up.
power management Mechanisms in software and hardware to minimize system power consumption, manage system
thermal limits and maximize system battery life. Power management involves tradeoffs among system
speed, noise, battery life, and AC power consumption.
Power Management Event A power management event is the process by which a PCI or CardBus function can request a change of
(PME) its power consumption state. Typically a device uses a PME to request a change from a power savings
state to the fully operational (and fully powered) state. However, a device could use a PME to request a
change to a lower power state. A power management event is requested via the assertion of the PME#
signal for a PCI-to-CardBus Bridge, assertion of CSTSCHG for a CardBus card and STSCHG# for a
PC Card. The power management policies of the system ultimately dictate what action is taken as a
result of a power management event.
primary (ordinate) bus/side The primary bus of a PCI to CardBus bridge or CardBus PC Card refers to the bus that is topologically
closest to the CPU that is running the operating system.
Primary I/O Addresses As applicable to PC Card ATA mass storage cards, it is the set of addresses 1F0H-1F7H and 3F6H-3F7H
at which the first fixed disk controller is located in a PC/AT computer system. Use of these addresses
allows emulation of the first ATA or IDE disk controller at its standard addresses.
Pull-ups Resistors used to insure that signals maintain stable values when no agent is actively driving the bus.
Pulse Mode Interrupt A method of transmitting an Interrupt Request from a PC Card to a socket using the IREQ# signal. In this
mode, the IREQ# signal is asserted momentarily when the Card initiates an interrupt and is then negated
regardless of whether or not the interrupt is acknowledged. The method of acknowledgment is specific to
devices on the PC Card. In the case of a PC Card ATA mass storage card, acknowledgment takes place
when the ATA Status register is read. The pulse mode interrupt is designed to be used with the ISA bus
(and the EISA bus when ISA bus interrupt emulation is being performed). The host socket must use an
"open-collector" non-inverting output to drive the ISA bus IRQn signal when it is expecting to share pulse
mode interrupts from the PC Card.
Read/Write Block A subdivision of an Erase Unit. Used by the FTL to track media allocation. The FTL maintains the
allocation state of each Read/Write Block. See the Media Storgage Formats Specification.
READY When asserted, this signal Indicates that the PC Card is completely available for use. The negated state
of the READY signal is used by a PC Card to indicate that it is busy with an internal operation and
access to the card may be restricted. Refer to the Electrical Specification, READY signal and
Ó 1999 PCMCIA/JEIDA 33
GLOSSARY
34 Ó1999PCMCIA/JEIDA
OVERVIEW AND GLOSSARY
system master An agent or a group of agents which controls system configuration and resource management. This is
the same as host from the CardBus PC Card point of view.
system software Includes Socket Services, Card Services and generic enablers.
target An agent that responds (with a positive acknowledgment by asserting CDEVSEL#) to a bus transaction
initiated by a master.
target abort A termination mechanism that allows a target to terminate a transaction in which a catastrophic error
has occurred, or to which the target will never be able to respond.
target latency The third component of access latency - the amount of time that the target takes to assert CTRDY# for
the first data transfer.
Task File Registers In obsolete versions of the ATA Specification, ATA Command Block registers were referred to as the
Task File. See Command Block registers.
termination A transaction termination brings the bus transaction to an orderly and systematic conclusion. All
transactions are concluded when CFRAME# and CIRDY# are deasserted (an idle cycle). Termination
may be initiated by the master or the target.
Thermal Rating A number representing the heat generated by PC Cards (see the Physical Specification) or the ability
of PC Card hosts to remove heat (see the PC Card Host System Specification).
Track Group of sectors all accessed by a single head on one cylinder of a rotating media storage device.
transaction An address phase plus one or more data phases.
transfer state Any CardBus PC Card clock, during a data phase, in which data is transferred.
Transfer Unit An Erase Unit reserved for storing Read/Write Blocks from an Erase Unit being emptied by the FTL
prior to erasure. Transfer Units are not included in the formatted size of the FTL partition presented to
the host file system. See the Media Storgage Formats Specification.
Tuple A tuple is an element of a Card Information Structure. Each tuple has a tuple code which identifies the
type of tuple which is present, a tuple length which specifies the amount of space occupied by the tuple,
and an information area which contains the content of the tuple. Tuples located in the CIS of a PC Card
are examined by host software to determine the capabilities of the card.
tuple chain A linked set of tuples which is parsed completely before any LONGLINK is followed to another tuple
chain. There is at most one LONGLINK per tuple chain.
tuple parsing The action performed by a client whereby a CIS is interpreted into configuration requests and other
useful information.
tuple traversal Locating and reading in sequence all of the tuples on the card. This action is best performed by Card
Services for a client. This is also referred to as "tuple walking" or "walking the CIS.Ó
turnaround cycle A CardBus PC Card cycle used to prevent contention when one agent stops driving a signal and another
agent begins. A turnaround cycle must last one clock and is required on all signals that may be driven by
more than one agent.
Twin Cards An optional field in a Configuration Entry tuple which permits configurations to be described in which
several cards share the same system resources such as I/O ports. The cards are uniquely labeled by
the host using the Copy Number field of the Socket and Copy register. For PC Card ATA, this feature is
used to permit a Drive 0 and a Drive 1 to coexist at the same Primary or Secondary I/O addresses.
Support for the Twin Cards Option is optional in PC Card ATA mass storage cards.
Universal Serial Bus A serial bus standard which allows operation at 12 Mbps with a low speed un-shielded sub-channel
operating at 1.5 Mbps, and offers both asynchronous and isochronous data transfer.
USB See Universal Serial Bus
User Within this document, the term ÒuserÓ refers to the user of Card Services, typically a higher-level
software layer such as a client, and not the end-user of the host computer.
Virtual Address The address recorded in a Read/Write Block's allocation information representing where the stored data
appears in the virtual image presented to the host system. See the Media Storgage Formats
Specification.
Virtual Block The unit of information used by the file system layer above the FTL to read and write data to the media.
The FTL uses Virtual Block sizes that are a logical power of two of 128 bytes or larger. The Virtual
Block size is set when the FTL partition is formatted.
Virtual Block Map (VBM) An array of 32-bit entries used to map a Virtual Block number to a logical address on the media. Space
is always reserved on the media to store the entire VBM. The FirstVMAddress field describes how
much of the VBM is maintained on the media by the FTL.
Virtual Page Map (VPM) An array of 32-bit entries used to map Pages of the Virtual Block Map to a logical address on the media.
The VPM is never stored on the media.
wait state A CardBus PC Card clock, during a data phase, in which no transfer occurs.
Wakeup Event An event which can be enabled to wake the system from a Sleeping or Soft Off state to a Working state
to allow some task to be performed.
Ó 1999 PCMCIA/JEIDA 35
GLOSSARY
Window An area in a host computer's memory or I/O port space through which a PC Card may be addressed.
working state A computer state where the system dispatches user mode (application) threads and they execute. In this
state, devices (peripherals) are dynamically having their power state changed. The user will be able to
select (through some user interface) various performance/power characteristics of the system to have
the software optimize for performance or battery life. The system responds to external events in real
time. It is not safe to disassemble the machine in this state.
X86 Any of a number of CPU chips compatible with the Intel iAPX8086, the Intel iAPX80286, the Intel
iAPX80386, the Intel iAPX80486, or the Intel Pentium.
XIP Acronym for eXecute-In-Place. Refers to specification for directly executing code from a PC Card.
Zoomed Video Port A PC Card Custom Interface which provides a single-source uni-directional video bus between a PC
Card socket and a VGA controller.
ZV Port See Zoomed Video Port
36 Ó1999PCMCIA/JEIDA
P C C A R D S TA N D A R D
Volume 2
Electrical Specification
PCMCIA
JEIDA
©1999, PCMCIA/JEIDA PCMCIA HAS BEEN NOTIFIED BY
All rights reserved. CERTAIN THIRD PARTIES THAT
THE IMPLEMENTATION OF THE
No part of this publication may be STANDARD WILL REQUIRE A
reproduced, stored in a retrieval LICENSE FROM THOSE THIRD
system, or transmitted, in any form or PARTIES TO AVOID
by any means, mechanical, INFRINGEMENT OF THEIR
electronic, photocopying, recording RIGHTS. PCMCIA HAS OBTAINED
or otherwise, without prior written FROM SOME, BUT NOT ALL, OF
permission of PCMCIA and JEIDA. THOSE PARTIES A GRANT OF
Printed in the United States of IMMUNITY THAT PCMCIA WILL
America. EXTEND TO YOU, CONTINGENT
PCMCIA (Personal Computer UPON YOUR ENTERING INTO
Memory Card International AND DELIVERING TO PCMCIA
Association) THE RECIPROCAL GRANT OF
2635 North First Street, Suite 209 IMMUNITY AGREEMENT
San Jose, CA 95134 USA CONTAINED ELSEWHERE IN
+1-408-433-2273 THIS STANDARD.
+1-408-433-9558 (Fax) IMPORTANT:
JEIDA (Japan Electronic Industry In order to receive the Grant of
Development Association) Immunity, the owner of this
Kikai Shinko Kaikan, 3-5-8, Shibakoen Standard must sign and return the
Minato-ku, Tokyo 105, JAPAN enclosed Registration Card to:
+81-3-3433-1923 PCMCIA
+81-3-3433-6350 (Fax) 2635 North First Street, Suite 209
San Jose, CA 95134 USA
The PC Card logo and PC Card are
trademarks of PCMCIA, registered in NEITHER PCMCIA NOR JEIDA
the United States. The PC Card logo MAKES ANY WARRANTY,
and PC Card are trademarks of EXPRESS OR IMPLIED, WITH
JEIDA, registered in Japan. RESPECT TO THE STANDARD,
INCLUDING AS TO NON-
INFRINGEMENT,
MERCHANTABILITY OR FITNESS
FOR A PARTICULAR PURPOSE.
THIS STANDARD IS PROVIDED TO
YOU ÒAS IS.Ó
CONTENTS
1. Overview ______________________________________________1
1.1 Summary of Electrical Specification Changes....................................................................2
1.1.1 PCMCIA 2.0/JEIDA 4.1 (September 1991).......................................................................................................................2
1.1.2 PCMCIA 2.1/JEIDA 4.2 (July 1993)....................................................................................................................................2
1.1.3 PC Card Standard February 1995 Release (Release 5.0) ............................................................................................2
1.1.4 PC Card Standard March 1995 Update (Release 5.01)...............................................................................................3
1.1.5 PC Card Standard May 1995 Update (Release 5.02)...................................................................................................3
1.1.6 PC Card Standard November 1995 Update (Release 5.1)..........................................................................................3
1.1.7 PC Card Standard May 1996 Update (Release 5.2) .....................................................................................................3
1.1.8 PC Card Standard 6.0 Release (March 1997) .................................................................................................................3
1.1.9 PC Card Standard 6.1 Release (April 1998)....................................................................................................................3
1.1.10 PC Card Standard 7.0 Release (February 1999)..........................................................................................................3
iv ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
© 1999 PCMCIA/JEIDA v
CONTENTS
vi ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
© 1999 PCMCIA/JEIDA ix
CONTENTS
x ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
© 1999 PCMCIA/JEIDA xi
CONTENTS
FIGURES
Figure 3Ð1 CCD[2::1]# and CVS[2::1] Connections.....................................................................10
Figure 5-1 CardBus PC Card Basic Read Operation ...................................................................83
Figure 5-2 CardBus PC Card Basic Write Operation...................................................................84
Figure 5-3 CardBus PC Card Master Initiated Termination........................................................85
Figure 5-4 CardBus PC Card Master-abort Termination.............................................................87
Figure 5-5 Target Initiated Termination .......................................................................................90
Figure 5-6 CardBus PC Card Basic Arbitration ...........................................................................92
Figure 5-7 Arbitration for Back-to-Back Access...........................................................................94
Figure 5-8 Components of Access Latency ..................................................................................95
Figure 5-9 CardBus PC Card Starting an Exclusive Access ......................................................100
Figure 5-10 CardBus PC Card Continuing an Exclusive Access...............................................101
Figure 5-11 CardBus PC Card Accessing a Locked Agent........................................................102
Figure 5-12 CDEVSEL# Assertion..............................................................................................103
Figure 5-13 Address Stepping ....................................................................................................106
Figure 5-14 Type 0 and Type 1 Configuration Accesses ...........................................................107
Figure 5-15 Layout of CONFIG_ADDRESS Register ................................................................108
Figure 5-16 Bridge Translation for Type 0 Configuration Cycles..............................................109
Figure 5-17 Parity Operation ......................................................................................................111
Figure 5-18 CardBus PC Card Clock Stop or Slow Down.........................................................117
Figure 5-19 CardBus PC Card Clock Start or Speed up............................................................118
Figure 5-20 Maintaining CardBus PC Card Clock.....................................................................119
Figure 5-21: CardBus PC Card Function Event Register ...........................................................122
Figure 5-22: Function Event Mask Register ................................................................................123
Figure 5-23: Function Present State Register ..............................................................................125
Figure 5-24: Function Force Event Register.................................................................................127
Figure 5-25 V/I Curves for 3.3 V Signaling................................................................................133
Figure 5-26 Test Waveform for 3.3 V Signaling (CCLK) ...........................................................134
Figure 5-27 CardBus PC Card Clock Waveform .......................................................................135
Figure 5-28 Output Timing Measurement Conditions ..............................................................137
Figure 5-29 Input Timing Measurement Conditions..................................................................137
Figure 5-30 Clock Skew Diagram ...............................................................................................139
Figure 5-31 Reset Timing.............................................................................................................140
© 1999 PCMCIA/JEIDA xv
FIGURES
Figure 5-32 Card with Memory and I/O Space in Host System with no Separate I/O Space149
Figure 5-33 Memory-only Card in Host System.........................................................................150
Figure 5-34 I/O Space-only Card in a Host System with a Separate I/O Space.....................151
Figure 5-35 Card and Host with All Spaces Described .............................................................152
Figure 5-36 CardBus PC Card Configuration Space .................................................................154
Figure 5-37 COMMAND Register Layout..................................................................................155
Figure 5-38: STATUS Register Layout .......................................................................................157
Figure 5-39 BIST Register............................................................................................................159
Figure 5-40 Base Address Register Mapping for Memory Space ..............................................160
Figure 5-41 Base Address Register Mapping for I/O Space .....................................................161
Figure 5-42 CIS POINTER Layout .............................................................................................161
Figure 5-43 Expansion ROM Base Address Register Layout ....................................................163
Figure 5-44 Socket EVENT Register............................................................................................176
Figure 5-45 Socket MASK Register .............................................................................................177
Figure 5-46 Socket PRESENT STATE Register...........................................................................179
Figure 5-47 Socket FORCE Register............................................................................................181
Figure 5-48 Socket CONTROL Register......................................................................................183
Figure 6-1: Operating System Directed Power Management System Architecture ..................191
Figure 6-2: Example "Originating Devices" ................................................................................192
Figure 6-3: Standard PCI Configuration Space Header Type 0 ................................................197
Figure 6-4: Capabilities Linked List............................................................................................199
Figure 6-5: Power Management Register Block ..........................................................................200
Figure 6-6: PCI Bus PM State Transitions ..................................................................................209
Figure 6-7: PCI Function Power Management State Transitions...............................................214
Figure 6-8: Non-Bridge CardBus Function Power Management Diagram................................216
Figure 6-9: CardBus Card Power Management Diagram..........................................................220
Figure 6-10: Vcc to VAUX Transitioning .......................................................................................225
Figure 8Ð1 Host-side Test Board Layout ...................................................................................233
Figure 8Ð2 Card-side Test Board Layout ...................................................................................234
Figure 9-1 Example ZV Port Implementation ............................................................................239
Figure 9-2 ZV Port Signals on PC Card Socket ..........................................................................242
Figure 9-3: 1A I2S Format - MCLK = 256fs................................................................................244
Figure 9-4: 1B I2S Format - MCLK = 384fs ................................................................................244
Figure 9-5 Video Interface Timing ..............................................................................................245
xvi ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
TABLES
Table 3Ð1 Card Detect and Voltage Sense Connections.................................................................8
Table 5Ð1 CardBus PC Card List of Signals ................................................................................68
Table 5Ð2 PC Card Pin 1 to Pin 34 Assignments.........................................................................70
Table 5Ð3 PC Card Pin 35 to Pin 68 Assignments.......................................................................71
Table 5Ð4 CardBus PC Card Commands ....................................................................................75
Table 5Ð5 Address Bus Encoding.................................................................................................80
Table 5Ð6 Common Access Field Definitions.............................................................................107
Table 5Ð7 DC Specification for 3.3 V Signaling..........................................................................131
Table 5Ð8 AC Specifications for 3.3 V Signaling ........................................................................132
Table 5Ð9 AC Specification for 3.3 V Signaling (CCLK)............................................................133
Table 5Ð10 CardBus PC Card Clock Specifications...................................................................135
Table 5Ð11 3.3 V Timing Parameters..........................................................................................136
Table 5Ð12 Measurement and Test Condition Parameters........................................................137
Table 5Ð13 Clock Skew Parameters............................................................................................138
Table 5Ð14 Minimum and Maximum Pull-up Resistor Values (3.3 V signaling).....................141
Table 5Ð15 Pull-up/Pull-down Resistor Requirements .............................................................143
Table 5Ð16 Pull-up/Pull-down Resistor Requirements .............................................................144
Table 5Ð17 COMMAND Register Field Definitions ...................................................................156
Table 5Ð18 STATUS Register Field Definition............................................................................158
Table 5Ð19 BIST Register Fields..................................................................................................159
Table 5Ð20 Meaning of the Type Fields for a Memory Base Address Register .........................160
Table 5Ð21 Address Space Indicator Values..............................................................................162
Table 5Ð22 Address Space Offset Values ..................................................................................162
Table 5Ð23 Configuration Space Register Usage Summary ......................................................165
Table 5Ð24 Expansion ROM Image Header ...............................................................................166
Table 5Ð25 CardBus PC Card Data Structure Fields ................................................................167
Table 5Ð26 Code Type Descriptions ...........................................................................................168
Table 5Ð27 Socket EVENT Register Fields..................................................................................177
Table 5Ð28 Socket MASK Register Fields ...................................................................................178
Table 5Ð29 Socket PRESENT STATE Register Fields.................................................................180
Table 5Ð30 Socket FORCE Register Fields..................................................................................182
Table 5Ð31 Socket CONTROL Register Fields............................................................................183
© 1999 PCMCIA/JEIDA xix
TABLES
xx ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
1. O V E R V IE W
The Electrical Specification describes the connector pinout, interface protocol, signaling
environment, interface timings, programming model, and specifics of card insertion, removal,
power up, and configuration. It is organized in three sub-sections dealing with items common to all
interfaces, 16Ðbit PC Card interface specifics, and CardBus PC Card interface specifics.
The PC Card Standard continues an evolutionary process by providing additional capabilities
thereby expanding the variety of PC Cards that can be supported. This release enables many types
of PC Cards ranging from 16Ðbit slave cards to 32Ðbit bus master cards, including multiple points in
between such as 16Ðbit slave DMA and 32Ðbit slave cards. These capabilities provide higher
performance levels than previously available as well as new features such as card-to-card transfers
without intervention by the host CPU.
As a result, the spectrum of applications which can be supported by PC Cards has again been
broadened. Just as PCMCIA 2.0 / JEIDA 4.1 evolved the PCMCIA 1.0 / JEIDA 4.0 memory only
interface by adding I/O capability, this new release evolves to include the capabilities outlined
below.
The capabilities of 16Ðbit PC Cards have been expanded and now provide:
• 16 bit data / 26 bit addressing.
• 20 MBytes/sec peak bandwidth at 100 ns cycle rate.
• support of 8Ðbit and 16Ðbit Slave DMA.
• compatibility with PCMCIA 2.1 / JEIDA 4.2 and earlier releases and CardBus PC Card Sockets.
• hardware detection of card voltage requirements (5 V, 3.3 V, X.X1 V).
• operation at 5 V, 3.3 V and X.X V voltage levels.
• support of multiple function cards.
• a Card Information Structure (CIS) with expanded capabilities to identify functions and data
formats. (See the Metaformat Specification.)
• a specification for current draw and time to READY.
There is an emerging class of applications which require higher performance - either 32Ðbit
bandwidth, reduced latency via bus master capability, or both. However, there still exists a class of
applications which remain better suited for the 16Ðbit environment because it already offers
sufficient performance. This new release of the PC Card Standard has resolved this dilemma by
developing the CardBus PC Card interface which enables these new functions and still accepts
cards developed to the 16Ðbit PC Card interface.
The CardBus PC Cards provide:
• 32Ðbit multiplexed address/data with parity.
• 132 MBytes/sec peak bandwidth at 33 MHz clock frequency.
• support for Bus Masters on PC Cards.
• synchronous interface.
• 3.3 V and lower voltage operation.
© 1999 PCMCIA/JEIDA 1
OVERVIEW
• support for remote system and/or interface wake up even when the interface is powered down.
• interface power management.
• compatibility with existing (PCMCIA 2.x/JEIDA 4.x) and new 16-bit PC Cards.
• the same PC Card mechanical form factors defined for all PC Cards.
• an enhanced 68-pin connector which provides improved signal grounding/noise reduction -- in
addition to CardBus PC Cards, the socket connector accepts all 16Ðbit PC Cards.
• ability to mix CardBus PC Cards and 16Ðbit PC Cards in sockets controlled by the same
CardBus PC Card adapter.
• hardware detection of the card type installed (CardBus PC Card vs. 16Ðbit PC Card).
• hardware detection of card voltage requirements (5 V, 3.3 V, X.X V2, Y.Y V3)
2 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
1.2 Conventions
This section is intended to give general descriptions of notation conventions used in this document.
(See also the Overview and Glossary.)
© 1999 PCMCIA/JEIDA 3
OVERVIEW
b) Each logic signal whose name does not end with a "#" character has logic high as the asserted
state and logic low as the negated state.
c) Each logic signal whose name ends with a "#" character has logic low as the asserted state and
logic high as the negated state.
4 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
© 1999 PCMCIA/JEIDA 5
COMMON PIN DESCRIPTION
When the VPP[2::1] value required by a card is unavailable in a system, the system may reject the
card.
6 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
3 . CAR D T YP E DE T E C T ION M E C H AN IS M
The card interface (16Ðbit PC Card vs. CardBus PC Card) must be detected before the socket notifies
Card Services of an insertion event. To initially power up a PC Card and determine its
characteristics, VCC and VPP[2::1] must be at a voltage indicated by the Voltage Sense pins. This
section describes how sockets determine the card interface and initial voltage requirements.
If the Card Information Structure (CIS) indicates that the card can operate at voltages other than the
voltage at which it was initially powered up, the host system may change the card's VCC, and
VPP[2::1] accordingly.
© 1999 PCMCIA/JEIDA 7
CARD TYPE DETECTION MECHANISM
8 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
for the CardBus PC Card interface. This is because a CardBus PC Card always ties one Card Detect
pin to a Voltage Sense pin instead of to ground causing it to only pull one of the Card Detect inputs
low. If a 16Ðbit PC Card only socket senses only one Card Detect input low, the user may be
notified that one of the following conditions exists:
1. A card has not been inserted correctly or completely, or
2. The card inserted is of a type not supported by this socket (i.e., CardBus PC Card).
RCD
CCD1#
RVS
CVS1 CVS1_DRV
SOCKET
STATE
MACHINE
CVS2 RVS
CVS2_DRV
PC CARD SIDE
RCD
CCD2#
CONNECTOR
DEBOUNCE
© 1999 PCMCIA/JEIDA 9
CARD TYPE DETECTION MECHANISM
10 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
4 . 1 6 - B IT PC CAR D EL E C T R IC AL I N T E R F AC E
© 1999 PCMCIA/JEIDA 11
16-BIT PC CARD ELECTRICAL INTERFACE
12 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
© 1999 PCMCIA/JEIDA 13
16-BIT PC CARD ELECTRICAL INTERFACE
14 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
There is an additional 64 MB address space for Attribute Memory which is selected by the REG#
signal at the interface. This memory space is inappropriate for DMA operations because only
even-byte addresses are populated.
The Attribute Memory space may be divided into areas for:
1. Card Information Structure Ñ a description of the card's capabilities and specifications and
(optionally) its use. (See also the Metaformat Specification.)
2. Configuration Registers Ñ an optional set of registers which allow the card to be configured
by the system.
3. Reserved Area Ñ the portion of the Attribute Memory space which has not yet been
specified.
The size of each of these areas is determined by the card vendor. The Card Information Structure
must begin at address 0 but need not be a single, contiguous region. It is recommended that the
Card Information Structure and the Function Configuration registers be located at relatively low
addresses to ensure their accessibility by all hosts.
© 1999 PCMCIA/JEIDA 15
16-BIT PC CARD ELECTRICAL INTERFACE
To ensure compatibility in peripheral cards which completely emulate existing fixed address
peripherals, the cards may decode a portion of the address space. For example, a card might decode
only A[9::0] and respond only when a range of addresses corresponding to the peripheral's registers
are selected. Correspondingly, the system could decode address lines A[9::8] and simultaneously
select all the appropriately configured peripheral cards only when A[9::8] is asserted. A peripheral
card drives the Input Port Acknowledge signal (INPACK#) low when an input port on the card is
being accessed. This allows any data buffers in the host between the card and the host's internal bus
to be activated during the access.
Peripheral cards must be configured by the system before their I/O address space becomes
accessible. It is recommended that new devices which do not require software compatibility with
existing drivers decode only enough address lines to address the number of I/O ports
implemented. Furthermore, they should allow the system to locate them arbitrarily in the I/O
address space, thereby eliminating conflicts with other I/O devices.
16 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
A custom interface is handled by the system and the card in a manner similar to an I/O and
Memory interface. Both the socket and the card must use a Memory Only interface when a card is
inserted, or when power is removed from a card. After a card is powered up, the system reads the
card's Card Information Structure. If the card is found to support a custom interface also supported
by the host socket, the card and the socket may be configured to the custom interface mode. The
card is configured using the Configuration Index field of the Configuration Option register. (See 4.15
Card Configuration and see also TPCE_IF: Interface Description Field in the Metaformat
Specification for the configuration entry tuple [CISTPL_CFTABLE_ENTRY].)
© 1999 PCMCIA/JEIDA 17
16-BIT PC CARD ELECTRICAL INTERFACE
To ensure data retention on battery backed-up SRAM cards, and permit power-up initialization of
peripheral cards, a minimum of 20 ms must elapse after:
1. the application of VCC to the card, or
2. RESET signal negated (in systems which support the RESET signal), whichever event occurs
latest.
The Card Enables are used to access both Common and Attribute Memory, and to access I/O. (See
also 4.6.1.1 Common Memory Read Function and 4.13 I/O Function.)
18 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
The host must not access a card until a minimum of 20 ms has passed after VCC is stable, and, for
PCMCIA 2.0 / JEIDA 4.1 release and later systems, after the RESET signal is negated. In addition,
the card's READY line must be asserted before the initial access. If the card will not be initialized
and ready for operations at the end of the 20 ms waiting period, the READY signal will be negated
within 10 µs of RESET or application of VCC to the card. A card that requires more than 20 ms for
internal initialization before access shall negate READY until it is ready for initial access, a period of
time which is not to exceed five seconds following the time at which the RESET signal is negated (or
if no RESET is implemented, VCC is stable).
The PCMCIA 1.0 / JEIDA 4.0 release required that cards containing battery backed-up SRAM not
be accessed before 20 ms after stable power is applied. However, some systems otherwise
conforming to the PCMCIA 1.0 / JEIDA 4.0 release may access a card before the end of the
initialization period. Therefore, it is recommended that during the initialization period the PC
Card's Card Information Structure contain the correct card description. If that is not possible, then it
should contain a valid CIS description of a null or ROM device. This will prevent the PCMCIA 1.0 /
JEIDA 4.0 release system from presuming that the card is an uninitialized SRAM card.
Note: a PCMCIA 1.0 / JEIDA 4.0 release system will never remove the reset
condition (as RESET is not connected in such a system).
If the card will require more than 10 µs to enter the sleep mode, or to return to operating condition
following card wakeup, the READY signal will be negated within 10 µs after the power down bit in
the Configuration and Status register is changed. Following card wakeup the host must not access
the card until a minimum of 10 µs has passed and the card's READY line is asserted. If a card
requires more than 10 µs following wakeup, and before the card is ready for operation, the card
shall negate READY until the card is ready for operation.
When a card and its socket have been configured for the I/O interface, the READY status may be
available in the Pin Replacement register and the signal is replaced on interface pin 16 with the
IREQ# (Interrupt Request) signal. (See also 4.4.7 Interrupt Request (IREQ#) [I/O and Memory
Interface].)
© 1999 PCMCIA/JEIDA 19
16-BIT PC CARD ELECTRICAL INTERFACE
Note: For PC compatible computers it is recommended that IREQ# from the card
be able to be routed to at least the interrupt signals shown in Table 4Ð4 and
Figure 4-1.
COM2 IRQ
Interrupt
from Card COM1 IRQ
Personal
Computer Fixed Disk IRQ
Interrupt Block Floppy Disk IRQ
Select from Diagram Parallel IRQ
System Network IRQ
Figure 4-1 Recommended PC Compatible Interrupt Request Signals
20 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
Note: The pulsed mode interrupt may be lost when more than one interrupting
device shares an interrupt request signal at the system bus, and standard
system and application software is used. Interrupt requests may be lost if
they arrive at the system before a prior request on the shared interrupt
request signal has been fully serviced.
© 1999 PCMCIA/JEIDA 21
16-BIT PC CARD ELECTRICAL INTERFACE
a negated state during 16-bit PC Card DMA transfers to prevent spurious I/O accesses while a
memory address is present on the address lines.
The host system will use REG# as DMA acknowledge when the socket and PC Card are configured
for 16-bit PC Card DMA I/O operations. (See 4.5 DMA Signals Replacing I/O Interface Signals.)
22 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
PC Cards which supply the Binary Audio function are also required to support the Audio Enable bit
in the Function Configuration and Status register. This allows the system to selectively enable or
disable the audio function. (See 4.15.2 Configuration and Status Register.)
It is recommended that systems support the Binary Audio function.
While the card and socket are configured for the Memory Only interface, the BVD2 signal is
available on this pin. (See 4.15.3 Pin Replacement Register.)
© 1999 PCMCIA/JEIDA 23
16-BIT PC CARD ELECTRICAL INTERFACE
socket. If the socket hardware automatically applies power to a PC Card after insertion, it shall not
apply a voltage other than indicated by the Voltage Sense pins (VS[2::1]#).
If VS[2::1]# indicate a VCC value the socket is capable of providing, the socket shall apply that VCC
level to the PC Card. If VS[2::1]# indicate no value of VCC the socket is capable of providing, the
card inputs shall not be driven, the card shall not be powered and the user may be notified. (See
Table 4Ð5 Vcc at Initial Power-Up and CIS Read.)
WA R N IN G
The socket must not actively drive VS1# or VS2# when determining a valid
card insertion (i.e., both CD1# and CD2# pins low). If a socket chooses to
drive VS1# or VS2#, it must set both of them at high-impedance before final
determination of a valid card insertion. Failure to do so can lead to falsely
decoding the VCC requirements and signal protocol of PC Cards.
24 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
Low Voltage key NC 1 ground 5 V key Shall not fit into socket
1
X.X V only CIS Low Voltage key - X.X V available X.X 1 V
Low Voltage key - no X.X V available Shall not be powered-up - user may be notified
Low Voltage key ground ground 5 V key Shall not fit into socket
X.X 1 and 3.3 V CIS Low Voltage key - Only X.X V available X.X 1 V
Low Voltage key - Only 3.3 V available 3.3 V
Low Voltage key - 3.3 V and X.X V X.X 1 V or 3.3 V
available
© 1999 PCMCIA/JEIDA 25
16-BIT PC CARD ELECTRICAL INTERFACE
turn-on and hot insertion). The signal must remain high impedance for at least 1 ms after VCC
becomes valid. All configurable cards (including all I/O Cards) must monitor RESET and return to
the unconfigured state when RESET is active. A card remains in the unconfigured state until the
Configuration Option register has been written with a valid configuration.
PC Cards requiring RESET must enter the unconfigured state each time power is applied. For
example:
1. the card may generate a power-on RESET internally, or
2. the RESET signal may be pulled up to VCC through a ≥100 Kê resistor on cards requiring reset.
This ensures that when a card is inserted into a socket it is reset before the signal pins make contact
with the socket, and the card is reset (continuously) when placed into a PCMCIA 1.0 / JEIDA 4.0
release compatible socket.
RESET must not be connected between PC Cards unless all PC Cards are reset when any card has
VCC power removed.
26 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
© 1999 PCMCIA/JEIDA 27
16-BIT PC CARD ELECTRICAL INTERFACE
Odd-Byte-Only access is enabled when CE1# is negated and CE2# asserted. During Odd-Byte-Only
access, only data lines D[15::8] contain valid data, and A0 is ignored.
4.6.1.3 Common Memory Write Function for OTPROM, EPROM and Flash Memory
OTPROM, EPROM and Flash Memory devices may have additional requirements. Refer to the
JEDIC ID information for CIS information.
28 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
4.6.2.3 Attribute Memory Write Function for Dual Supply OTPROM, EPROM and
Flash Memory
OTPROM, EPROM and Flash Memory devices may have additional requirements. Refer to the
JEDIC ID information for CIS information.
© 1999 PCMCIA/JEIDA 29
16-BIT PC CARD ELECTRICAL INTERFACE
Disabled Low
Always/Never None Low CIS must specify devices (addresses) which ignore the WP
signal and are never write enabled. The remaining devices
follow the WP signal and are therefore always write enabled.
Always/Switch Enabled High CIS must specify devices (addresses) which ignore the WP
signal and are always write enabled. The remaining devices
follow the WP signal.
Disabled Low
Never/Switch Enabled High CIS must specify devices (addresses) which ignore the WP
signal and are never write enabled. The remaining devices
follow the WP signal.
Disabled Low
Always/Never/Switch Enabled High CIS must specify both devices (addresses) which ignore the
WP signal and are always write enabled as well as the
devices which ignore the WP signal and are never write
enabled. The remaining devices follow the WP signal.
Diabled Low
30 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
Table 4Ð11 Common Memory Read Timing Specification for all Types of Memory
Speed Version 600 ns 1,2 250 ns 3 200 ns 150 ns 100 ns
Item Symbol IEEE Min Max Min Max Min Max Min Max Min Max
Symbol
Read Cycle Time tcR t AVAV 600 2 250 5 200 150 100
4 2 3
Address Access Time ta(A) t AVQV 600 250 200 150 100
2 3
Card Enable Access Time ta (CE) t ELQV 600 250 200 150 100
2 3
Output Enable Access ta(OE) t GLQV 300 125 100 75 50
Time
Output Disable Time from tdis(OE) t GHQZ 150 100 90 75 50
OE#
Output Enable Time from ten(CE) t ELQNZ 5 5 5 5 5
CE#
Data Valid from Add tv(A) t AXQX 0 0 0 0 0
Change 4
Address Setup Time 5 tsu(A) t AVGL 100 30 20 20 10
5
Address Hold Time th(A) t GHAX 35 20 20 20 15
5
Card Enable Setup Time tsu(CE) t ELGL 0 0 0 0 0
5
Card Enable Hold Time th(CE) t GHEH 35 20 20 20 15
5
WAIT# Valid from OE# tv(WT-OE) t GLWTV 100 35 35 35 35
12 µs 12 µs 12 µs 12 µs 12 µs
6
WAIT# Pulse Width tw (WT) t
WTLWTH
Data Setup for WAIT# tv WT) t QVWTH 0 0 0 0 0
Released 6
1. 600 ns cycle times apply for 3.3 V operating voltage.
2. 3.3 V timing for cycles >600 ns are equal to value given + (cycle time-600). All other parameters are
identical.
3. 5 V timing for cycles >250 ns are equal to value given + (cycle time-250). All other parameters are
identical.
4. The REG# signal timing is identical to address signal timing.
5. These timings are specified for hosts and cards which support the WAIT# signal.
6. These timings specified only when WAIT# is asserted within the cycle.
7. All timings measured at the PC Card. Skews and delays from the system driver/receiver to the PC
Card must be accounted for by the system.
© 1999 PCMCIA/JEIDA 31
16-BIT PC CARD ELECTRICAL INTERFACE
32 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
Table 4Ð13 Attribute Memory Read Timing Specification for all types of Memory
Speed Version 300 ns 600 ns
Item Symbol IEEE Symbol Min Max Min Max
Read Cycle Time tcR t AVAV 300 600
Output Disable Time from OE# tdis (OE) t GHQZ 100 150
1. These timing are specified for hosts and PC Cards which support the WAIT# signal.
2. These timings specified only when WAIT# is asserted within the cycle.
© 1999 PCMCIA/JEIDA 33
16-BIT PC CARD ELECTRICAL INTERFACE
34 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
tc(R)
(t (A) 2)
a th(A)
© 1999 PCMCIA/JEIDA 35
16-BIT PC CARD ELECTRICAL INTERFACE
tcW
A[25::0], REG#
tsu(CE-WEH)
tsu(A-WEH) th(CE)
WE# NOTE 3
tv(WT-WE) tv(WT)
tw(WT)
WAIT# th(OE-WE)
tdis(WE)
tdis(OE) ten(OE)
ten(WE)
D[15::0](Dout)
36 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
When a PC Card and socket are configured for DMA operations, the DACK (REG#) signal is used
to distinguish between a DMA cycle and a normal I/O cycle. For a normal I/O cycle, the REG#
signal is asserted for the complete bus cycle. For a DMA transfer cycle, the REG# signal is negated
during the entire DMA bus cycle.
DACK (REG#)
tsu CE (IOWR) th CE (IOWR)
CE#
tw (IOWR)
IOWR#
td (IOWR) th (IOWR)
D[15::0]
TC# (WE#)
© 1999 PCMCIA/JEIDA 37
16-BIT PC CARD ELECTRICAL INTERFACE
38 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
DACK (REG#)
tsu CE (IORD) th CE (IORD)
CE#
tw (IORD)
IORD#
td (IORD) th (IORD)
D[15::0]
TC# (OE#)
© 1999 PCMCIA/JEIDA 39
16-BIT PC CARD ELECTRICAL INTERFACE
VCC = 5 V ± 5% 1
VOH 2.8 V (0.9 VCC) VCC TTL or CMOS
VCC = 5 V ± 5% 1
VOL 0.0 V 0.5 V (0.1 VCC) TTL or CMOS
Note: All logic levels per JEDEC 7 and 8Ð1A. This table is for reference only.
1. For CMOS loads.
40 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
© 1999 PCMCIA/JEIDA 41
16-BIT PC CARD ELECTRICAL INTERFACE
42 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
Cards which use the Independent I/O Address Window need decode only enough address lines to
distinguish among the I/O ports actually implemented on the card. When two identical cards are
installed in the system, they automatically reside at different addresses. They rely upon the system
to provide sufficient address decoding to prevent conflicts with other installed devices, and may be
located anywhere in the I/O space of the system.
An example of this concept is used in the EISA bus. Each EISA card slot is uniquely assigned
the first 256 bytes of a corresponding 1 KByte of I/O space.
© 1999 PCMCIA/JEIDA 43
16-BIT PC CARD ELECTRICAL INTERFACE
Vcc
R ≥ 10K Ω
CD1#
A
Vcc
R ≥ 10K Ω
CD2#
B
44 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
th (Hi-z RESET) 1 ms
ts (Hi-z RESET) 0 ms
© 1999 PCMCIA/JEIDA 45
16-BIT PC CARD ELECTRICAL INTERFACE
tsu (Vcc)
Vcc
tpr
Vcc @ 90%
tsu (RESET) tsu (RESET)
VIH
2V
Vcc@10%
CE1#, CE2#
th (Hi-z RESET) tw (RESET)
Hi-z
RESET
tw(RESET)
Vcc tpf
Vcc@90%
trec (Vcc)
VIH
2V
Vcc@10%
CE1#, CE2#
ts (Hi-z RESET)
RESET Hi-z
Vcc tpf
Vcc@90%
tpr
Vcc@90%
Voff
Vcc@10%
GND
toff
Figure 4-8: Power-Down/Power-Up Timing When Changing Vcc
46 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
4.12.4 Supplement
During card insertion or removal, with power active, the PC Card data retention capability will
depend on the individual memory card model, the manufacturer's environmental specifications,
and other conditions. Therefore, data retention during card insertion or removal when under power
is implementation dependent.
To prevent the situation wherein the PC Card is inadvertently powered while the socket power is
OFF, the following requirements shall be fulfilled:
1. When a socketÕs VCC power is switched OFF while a card is in the socket, all socket to card
signals for that socket shall be less than the voltage presented on the VCC pins on the socket
plus +0.3 V at all times.
2. All pull-up resisters on the socket signals except VS[2::1]#, and CD[2::1]# shall be connected to
switched VCC and shall not be active when the socket is powered OFF.
3. The PC Card shall not drive any signals from any other, non-VCC, voltage source (e.g. backup
battery) when the PC Card is powered OFF. (This is a concern primarily in the case of
BVD[2::1] signals tied directly to an SRAM backup battery.)
© 1999 PCMCIA/JEIDA 47
16-BIT PC CARD ELECTRICAL INTERFACE
48 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
A[25::0]
th A (IORD)
tsu CE (IORD)
CE# th CE(IORD)
tw (IORD)
IORD#
tsu A (IORD)
tdr INPACK(ADR)
INPACK#
IOIS16#
tdf IOIS16 (ADR) td (IORD)
tdr(WT)
WAIT#
D[15::0]
© 1999 PCMCIA/JEIDA 49
16-BIT PC CARD ELECTRICAL INTERFACE
Table 4Ð24 I/O Read(Input) Timing Specification for All I/O Cards
Item Symbol IEEE Symbol Min Max
Data Delay after IORD# td (IORD) t IGLQV 100
50 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
A[25::0]
th A (IOWR)
tsu CE (IOWR)
CE# th CE(IOWR)
tw (IOWR)
IOWR#
tsu A (IOWR)
tdr IOIS16(ADR)
IOIS16#
tdf IOIS16 (ADR)
tdf WT (IOWR) tdr IOWR (WT)
WAIT#
tw (WT) th (IOWR)
D[15::0]
tsu (IOWR)
© 1999 PCMCIA/JEIDA 51
16-BIT PC CARD ELECTRICAL INTERFACE
Table 4Ð25 I/O Write(Output) Timing Specification for All I/O Cards
Item Symbol IEEE Symbol Min Max
Data Setup before IOWR# tsu (IOWR) t DVIWL 60
4.14.1 Overview
The characteristics of some 16-bit PC Cards are configurable. Such PC Cards use Function
Configuration registers to control their characteristics and return status. All Function Configuration
registers shall be read/write and one byte wide. All such registers shall be located on even byte
addresses to ensure single cycle access by both eight (8) and sixteen (16) bit host systems.
52 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
© 1999 PCMCIA/JEIDA 53
16-BIT PC CARD ELECTRICAL INTERFACE
54 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
1. NNNN0H is the Configuration registers Base Address specified in the TPCC_RADR field of the
Configuration Tuple. (See the Metaformat Specification.)
© 1999 PCMCIA/JEIDA 55
16-BIT PC CARD ELECTRICAL INTERFACE
For memory PC Cards where it is not necessary to configure a function on the PC Card, the
Configuration Option registerÕs Common Memory Address Extension field can serve to provide six
address extension bits. The six address extension bits when combined with the PC Cards 26 address
signals (A[25::0]), would allow for the addressing of as much as 4 Gigabytes of Common Memory
for PC Cards employing a 64 MByte paging architecture. The CORÕs Common Memory Address
Extension field would select the various 64 MByte pages while the A[25::0] signals would select a
specific memory location within a selected page.
The Configuration Option register is organized as follows:
56 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
The timing of the Soft Reset must meet the same constraints as the timing of hardware reset. To
clear the Soft Reset Bit (1->0) in the Configuration Option register, the host shall write a 00H to the
register. This procedure ensures that the proper final result will occur in the register regardless of
whether the card treats the write as occurring during the reset (and clears bits 6-0 regardless of the
values written) or treats the write as occurring at the end of the reset (and allows bits 6-0 to be set
according to the values written).
After clearing the Soft Reset bit, the host shall follow the same protocol as is used for hardware reset.
The host must observe the Ready condition of the READY signal before proceeding in the
re-initialization of the card. After the Socket and Copy register has been written, the host can write
the Configuration Option register with the desired configuration value.
© 1999 PCMCIA/JEIDA 57
16-BIT PC CARD ELECTRICAL INTERFACE
The Configuration and Status register must be implemented if the card generates audio, shares
interrupts or requires other status information available in the register.
58 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
Field Description
CBVD1 This bit is set (1) when the corresponding bit, RBVD1, changes state. This bit may also be written by the host.
CBVD2 This bit is set (1) when the corresponding bit, RBVD2, changes state. This bit may also be written by the host.
CREADY This bit is set to one when the bit RREADY changes state. This bit may also be written by the host.
CWProt This bit is set to one when the bit RWProt changes state. This bit may also be written by the host.
RBVD1 When read, this bit represents the internal state of the Battery Voltage Detect circuits which would be on the
BVD1 pin.
When this bit is written as 1 the corresponding CBVD1 bit is also written. When this bit is written as 0, the
CBVD1 bit is unaffected.
RBVD2 When read, this bit represents the internal state of the Battery Voltage Detect circuits which would be on the
BVD2 pin.
When this bit is written as 1 the corresponding CBVD2 bit is also written. When this bit is written as 0, the
CBVD2 bit is unaffected.
RREADY When read, this bit represents the internal state of the READY signal. This bit may be used to determine the state
of READY as that pin has been reallocated for use as Interrupt Request on IO Cards.
When this bit is written as 1 the corresponding "changed" bit is also written. When this bit is written as 0, the
corresponding changed bit is unaffected.
RWProt This bit represents the state of the WP signal. This signal may be used to determine the state of the Write Protect
switch when pin 33 is being used for IOIS16#.
When this bit is written as 1 the corresponding "changed" bit is also written. When this bit is written as 0, the
corresponding changed bit is unaffected.
The Pin Replacement register must be implemented if the card needs to provide information about
READY, WP or the BVD[2::1] status when implementing the I/O interface.
© 1999 PCMCIA/JEIDA 59
16-BIT PC CARD ELECTRICAL INTERFACE
Field Description
Reserved This bit is reserved for future standardization. This bit must be set to zero (0) by software when the register is
written.
Copy Number PC Cards which indicate in their CIS that they support more than one copy of identically configured cards, should
have a copy number (0 to MAX twin cards, MAX = n-1) written back to the Socket and Copy register.
This field indicates to the card that it is the n'th copy of the card installed in the system which is identically
configured. The first card installed receives the value 0. This permits identical cards designed to do so to share a
common set of I/O ports while remaining uniquely identifiable. and consecutively ordered.
Socket Number This field indicates to the PC Card that it is located in the n'th socket. The first socket is numbered 0. This
permits any cards designed to do so to share a common set of I/O ports while remaining uniquely identifiable.
Field Description
Event3 Reserved for future expansion/definition, must be reset (0)
Event2 Reserved for future expansion/definition, must be reset (0)
Event 1 Reserved for future expansion/definition, must be reset (0)
Req Attn This bit is latched within one(1) ms of an event occurring on the PC Card, (such as the start of each cycle of the
ring frequency to indicate the presence of ringing on the phone line in the case of a modem card). When this bit is
set to a one (1), and the Req Attn Enable bit is set to a one (1), the Changed bit in the Configuration and Status
register will also be set to a one (1), and if the SigChg bit in the Configuration and Status register has also been
set by the host, then the STSCHG# pin (63) will be asserted. The host writing a one (1) to this bit will reset it to
zero (0). Writing a zero (0) to this bit will not have any effect.
Enable3 Reserved for future expansion/definition, must be reset (0)
Enable2 Reserved for future expansion/definition, must be reset (0)
Enable1 Reserved for future expansion/definition, must be reset (0)
Req Attn Enable Setting this bit to a one (1) enables the setting of the Changed bit in the Configuration and Status register when the
Req Attn bit is set. When this bit is reset to a zero (0), this feature is disabled. The state of the Req Attn bit is not
affected by the Req Attn Enable bit.
The register may be read or written. The upper 4 bits are latched to a one (1) when the
corresponding event occurs on the PC Card (for example in the case of the Req Attn bit, when
ringing occurs on the phone line on a modem card). When one of these upper four bits is latched
and the corresponding enable bit in the lower nibble is also set, the Changed bit in the
Configuration and Status register will be set, and if the SigChg bit in the Configuration and Status
register is also set, (and the card is configured for I/O mode) then the STSCHG# pin (63) will be
asserted. The host writing a one (1) to one of the upper 4 bits will clear that bit. Writing a zero to
one of the upper 4 bits will have no effect. The lower four bits will return their current state when
they are read. All bits of this register are cleared to zero (0) at power-up(VCC), by RESET or
SRESET.
60 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
Setting one of the lower 4 bits enables the corresponding upper bit to be OR'ed into the Changed bit
in the Configuration and Status register. When these lower bits are cleared, the setting of the
Changed bit is disabled for the corresponding event. The state of the upper bits is not affected by the
value written to the lower bits.
The host will determine the presence of this register by reading the TPCC_RMSK Configuration
register Presence Mask of the Card Configuration Tuple. (See the Metaformat Specification.)
© 1999 PCMCIA/JEIDA 61
16-BIT PC CARD ELECTRICAL INTERFACE
Field Description
Stored State Exists When set, indicates the PC Card function has preserved a state within the card that can be restored.
This field is cleared to zero (0) by the PC Card function when the saved state is restored or the function is
configured.
Save/Restore When commanded by the host to begin a Save/Restore State operation, this field instructs the function to save
State state if set to one (1) or restore state if cleared to zero (0).
Begin/Done State When set to one (1) by the host, this field commands the function to begin a save or restore state operation. Upon
Operation completing the save or restore state operation and the function is ready for operation, this field is cleared to zero
(0) by the PC Card function.
If the PC Card function has not completed itÕs part of the operation within its specified save/restore time and
indicated successful completion by clearing this field, the host shall assume the operation has failed.
State Restored This field is set to one (1) by the PC Card function when a restore state operation is successfully completed.
This field is cleared to zero (0) by the PC Card function when a state is saved or the function is configured.
There are two methods of PC Card function state preservation defined: one method stores state
information within the card, the other relies on the host to store the functionÕs state information.
In the first method (when the CISTPL_PWR_MGMNT tuple PWR_METHOD field is 80H), the PC
Card function stores state information on the card and indicates that the function has stored a valid
state by setting the Stored State Exists field to one (1). The host responsibility is limited to indicating
when to save state and when to restore state. Whenever the PC Card function is configured by the
host or a saved configuration state is restored, the function shall clear the Stored State Exists field to
zero (0).
In the second method (when the CISTPL_PWR_MGMNT tuple PWR_METHOD field is 00H or 01H)
the PC Card function outputs state information to a buffer area on the card during a save state
operation and restores state information from the buffer area during a restore state operation. The
62 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
host is responsible for storing the contents of the buffer after the PC Card function indicates the save
state operation is complete and before the card is powered down. After re-powering the PC Card
and before starting the functionÕs restore state operation, the host reloads the saved buffer contents
into the buffer area.
For either method, the PC Card is responsible for restoring the state of the functionÕs internals
including the state of the functionÕs Configuration Registers. In a restore sequence, the hostÕs
responsibilities are to restore the state of the socket, verify that the PC Card in the socket has not
been removed from the socket since state was saved, reload the functionÕs state buffer (only when a
buffer method is used), and command the PC Card function to restore its state. When a restore state
operation is successfully completed the PC Card function shall set the State Restored field to one (1).
The last two host steps, reload the PC Card functionÕs state buffer and command the function to
restore its state, are repeated for each function on a Multiple Function PC Card.
The PC Card function shall save state when commanded to do so by the host regardless of having
previously saved state.
Register Offset 7 6 5 4 3 2 1 0
During a memory cycle the cardÕs A24 and A25 address input signals select which one of the four
Address Extension Registers provides the extended address signals to memory. The register
selection is defined as follows:
© 1999 PCMCIA/JEIDA 63
16-BIT PC CARD ELECTRICAL INTERFACE
When two Address Extension Registers are present on the PC Card, the A[24::0] card address
signals select a byte or word location within a 32 MByte page of memory while one of the two
registers provides an address extension to select the 32 MByte page. The address extension for the
page is defined in terms of extended address signals, starting with MA25 as the least significant bit.
The extended address signals appear in the Address Extension Registers as follows:
Register Offset 7 6 5 4 3 2 1 0
During a memory cycle the cardÕs A25 address input signal selects which one of the two Address
Extension Registers provides the extended address signals to memory. The register selection is
defined as follows:
When only one Address Extension Register is present on the PC Card, the A[25::0] card address
signals select a byte or word location within a 64 MByte page of memory while the register provides
an address extension to select the 64 MByte page. The address extension for the page is defined in
terms of extended address bits, starting with MA26 as the least significant bit. The extended address
bits appear in the Address Extension Register 0 as follows:
Register Offset 7 6 5 4 3 2 1 0
The exact number of Function Configuration Registers supported by a PC Card is specified by the
TPCC_RMSK byte of the CISTPL_CONFIG tuple. Thus, a PC CardÕs Card Information Structure
(CIS) indicates which Address Extension Registers are present. However, software can also
determine used and unused register locations by writing the registers first with a pattern of all 1Õs
and then with a pattern of all 0Õs, each time reading the register locations to determine where
registers actually exist to store the pattern. Unused register bytes are reserved for unused extended
address signals and return either all '0' bits or all '1' bits when read. The Address Extension Register
High bytes need be present on a PC Card only for Common Memory spaces requiring more than
the eight address extension bits provided by a single 8-bit register.
64 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
When an Address Extension Register is provided by a PC Card, the associated Address Extension
Register Low byte is always present (as indicated by TPCC_RMSK). However, not all 8 bits of an
Address Extension Register are required to be implemented for address extension. Unused register
bits are reserved for unused extended address signals and return either all 0Õs or all 1Õs when read.
Even though the Address Extension Registers can provide an address extension which addresses
beyond 4 GBytes of Common Memory, the Card Services Specification as of the PC Card Standard
Release 6.1 supports a maximum Common Memory size of 4 GBytes.
Upon card power-up the PC Card initializes its Address Extension Registers to form a contiguous 64
MByte area in Common Memory. The contiguous 64 MByte area provides a single 64 MByte area of
memory which non-extended PC host software (without address extension knowledge) can address.
To form the contiguous 64 MByte area, each register is set to the registerÕs number, i.e., Address
Extension Register 0 is set to 0, Address Extension Register 1 is set to 1, Address Extension Register
2 is set to 2, and Address Extension Register 3 is set to 3. After the registers have been initialized,
the host processor can write a register with the address extension of any page in the cardÕs memory
array.
© 1999 PCMCIA/JEIDA 65
16-BIT PC CARD ELECTRICAL INTERFACE
Field Description
Control_hi This sixteen (16) bit register controls read and write accesses through the Data register at the address present in
Control_lo the Address register.
Space 0 = Indirect Attribute Space
1 = Indirect Common Space
Auto Inc 0 = do not adjust Address when a read or write access is made to Data.
1 = adjust Address according to the Byte Gran setting on each Data access.
Byte Gran This field is ignored when the Auto Inc field is zero (0).
0 = add two (2) to Address following each Data access.
1 = add one (1) to Address following each Data access.
Reserved These register bits are reserved and must be set to zero.
Address This register indicates the current twenty-six (26) bit address that will be used on the next Data access.
Data Reading this sixteen (16) bit register will fetch the sixteen (16) bit value at the indirect address indicated by the
Space setting in the Control register using the current value of Address. If the Space setting indicates indirect
Attribute Space, only the even byte data is valid.
Writing a value to this register will present a write operation to card memory at the indirect address indicated by
the Space setting in the Control register and the current value of Address.
66 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
5 . CAR D BU S PC CAR D EL E C T R IC AL
I N T E R F AC E
The CardBus PC Card Interface provides a high performance 32-bit/bus master capability for full-
size PC Cards. As briefly discussed in the Overview section of this specification, CardBus PC Card
introduces many new features and functions. The specification text uses many terms which may be
new to prior PC Card Standard users. See the Overview and Glossary to aid in understanding
these terms. While every attempt has been made to explain functions and operations within
relevant sections of the specification, the following concepts apply and should be understood prior to
assimilation of the CardBus PC Card specification details:
• CardBus PC Cards may include, in any combination:
32-bit bus slaves, also referred to as transaction targets (may be a memory slave, an I/O slave,
or both).
• CardBus PC Card sockets must be able to support operations with, or gracefully reject, any
CardBus PC Card and/or any 16-bit PC Card within the capabilities/limitations of the host
system (i.e., a system that is incapable of providing 5.0 volts cannot support 5 V 16-bit PC
Cards)
The user of this specification should read and understand section 5.5 Requirements For CardBus PC
Cards and Sockets and should also consider the following from the Guidelines Volume prior to any
implementation:
• Enabler Capabilities and Behavior
• Card-Application Interaction
• CardBus PC Card/PCI Common Silicon Requirements
• CardBus PC Card Operational Scenarios
Additionally, users should consider the following section:
• 8. CardBus PC Card Connector Test Methodology (Appendix B)
© 1999 PCMCIA/JEIDA 67
CARDBUS PC CARD ELECTRICAL INTERFACE
68 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
The READY signal must not be connected between cards when the 16-bit PC Card interface socket
supports both I/O and Memory interfaces. It must not be wire-ORÕd or wire-ANDÕd with any host
system signals.
In systems which switch VCC individually to cards, no signal shall be directly connected between
cards other than ground.
© 1999 PCMCIA/JEIDA 69
CARDBUS PC CARD ELECTRICAL INTERFACE
70 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
© 1999 PCMCIA/JEIDA 71
CARDBUS PC CARD ELECTRICAL INTERFACE
4Bit order follows the convention where: bit 0 is LSB and bit 31 is MSB.
5 The number of "1"s on CAD[31::00], CCBE[3::0]#, and CPAR equal an even number.
72 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
© 1999 PCMCIA/JEIDA 73
CARDBUS PC CARD ELECTRICAL INTERFACE
6 When several independent functions are integrated into a single PC Card, it is referred to as a multi-function card.
Each function on a multi-function card has its own configuration space.
74 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
Allocated indicates that the command encoding is not defined for CardBus PC Card, and must not be
defined as other environments use the encoding. The purpose of allocated command encodings is to
maintain compatibility between CardBus PC Card and other environments. CardBus PC Card
targets must not alias allocated commands with other commands. Targets must not respond to
allocated encodings. If an allocated encoding is used on the interface, the access typically will be
terminated with master-abort.
© 1999 PCMCIA/JEIDA 75
CARDBUS PC CARD ELECTRICAL INTERFACE
The Special Cycle command provides a simple message broadcast mechanism on CardBus PC Card.
It is designed to be used as an alternative to physical signals when sideband communication is
necessary. (See 5.2.7.2 Special Cycle.)
The I/O Read command is used to read data from an agent mapped in I/O address space.
CAD[31::00] provide a byte address. All 32 bits must be decoded. The Byte Enables indicate the
size of the transfer and must be consistent with the byte address.
The I/O Write command is used to write data to an agent mapped in I/O address space. All 32 bits
must be decoded. The Byte Enables indicate the size of the transfer and must be consistent with the
byte address.
Reserved command encodings are reserved for future use. CardBus PC Card targets must not alias
reserved commands with other commands. Targets must not respond to reserved encodings. If a
reserved encoding is used on the interface, the access typically will be terminated with master-
abort.
The Memory Read command is used to read data from an agent mapped in the memory address
space. The target is free to do an anticipatory read for this command only if it can guarantee that
such a read will have no side effects. Furthermore, the target must ensure the coherency (which
includes ordering) of any data retained in temporary buffers after this CardBus PC Card transaction
is completed. Such buffers must be invalidated before any synchronization events (e.g., updating
an I/O Status register or memory flag) are passed through this access path.
The Memory Write command is used to write data to an agent mapped in the memory address space.
When the target returns "ready," it has assumed responsibility for the coherency (which includes
ordering) of the subject data. This can be done either by implementing this command in a fully
synchronous manner, or by insuring any software transparent posting buffer will be flushed before
synchronization events (e.g., updating an I/O Status register or memory flag) are passed through
this access path. This implies that the master is free to create a synchronization event immediately
after using this command.
The Configuration Read command is used to read the configuration space of each agent. An agent is
selected when its CFRAME# signal is asserted and CAD[1::0] are 00. During the address phase of a
configuration cycle, CAD[7::2] address one of the 64 DWORD registers (where byte enables address
the byte(s) within each DWORD) in the configuration space of each device and CAD[31::11] are
logical don't cares. CAD[10::08] indicate which device of a multi-function agent is being addressed.
The Configuration Write command is used to transfer data to the configuration space of each agent.
An agent is selected when the CFRAME# signal is asserted and CAD[1::0] are 00. During the
address phase of a configuration cycle, the CAD[7::2] lines address the 64 DWORD (where byte
enables address the byte(s) within each DWORD) configuration space of each device and
CAD[31::11] are logical don't cares. CAD[10::08] indicate which device of a multi-function agent is
being addressed.
The Memory Read Multiple command is semantically identical to the Memory Read command except
that it additionally indicates that the master may intend to fetch more than one cache line before
disconnecting. The memory controller should continue pipelining memory requests as long as
CFRAME# is asserted. This command is intended to be used with bulk sequential data transfers
where the memory system (and the requesting master) might gain some performance advantage by
sequentially reading ahead an additional cache line when a software transparent buffer is available
for temporary storage.
The Memory Read Line command is semantically identical to the Memory Read command except that
it additionally indicates that the master intends to complete more than two 32-bit CardBus PC Card
data phases. This command is intended to be used with bulk sequential data transfers where the
memory system (and the requesting master) might gain some performance advantage by reading
76 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
up to a cache line boundary in response to the request rather than a single memory cycle. As with
the Memory Read command, pre-fetched buffers must be invalidated before any synchronization
events are passed through this access path.
The Memory Write and Invalidate command is semantically identical to the Memory Write command
except that it additionally guarantees a minimum transfer of one complete cache line; i.e., the
master intends to write all bytes within the addressed cache line in a single CardBus PC Card
transaction. The master may allow the transaction to cross a cache line boundary only if it also
intends to transfer the entire next line. This command requires implementation of a configuration
register in the master indicating the cache line size. A target containing memory which might be
cacheable by the host system is also required to implement the Cache Line Size register. (See 5.2.9
Cache Support and 5.4.2.1 Configuration Space.) The target containing cacheable memory must
accept a full cache line before disconnecting the transaction if it completes the first data phase. This
command allows a memory performance optimization by invalidating a dirty line in a write-back
cache without requiring the actual write-back cycle, thus shortening access time. (See also 5.2.3.3.1
Master Initiated Termination.)
© 1999 PCMCIA/JEIDA 77
CARDBUS PC CARD ELECTRICAL INTERFACE
The preferred use when not using the Cache Line Size register is:
Memory Read command use when bursting two or less data transfers
Memory Read Line command use when bursting 3 to 12 data transfers
Memory Read Multiple command use when doing long bursts (13 or more data transfers)
7 The exceptions are CINT#, CSTSCHG#, CCLKRUN#, CAUDIO, CCD[2::1]#, and CVS[2::1] which are
discussed inthe Signal Definition Section.
8 CPAR is treated like a CAD line delayed by one clock.
9 The notion of qualifying CAD signals is fully defined in 5.2.7.3 Address/Data Stepping.
78 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
each rising clock edge following the completion of an address phase or data phase. CINT#,
CSTSCHG, CCLKRUN#, CAUDIO, CCD[2::1]#, and CVS[2::1] are not qualified or synchronous.
The interface is IDLE when both CFRAME# and CIRDY# are negated. The first clock edge on
which CFRAME# is asserted is the address phase, and the address and bus command code are
transferred on that clock edge. The next clock edge begins the first of one or more data phases,
during which data is transferred between master and target on each clock edge for which both
CIRDY# and CTRDY# are asserted. Wait cycles may be inserted in a data phase by either the
master or the target with CIRDY# and CTRDY# signals respectively.
The source of the data is required to assert its CXRDY# signal unconditionally when data is valid
(CIRDY# on a write transaction, CTRDY# on a read transaction). The receiving agent may assert its
CXRDY# as it chooses.
Once a master has asserted CIRDY# it cannot change CIRDY# or CFRAME# until the current data
phase completes regardless of the state of CTRDY#. Once a target has asserted CTRDY# or
CSTOP# it cannot change CDEVSEL#, CTRDY#, or CSTOP# until the current data phase
completes. Neither the master nor the target can change its mind once it has committed to the data
transfer.
At such time as the master intends to complete only one more data transfer (which could be
immediately after the address phase), CFRAME# is negated and CIRDY# is asserted indicating the
master is ready. After the target indicates the final data transfer (CTRDY# is asserted), the interface
returns to the IDLE state with both CFRAME# and CIRDY# negated.
5.2.2.2 Addressing
CardBus PC Card defines three physical address spaces. The memory and I/O address spaces are
customary. The configuration address space has been defined to support CardBus PC Card
hardware configuration. (See also 5.2.7.4.1 Generating Configuration Cycles.)
CardBus PC Card targets that contain relocatable functions or registers are required to allow them to
be mapped to memory space through the Base Address registers located in the CardBus PC Card
configuration space. This is to provide for the option of using the device in system configurations
where I/O space is not available.
Address decoding on CardBus PC Card is distributed, i.e., done on every device. This obviates the
need for central decode logic, or for device select signals. Each agent is responsible for its own
address decode. CardBus PC Card supports two styles of address decoding, positive and subtractive.
Positive decoding is faster since each device is looking for accesses in the address range(s) that it has
been assigned. Subtractive decoding can be implemented by only one device on the bus, since it
accepts all accesses not positively decoded by some other agent. This decode mechanism is slower
since it must give all other bus agents a "first right of refusal" on the access. However, it is very
useful for an agent that must respond to a highly fragmented address space. Targets that perform
either positive or negative decode must not respond (assert CDEVSEL#) to reserved or allocated bus
commands.
© 1999 PCMCIA/JEIDA 79
CARDBUS PC CARD ELECTRICAL INTERFACE
The information contained in the two low order address bits (CAD[1::0]) varies by address space. In
the I/O address space, all 32 CAD lines are used to provide a full byte address. This allows an
agent requiring byte level address resolution to complete address decode and claim the cycle10
without waiting an extra cycle for the byte enables (thus delaying all subtractive decode cycles by
an extra clock). CAD[1::0] are used for the generation of CDEVSEL# only and indicate the least
significant valid byte involved in the transfer. For example, if CCBE0# were asserted then
CAD[1::0] would be 00; if only CCBE3# were asserted, then CAD[1::0] would be 11. Once a target
has claimed an I/O access (using CAD[1::0]), it then determines if it can complete the entire access
as indicated in the byte enables. If all the selected bytes are not in the selected target's address
range, the entire access cannot be completed. In this case, the target does not transfer any data, but
terminates with a target-abort.
The table below summarizes the encoding of CAD[1::0].
The above table is for decode purposes only and only applies to a device that does not control all
bytes within a single I/O DWORD. Such devices must terminate the cycle with target abort for any
byte enable/CAD[1::0] combination not in the above table. However, devices that "own" all bytes
in the I/O DWORD do not have to check for illegal byte enable/CAD[1::0] combinations. Instead,
they may ignore CAD1 and CAD0 (i.e., claim the cycle based on the DWORD address and perform
the operation described by the byte enables). Note that any combination of byte enables is valid,
including none. (A device may restrict which combination of byte enables its device driver may
use.)
All targets are required to check CAD[1::0] during a memory command transaction, and either
provide the requested burst order, or execute a target disconnect with or after the first data phase.
Implementation of linear burst ordering is required by all devices that can support bursting.
Implementing other burst order modes is not required. In the memory address space, accesses are
decoded to a DWORD address using CAD[31::02]. In linear incrementing mode, the address is
assumed to increment by one DWORD after each data phase until the transaction is terminated.
During Memory commands, CAD[1::0] have the following meaning:
CAD1 CAD0 Burst Order
0 0 Linear address incrementing
0 1 Reserved (disconnect after first data phase)
1 X Reserved (disconnect after first data phase)
In the configuration address spaces, accesses are decoded to a DWORD address using CAD[7::2]. An
agent determines that it is the target of the access (asserts CDEVSEL#) when a configuration
command is decoded and CAD[1::0] are 00. Otherwise, the agent ignores the current transaction. A
bridge determines that a configuration access is for a device behind it by decoding a configuration
10 Standard PC address assignments in the I/O space are such that separate physical devices may share the same
DWORD address. This means that in certain cases a full byte address is required for the device to claim the access
(assert CDEVSEL#).
80 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
command, its bridge number, and that CAD[1::0] are 01. For more details about configuration
accesses refer to the (See also 5.2.7.4.1 Generating Configuration Cycles.)
© 1999 PCMCIA/JEIDA 81
CARDBUS PC CARD ELECTRICAL INTERFACE
turnaround cycle for the CAD lines. An IDLE cycle is when both CFRAME# and CIRDY# are
negated (e.g., clock 9 in Figure 5-1).
All CAD lines must be driven to stable values during every address and data phase. Even byte
lanes not involved in the current data transfer must physically drive stable (albeit meaningless)
data onto the bus. The motivation is for parity calculations and to keep input buffers on byte lanes
not involved in the transfer from switching at the threshold level and more generally to facilitate
fast, metastability free latching. In power sensitive applications, it is recommended that, in the
interest of minimizing bus switching power consumption, byte lanes not being used in the current
bus phase should be driven with the same data as contained in the previous bus phase. In
applications that are not power sensitive, the agent driving the CAD lines may drive whatever it
desires on unused byte lanes. Parity must be calculated on all bytes regardless of the byte enables.
82 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
CCLK
1 2 3 4 5 6 7 8 9
CFRAME#
DATA TRANSFER
DATA TRANSFER
DATA TRANSFER
CIRDY#
WAIT
WAIT
WAIT
CTRDY#
CDEVSEL#
The first clock of the first data phase is clock 3. During the data phase CCBE# indicate which byte
lanes are involved in the current data phase. A data phase may consist of a data transfer and wait
cycles. The CCBE# output buffers must remain enabled (for both read and writes) from the first
clock of the data phase through the end of the transaction. This ensures CCBE# are not left floating
for long intervals.
The first data phase on a read transaction requires a turnaround-cycle (enforced by the target via
CTRDY#). In this case the address is valid on clock 2 and then the master stops driving CAD. The
earliest the target can provide valid data is clock 4. The target must drive the CAD lines following
the turnaround cycle when CDEVSEL# is asserted. Once enabled, the output buffers must stay
enabled through the end of the transaction. (This ensures CAD are not left floating for long
intervals.)
A data phase completes when data is transferred, which occurs when both CIRDY# and CTRDY#
are asserted on the same clock edge. (CTRDY# cannot be driven until CDEVSEL# is asserted.)
When either is negated a wait cycle is inserted and no data is transferred. As noted in the diagram,
data is successfully transferred on clocks 4, 6, and 8, and wait cycles are inserted on clocks 3, 5, and
7. The first data phase completes in the minimum time for a read transaction. The second data phase
is extended on clock 5 because CTRDY# is negated. The last data phase is extended because
CIRDY# was negated on clock 7.
The master knows at clock 7 that the next data phase is the last. However, because the master is not
ready to complete the last transfer (CIRDY# is negated on clock 7), CFRAME# stays asserted. Only
when CIRDY# is asserted can CFRAME# be negated, which occurs on clock 8.
© 1999 PCMCIA/JEIDA 83
CARDBUS PC CARD ELECTRICAL INTERFACE
CCLK
1 2 3 4 5 6 7 8 9
CFRAME#
DATA TRANSFER
DATA TRANSFER
CIRDY#
CTRDY#
WAIT
WAIT
WAIT
CDEVSEL#
In Figure 5-2, the first and second data phases complete with zero wait cycles. However, the third
data phase has three wait cycles inserted by the target. Notice both agents insert a wait cycle on
clock 5. CIRDY# must be asserted when CFRAME# is negated indicating the last data phase.
The data transfer was delayed by the master on clock 5 because CIRDY# was negated. Although
this allowed the master to delay data, it did not allow the byte enables to be delayed. The last data
phase is signaled by the master on clock 6, but does not complete until clock 8.
84 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
occurs when both CIRDY# and CTRDY# are asserted. The transaction reaches completion when
both CFRAME# and CIRDY# are negated (IDLE bus condition).
The master may initiate termination using this mechanism for one of two reasons:
Completion refers to termination when the master has concluded its intended transaction. This is the most common
reason for termination.
Timeout refers to termination when the master's CGNT# line is negated and its internal Latency Timer has
expired. The intended transaction is not necessarily concluded. The timer may have expired because of
target induced access latency, or because the intended operation was very long. (See 5.2.5.3.1
Managing Latency on CardBus PC Card.)
A Memory Write and Invalidate transaction is not governed by the Latency Timer. A master that initiates
a transaction with the Memory Write and Invalidate command ignores the Latency Timer until a cache
line boundary. When the transaction reaches a cache line boundary and the Latency Timer has expired
(and CGNT# is negated), the master must terminate the transaction. If a Memory Write and Invalidate
transaction is terminated by the target, the master completes the transaction (the rest of the cache line)
as soon as possible (adhering to the CSTOP# protocol) using the Memory Write command (since the
conditions to issue Memory Write and Invalidate are no longer true).
A modified version of this termination mechanism allows the master to terminate the transaction
when no target responds. This abnormal termination is referred to as master-abort. Although it may
cause a fatal error for the application originally requesting the transaction, the transaction completes
gracefully, thus preserving normal CardBus PC Card operation for other agents.
Two examples of normal completion are shown in Figure 5-3.The final data transfer is indicated
when CFRAME# is negated and when both CIRDY# and CTRDY# are asserted which occurs at
clock 3. The bus reaches an IDLE condition when CIRDY# is negated which occurs on clock 4.
Because the transaction has completed, CTRDY# is negated on clock 4 also. Note that CTRDY# is
not required to be asserted on clock 3, but could have delayed the final data transfer (and
transaction termination) until it is ready by delaying the final assertion of CTRDY#. If the target
does that, the master is required to keep CIRDY# asserted until the final data transfer occurs.
CCLK
1 2 3 4 1 2 3 4
CGNT#
T/O
CFRAME#
T/O
CIRDY#
CTRDY#
Both sides of Figure 5-3 could have been caused by a timeout termination. On the left side,
CFRAME# is negated on clock 3 because the timer expires, CGNT# is negated, and the master is
ready (CIRDY# asserted) for the final transfer. Because CGNT# was negated when the timer
expired continued use of the bus is not allowed except when using the Memory Write and
Invalidate command, which must be stopped at the cache line boundary. Termination then proceeds
© 1999 PCMCIA/JEIDA 85
CARDBUS PC CARD ELECTRICAL INTERFACE
as normal. If CTRDY# is negated on clock 2, that data phase continues until CTRDY# is asserted.
CFRAME# and CIRDY# must remain asserted until the data phase completes.
The right-hand example shows a timer expiring on clock 1. Because the master is not ready to
transfer data (CIRDY# is negated on clock 2), CFRAME# is required to stay asserted. CFRAME# is
negated on clock 3 because the master is ready (CIRDY# is asserted) to complete the transaction on
clock 3. The master must be driving valid data (write) or be capable of receiving data (read)
whenever CIRDY# is asserted. This delay in termination should not be extended more than two or
three cycles. Also note that the Latency Timer has no meaning unless CGNT# is negated.
Master-abort termination, as shown in Figure 5-4, is an abnormal case (except for configuration or
Special Cycle commands) of master initiated termination. A master determines that there will be no
response to a transaction if CDEVSEL# remains negated on clock 6. (For a complete description of
CDEVSEL# operation, refer to the 5.2.7.1 Device Selection). The master must assume that the target
of the access is incapable of dealing with the requested transaction or that the address was bad.
Once the master has detected the missing CDEVSEL# (clock 6 in this example), CFRAME# is
negated on clock 7, and CIRDY# on clock 8. The earliest a master can terminate a transaction with
master-abort is five clocks after CFRAME# was first sampled asserted, which occurs when the
master attempts a single data transfer. However, the master may take longer to negate CFRAME#
and terminate the access. The master must support the CFRAME# − CIRDY# relationship on all
transactions which includes master-abort. CFRAME# cannot be negated before CIRDY# is asserted
and CIRDY# must remain asserted for at least one clock after CFRAME# is negated, even when the
transaction is terminated with master-abort.
Alternatively, CIRDY# could be negated on clock 7, if CFRAME# was negated as in the case of a
transaction with a single data phase. The master will normally not retry this access. (Refer to
5.2.8.2.2 Error Response and Reporting on CSERR#). Note that if CDEVSEL# had been asserted on
clocks 3, 4, 5, or 6 of this example, it would indicate the request had been acknowledged by an
agent, and master-abort termination would not be permissible.
The host bus bridge, in a PC compatible system, and any CardBus PC Card-to-CardBus PC Card
bridge must return all 1's on a read transaction and discard data on a write transaction when
terminated with master-abort. The bridge is required to set the master-abort detected field in its
status register. Other master devices may report this condition as an error by signaling CSERR#
when the master cannot report the error through its device driver. Prefetching of read data by a
bridge must be totally transparent to the system. This means that when a prefetched transaction is
terminated with master-abort, the bridge must simply stop the transaction and continue normal
operation without reporting. This occurs when a transaction is not claimed by a target.
86 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
CCLK
1 2 3 4 5 6 7 8
CFRAME#
CIRDY#
CTRDY#
NO RESPONSE
CDEVSEL# FAST MED SLOW SUB
ACKNOWLEDGE
In summary, the following general rules govern CFRAME# and CIRDY# in all CardBus PC Card
transactions.
1. CFRAME# and its corresponding CIRDY# define the busy/IDLE state of the bus: when either
is asserted, the bus is busy; when both are negated, the bus is IDLE.
2. Once CFRAME# has been negated, it cannot be reasserted during the same transaction.
3. CFRAME# cannot be negated unless CIRDY# is asserted. (CIRDY# must always be asserted on
the first clock edge that CFRAME# is negated.)
4. Once a master has asserted CIRDY#, it cannot change CIRDY# or CFRAME# until the current
data phase completes.
© 1999 PCMCIA/JEIDA 87
CARDBUS PC CARD ELECTRICAL INTERFACE
A modified version of this mechanism allows the target to terminate a transaction in which a fatal
error has occurred, or to which the target will never be able to respond. This abnormal termination
is referred to as target-abort. Although it may cause a fatal error for the application originally
requesting the transaction, the transaction completes gracefully, thus preserving normal CardBus
PC Card operation for other agents.
Most targets will be required to implement at least retry capability, but any other versions of target
initiated termination are optional for targets. Masters must be capable of properly dealing with
them all. Retry is also optional to very simple targets that 1) do not support exclusive (locked)
accesses, 2) cannot detect possible deadlock or livelock conditions, and 3) cannot get into a state
where they may need to reject an access.
Three examples of disconnect are shown in Figure 5-5. Each example shows the same relationship
between CSTOP# and CFRAME#, namely that:
• Disconnect is signaled when CSTOP# is asserted and is held asserted until CFRAME#
is negated.
• CFRAME# is negated as soon as possible after CSTOP# is asserted. Example C shows
this taking an extra cycle because CIRDY# could not be asserted immediately after
CSTOP# was asserted.
• CSTOP# is negated the cycle immediately following CFRAME# being negated.
In addition, these three disconnect examples show that CDEVSEL# is always asserted when
CSTOP# is asserted; otherwise, a target-abort is indicated.
These three examples show three different possibilities for data transfer in association with a
disconnect. Notice that the target can determine whether or not data is transferred after CSTOP# is
asserted. Data transfer takes place on every cycle where both CIRDY# and CTRDY# are asserted,
independent of the state of CSTOP#. If the target wants to do one more data transfer and then stop,
it asserts CTRDY# and CSTOP# at the same time.
In Figure 5-5, examples A and B show two different disconnects where data is transferred after
CSTOP# is asserted. In both cases, the target declares its intent to do another data transfer by
having CTRDY# asserted at the time CSTOP# is asserted. In example A, the data is transferred
after CFRAME# is negated (on clock 3) because the master was not ready (CIRDY# negated on
clock 2).
In example B, the data is transferred before CFRAME# is negated (on clock 2). If CTRDY# was
asserted when CSTOP# was asserted, CTRDY# must be negated when the current data phase
completes. The target cannot negate CSTOP# and continue the transaction. A master restarts any
transaction terminated with retry or disconnect at a later time starting with the address of the next
untransferred data. The target, upon detecting that data was transferred, removes CTRDY# since it
intends to transfer no more data. Notice that this means no data is transferred in the final data
phase. If the target had kept CTRDY# asserted during clock 3, and delayed the assertion of
CSTOP# until clock 3, then data would have been transferred on both clock 2 and clock 3.
However, the target cannot complete more than one data transfer after CSTOP# is asserted, as is
demonstrated by example A.
Once CSTOP# is asserted, it must stay asserted until CFRAME# is negated. If the target requires a
wait cycle in the last data phase, it must delay the assertion of CSTOP# until it is ready to complete
the transaction.
Example C shows a case in which data is not transferred after CSTOP# is asserted because CTRDY#
is negated. Note that in this example, the negation of CFRAME# is delayed until CIRDY# could be
asserted. This is also an example of retry, which is actually a special case of disconnect where no
data transfer occurs at all. A common example of retry is when the target is currently locked for
88 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
exclusive access by another master. Another example is when the target needs to acquire access to
some other non-CardBus PC Card resource before allowing the transaction to proceed. (Care needs
to be taken in this case to ensure that there are no conditions where the retry itself could generate a
deadlock condition.) The master must negate its CREQ# signal when the current transaction is
terminated by the target. The master must negate CREQ# for a minimum of two CardBus PC Card
clocks, one being when the bus goes to the IDLE state (at the end of the transaction where CSTOP#
was asserted) and either the clock before or the clock after the IDLE state. If the master intends to
complete the transaction, it must reassert its CREQ# immediately following the two clocks it was
negated or a potential starvation condition may occur. If the master does not intend to complete the
transaction (because it was prefetching or a higher priority internal request needs to be serviced),
the agent only asserts CREQ# whenever it needs to use the interface again.
The lower right example in Figure 5-5 shows target-abort, which is when CSTOP# is asserted and
CDEVSEL# is negated. This indicates the target requires the transaction to be terminated and
doesn't want the transaction tried again. Additionally, if any data has already been transferred in
the current transaction, it may have been corrupted. (Refer to 5.2.8.2.2 Error Response and
Reporting on CSERR#). CDEVSEL# must be asserted for one or more clock cycles and CTRDY#
must be negated before target-abort can be signaled.
© 1999 PCMCIA/JEIDA 89
CARDBUS PC CARD ELECTRICAL INTERFACE
CCLK
1 2 3 4 1 2 3 4
CFRAME#
CIRDY#
CTRDY#
CSTOP#
CDEVSEL#
Disconnect - A Disconnect - B
CCLK
1 2 3 4 5 1 2 3 4
CFRAME#
CIRDY#
CTRDY#
CSTOP#
CDEVSEL#
In summary, the following general rules govern CFRAME#, CIRDY#, CTRDY#, and CSTOP# in
all CardBus PC Card transactions.
1. Whenever CSTOP# is asserted, CFRAME# must be negated as soon as possible pursuant to the
rules for the negation of CFRAME# (i.e., CIRDY# must be asserted). The negation of
CFRAME# should occur as soon after CSTOP# is asserted as possible, preferably within two or
three cycles. The target must not assume any timing relationship between CSTOP# assertion
and CFRAME# negation, but must keep CSTOP# asserted until CFRAME# is negated. When
the master samples CSTOP# asserted, it must negate CFRAME# on the first cycle thereafter in
which CIRDY# is asserted. This assertion of CIRDY# (and therefore CFRAME# negation) may
occur as a consequence of the normal CIRDY# behavior of the master (had the current
transaction not been target terminated), and be delayed zero or more cycles depending on
90 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
when the master is prepared to complete a data transfer. Alternatively, the master may assert
CIRDY# immediately (even without being prepared to complete a data transfer) if CTRDY# is
negated, thus indicating there will be no further data transfer.
2. Once asserted, CSTOP# must remain asserted until CFRAME# is negated, whereupon,
CSTOP# must be negated.
3. During the final data phase of a transaction (CFRAME# negated and CIRDY# asserted), any
clock edge on which either CSTOP# or CTRDY# is asserted becomes the last cycle of the
transaction, and CIRDY# is negated on the following clock edge. (This creates an IDLE cycle
and defines the end of the transaction.)
4. The master must retry an access that was target terminated (except target-abort) with the
address of the next untransferred data if it intends to complete the access. If the device was
prefetching, it may elect not to retry the access.
5. Once a target has asserted CTRDY# or CSTOP#, it cannot change CDEVSEL#, CTRDY#, or
CSTOP# until the current data phase completes.
5.2.4 Arbitration
In order to minimize access latency, the CardBus PC Card arbitration approach is access based
rather than time slot based. That is, a bus master must arbitrate for each access it performs on the
bus. CardBus PC Card uses a central arbitration scheme, where each master agent has unique
request (CREQ#) and grant (CGNT#) signals. A simple request-grant handshake is used to gain
access to the bus. Arbitration is "hidden", which means it occurs during the previous access so that
no CardBus PC Card bus cycles are consumed due to arbitration, except when the bus is IDLE.
A specific arbitration algorithm must be implemented by the central arbiter, e.g., rotating priority,
fair, etc. Since the arbitration algorithm is fundamentally not part of the bus specification, system
designers may elect to modify it, but must provide for the latency requirements of their selected
I/O controllers and for add-in cards. Refer to 5.2.5.3.2 Low Latency Design Guidelines for
information on latency guidelines. The bus allows back-to-back transactions by the same agent and
allows flexibility for the arbiter to prioritize and weight requests. An arbiter can implement any
scheme as long as only a single CGNT# is asserted on any clock.
© 1999 PCMCIA/JEIDA 91
CARDBUS PC CARD ELECTRICAL INTERFACE
3. While CFRAME# is negated, CGNT# may be negated at any time in order to service a higher
priority11 master, or in response to the associated CREQ# being negated.
Figure 5-6 illustrates basic arbitration. Two agents (e.g., two cards supported by the same CardBus
PC Card adapter) are used to illustrate how an arbiter may alternate bus accesses.
CCLK
1 2 3 4 5 6 7
CREQ#-a
CREQ#-b
CGNT#-a
CGNT#-b
CFRAME#
access - A access - B
CREQ#-a is asserted prior to or at clock 1 to request use of the interface. Agent A is granted access to
the bus because CGNT#-a is asserted at clock 2. Agent A may start a transaction at clock 2 because
CFRAME# and CIRDY# are negated and CGNT#-a is asserted. Agent A's transaction starts when
CFRAME# is asserted on clock 3. Since agent A desires to perform another transaction, it leaves
CREQ#-a asserted.
When CFRAME# is asserted on clock 3, the arbiter determines agent B should go next and asserts
CGNT#-b and negates CGNT#-a on clock 4.
When agent A completes its transaction on clock 4, it relinquishes the bus. CardBus PC Card agents
can determine the end of the current transaction when both CFRAME# and CIRDY# are negated.
Agent B becomes the owner on clock 5 (because CFRAME# and CIRDY# are negated) and
completes its transaction on clock 7.
Notice that CREQ#-b is negated and CFRAME# is asserted on clock 6 indicating agent B requires
only a single transaction. The arbiter grants the next transaction to agent A because its CREQ# is
still asserted.
The current owner of the bus keeps CREQ# asserted when it requires additional transactions. If no
other requests are asserted or the current master has highest priority, the arbiter continues to grant
the bus to the current master.
CGNT# gives an agent access to the bus for a single transaction. If an agent desires another access,
it should continue to assert CREQ#. An agent may negate CREQ# anytime, but the arbiter may
interpret this to mean the agent no longer requires use of the bus and may negate its CGNT#. An
agent should negate CREQ# in the same clock CFRAME# is asserted if it only wants to do a single
11 Higher priority here does not imply a fixed priority abitration, but refers to the agent that would win arbitration
at a given instant in time.
92 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
transaction. When a transaction is terminated by a target (CSTOP# asserted), the master must
negate its CREQ# for a minimum of two CardBus PC Card clocks, one being when the bus goes to
the IDLE state (at the end of the transaction where CSTOP# was asserted) and either the clock
before or the clock after the IDLE state. If the master intends to complete the transaction, it must
reassert its CREQ# following the negation of CREQ# or a potential starvation condition may occur. If
the master does not intend to continue (because it was prefetching or a higher priority internal
request needs to be serviced), the agent asserts CREQ# whenever it needs to use the interface
again. This allows another agent to use the interface while the previous target prepares for the next
access.
The arbiter can assume the current master is broken if it has not started an access after its CGNT#
has been asserted (its CREQ# is also asserted), and the bus is IDLE for eight CardBus PC Card
clocks. However, the arbiter may remove CGNT# at any time to service a higher priority agent.
For masters that want to perform fast back-to-back transactions that are supported by the target
mechanism, the Fast Back-to-Back Enable field in the Command register is required. (This optional
field is only meaningful in devices that act as bus masters.) It is a read/write field when
implemented. When set to a one (high), the bus master may start a CardBus PC Card transaction
using fast back-to-back timing without regard to which target is being addressed, provided the
previous transaction was a write transaction issued by the current bus master. If this field is set to a
© 1999 PCMCIA/JEIDA 93
CARDBUS PC CARD ELECTRICAL INTERFACE
zero (low) or not implemented, the master may perform fast back-to-back only if it can guarantee
that the new transaction goes to the same target as the previous one (master based mechanism).
This field would presumably be set by the system configuration routine, after ensuring that all
targets on the same bus had the Fast Back-to-Back Capable field set.
Note that the master based fast back-to-back mechanism does not allow these fast cycles to occur
with separate targets, while the target based mechanism does.
If the target is unable to provide both of the guarantees specified above, it must not implement this
field and it will automatically be returned as a zero when the Status register is read. However, it is
recommended that all targets implement the target based fast back-to-back capability.
Under all other conditions, the master must insert a minimum of one IDLE bus state. (There is
always at least one IDLE bus state between transactions by different masters.) Note multi-ported
targets should only lock themselves when they are truly locked during fast back-to-back
transactions (refer to 5.2.6 Exclusive Access for more information).
During a fast back-to-back transaction, the master starts the next transaction immediately without an
IDLE bus state. The last data phase completes when CFRAME# is negated, and CIRDY# and
CTRDY# are asserted. The current master starts another transaction on the same clock the last data
is transferred for the previous transaction.
It's important to note that agents not involved in a fast back-to-back transaction sequence cannot
(and generally need not) distinguish intermediate transaction boundaries using only CFRAME#
and CIRDY# (there is no bus IDLE cycle). During fast back-to-backs only, the master and target
involved need to distinguish these boundaries. When the last transaction is over, all agents will see
an IDLE cycle. However, those that do support the target based mechanism must be able to
distinguish the completion of all CardBus PC Card transactions and be able to detect all address
phases.
In Figure 5-7, the master completes a write on clock 3 and the address phase of the next transaction
occurs on clock 4. The target must begin sampling CFRAME# on the clock following the completion
of the current data transaction. Targets must be able to decode back-to-back operations while a
master may optionally support this function. A target is free to retry the request after it has claimed
ownership by asserting CDEVSEL#.
CCLK
1 2 3 4 5 6 7
CREQ#
CGNT#
CFRAME#
CIRDY#
CTRDY#
94 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
5.2.5.3 Latency
CardBus PC Card is a low latency, high throughput interface. This section describes the CardBus PC
Card mechanisms that help control worst case latency. Although latencies in a stand alone CardBus
PC Card environment can be predicted with relatively high precision, the inclusion of a standard
expansion bus (ISA, EISA, MC, or NuBus), and other system effects, make latency prediction
much more difficult.
© 1999 PCMCIA/JEIDA 95
CARDBUS PC CARD ELECTRICAL INTERFACE
A CardBus PC Card master can burst indefinitely so long as the target can source/sink the data,
and no other agent requests the bus. However, CardBus PC Card specifies two mechanisms that cap
a master's tenure in the presence of other requests, so that predictable bus acquisition latency can be
achieved. These are defined as follows:
Master Latency Timer (LT): Each master's LT is cleared and suspended whenever it is not
asserting CFRAME#. When a master asserts CFRAME#, it enables its LT to count. If the master
negates CFRAME# prior to count expiration, LT is meaningless. Otherwise, once the count
expires (count = "T" clocks), the master must initiate transaction termination (refer to 5.2.3.3.1
Master Initiated Termination) as soon as its CGNT# is removed. In essence, "T" represents a
minimum guaranteed time slice (measured in CardBus PC Card clocks) allotted to the master,
after which it must surrender tenure as soon as its CGNT# is removed. (Actual termination does
not occur until the target is ready.)
Target Initiated Termination (Specifically Disconnect): A target must manipulate CTRDY# and
CSTOP# so as to end the transaction upon consummation of data phase "N" (where N=1, 2, 3,
...), if incremental latency to data phase "N+1" is greater than eight clocks. For example, assume
a CardBus PC Card master read from a target takes a minimum of eight clocks. Applying the
rule for N = 1, the latency to data phase 2 is eight clocks, thus the target must terminate upon
completion of data phase 1 (i.e., a target this slow must break attempted bursts on data phase
boundaries).
Note that neither mechanism restricts latency to the first data phase. (See also 5.2.5.3.2 Low Latency
Design Guidelines). For example, assume that in a particular system, there is no target so slow that it
delays CTRDY# by more than T+8 clocks for the first data phase to complete. Given this
assumption and the mechanisms above, it can be shown that the longest transaction the master will
execute is T+8 clocks (assuming its CGNT# is removed before its LT expires).
In effect, T represents a trade-off between throughput (relatively high values) and latency (low
values). For example, T = 40 accommodates a burst of 32 data phases (128 bytes in a 32-bit/clock
transaction) if both master and target are capable of 0 wait cycle bursts (assuming an eight clock
latency to first data). Reducing T to 20 would likely break the burst every 12 to 14 transfers, but
would constrain the maximum transaction to 28 clocks.
96 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
1. Single layer targets should constrain first data phase latency to sixteen clocks. If a temporary
internal state (e.g., DRAM refresh, full queue of previously posted writes) would otherwise
stretch the access beyond eight clocks, retry immediately.
2. Multi-layer targets should retry an access that collides with a busy resource. For example, an
access to a system bus slave while the system bus is owned by another master should be
immediately retried. (The cycle would likely have to be retried anyhow to avoid deadlock, so
why wait?) Likewise, an access to a DRAM frame buffer currently consumed by screen refresh
should be retried.
3. Multi-layer targets (especially bus-to-bus bridges) should exercise great care in write buffer
strategy. Write buffers make it difficult to bound latency, since strong ordering requirements
typically mandate that all writes queued to a bus be completed before an access going the other
way is allowed.
To facilitate making sound system level tradeoffs, component vendors should clearly document
device latency behavior. (A common tradeoff is to disallow specific ill-behaved standard bus
adapters in a real-time application.) Master devices should spell out both latency expectations and
the consequences of latency violation. Target devices should specify worst case response, as well as
all events that can cause a retry or disconnect. If a target's latency is paced by external factors (e.g.,
how long an ISA adapter stretches a cycle) this should be clearly stated.
© 1999 PCMCIA/JEIDA 97
CARDBUS PC CARD ELECTRICAL INTERFACE
2. Once lock is established, the target remains locked until it samples both CFRAME# and
CBLOCK# negated together or it signals target-abort.
3. The target guarantees exclusivity to the owner of CBLOCK# (once lock is established) of at least
the number of bytes read in the initial exclusive access.12 This includes accesses that do not
originate on CardBus PC Card for multiport devices.
All CardBus PC Card targets that support exclusive accesses must sample CBLOCK# with address.
If the target of the access performs medium or slow decode, it must latch CBLOCK# during the
address phase to determine if the access is a lock operation when decode completes. The target of a
transaction marks itself locked if CBLOCK# is negated during the address phase. If a target waits to
sample CBLOCK# until it asserts CDEVSEL#, it cannot distinguish if the current access is a locked
transaction or one that occurs concurrently with a locked access. An agent may store "state" to
determine if the access is locked but this requires latching CBLOCK# on consecutive clocks and
comparing to determine if the access is locked. The simpler way is for the target to mark itself
locked on any access it claims where CBLOCK# is negated during the address phase. A locked
target remains in the locked state until both CFRAME# and CBLOCK# are negated. To allow other
accesses to a multiport device, the target may sample CBLOCK# the clock following the address
phase to determine if the device is really locked. When CBLOCK# is negated during the address
phase and is asserted the clock following the address phase, the multiport device is locked and must
ensure exclusivity to the CardBus PC Card master. When CBLOCK# is negated during the address
phase and the clock following the address phase, the target is not locked, and is free to respond to
other requests. A currently locked target may only accept requests when CBLOCK# is negated
during the address phase. A currently locked target will respond by asserting CSTOP# with
CTRDY# negated (retry) to all transactions when CBLOCK# is asserted during the address phase.
To summarize, a target of an access locks itself on any access it claims when CBLOCK# is negated
during the address phase. It unlocks itself anytime CFRAME# and CBLOCK# are both negated. It
may seem confusing for the target to lock itself on a transaction that is not locked. However, from an
implementation point of view, it is a simple mechanism that uses combinatorial logic and always
works. The device will unlock itself at the end of the transaction when it detects CFRAME# and
CBLOCK# both negated. A target can also remember state (which is useful for a multiport device)
to determine if it is truly locked or not. The target is truly locked when CBLOCK# is negated
during the address phase and asserted on the following clock.
The arbiter must be in some type of "fairness" algorithm when CBLOCK# is asserted; otherwise, a
livelock may occur.
Existing software that does not support the CardBus PC Card lock usage rules has a potential of not
working correctly. CardBus PC Card resident memory that supports CBLOCK# and desires to be
backward compatible to existing software is recommended to implement complete resource lock.
Refer to 5.2.6.5 Supporting CBLOCK# and Write-back Cache Coherency for details of how to avoid
deadlocks.
A master that uses CBLOCK# on CardBus PC Card must adhere to the following rules:
1. A master can access only a single resource during a lock operation.
2. A lock cannot straddle a device boundary.
3. First transaction of lock operation must be a read transaction.
4. Only the address range accessed in the initial read can be assumed to be locked.
5. CBLOCK# must be asserted the clock following the address phase and kept asserted to
maintain control.
98 ©1999 PCMCIA/JEIDA
ELECTRICAL SPECIFICATION
6. CBLOCK# must be released if retry is signaled before a data phase has completed and the lock
has not been established.13
7. CBLOCK# must be released whenever an access is terminated by target-abort or master-abort.
8. CBLOCK# must be negated for a minimum of one IDLE cycle between consecutive lock
operations.
Since different processors and system architectures support different, and often incompatible,
exclusion protocols, both software and hardware designers should use only generally accepted,
compatible constructs. Given the nature of a resource lock, the bus protocol will ensure that correctly
written software exclusion algorithms will function over CardBus PC Card. Other system constraints,
such as processor protocols and other system busses, however, make it only possible to guarantee
that read-and-set operations (a read-modify-write where the data bits are all 1's) are universally
accepted by the systems. This is sufficient to implement semaphores, and thus to implement all
other forms of exclusion in software.
Furthermore, it is an unreasonable burden, not to mention a potentially significant performance
degradation, to ensure that arbitrary transaction combinations under lock operate correctly. Based
on this, the following rules are defined for transactions initiated by a bus master residing on a
CardBus PC Card:
1. First transaction of an exclusive access must be a Memory Read transaction14.
2. An exclusive sequence may contain only one Memory Write transaction.
3. If an exclusive sequence includes a Memory Write, then the Memory Write must be the last
transaction.
4. All Memory Read and Memory Write transactions must be DWORD aligned.
5. If an exclusive sequence contains multiple Memory Read transactions, and ends with a Memory
Write transaction, then the write is not guaranteed to be atomic with respect to any of the
Memory Reads.
These rules should not be construed as defining the only behavior for exclusive accesses allowed in
a system. However, a card designer cannot assume that the system supports other transaction
sequences for exclusive operations.
13Once lock has been established, the master retains ownership of CBLOCK# when terminated with retry or
disconnect.
14Note that any one command, Memory Read, Memory Read Line, or Memory Read Multiple, represents a single
transaction. However, prefetching is not recommended for the command which establishes an exclusive access to
a target unless a complete resource lock is implemented.
© 1999 PCMCIA/JEIDA 99
CARDBUS PC CARD ELECTRICAL INTERFACE
Figure 5-9 illustrates starting an exclusive access. CBLOCK# is negated during the address phase to
request a lock operation which must be initiated with a read command. CBLOCK# must be asserted
the clock following the address phase, which is on clock 3, to keep the target in the locked state
which allows the current master to retain ownership of CBLOCK# beyond the end of the current
transaction.
CCLK
1 2 3 4 5
CFRAME#
CBLOCK#
CIRDY#
CTRDY#
A locked operation is not established on the bus until completion of the first data phase of the first
transaction (CIRDY# and CTRDY# asserted). If the target retries the first transaction without a data
phase completing, not only must the master terminate the transaction but it must also release
CBLOCK#. Once the first data phase completes, the exclusive operation is established, and the
master keeps CBLOCK# asserted until either the lock operation completes or an error (master- or
target-abort) causes an early termination. Target termination by retry or disconnect is a normal
termination even when a lock operation is established. When a master is terminated by the target
with disconnect or retry after the lock has been established, the target is indicating it is currently
busy and unable to complete the requested data phase. The target will accept the access when it is
not busy and continue to honor the lock by excluding all other accesses. The master continues to
control CBLOCK#. Non-exclusive accesses to unlocked targets on CardBus PC Card are allowed to
occur while CBLOCK# is asserted. When the exclusive access is complete, CBLOCK# is negated
and other masters may vie for ownership.
CCLK
1 2 3 4 5
CFRAME#
Release
CBLOCK# Continue
CIRDY#
CTRDY#
CCLK
1 2 3 4 5
CFRAME#
CIRDY#
CTRDY#
CSTOP#
CDEVSEL#
the configuration space Status register. CDEVSEL# must be asserted with or prior to the edge at
which the target enables its CTRDY#, CSTOP#, or data (read). In other words, a target must assert
CDEVSEL# (claim the transaction) before it is allowed to issue any other target response. In all cases
except one, once a target asserts CDEVSEL# it must not negate CDEVSEL# until CFRAME# is
negated (CIRDY# is asserted) and the last data phase has completed. With normal master
termination, CDEVSEL# negation must be coincident with the negation of CTRDY#. The exception
is the target-abort.
CCLK
1 2 3 4 5 6 7 8
CFRAME#
CIRDY#
CTRDY#
NO RESPONSE
CDEVSEL# FAST MED SLOW SUB
ACKNOWLEDGE
If no agent asserts CDEVSEL# within three clocks of CFRAME#, the agent doing subtractive decode
may claim and assert CDEVSEL#. If the system does not have a subtractive decode agent, the
master never sees CDEVSEL# asserted and terminates the transaction per the master-abort
mechanism (refer to 5.2.3.3.1 Master Initiated Termination).
A target must do a full decode before driving/asserting CDEVSEL#, or any other target response
signal. It is illegal to drive CDEVSEL# prior to a complete decode and then let the decode
combinationally resolve on the bus. (This could cause contention.) A target must qualify the CAD
lines with CFRAME# before CDEVSEL# can be asserted on commands other than configuration. A
target must qualify CCBE# and CAD[1::0] with CFRAME# before CDEVSEL# can be asserted on a
Configuration command.
It's expected that most (perhaps all) target devices will be able to complete a decode and assert
CDEVSEL# within one or two clocks of CFRAME# being asserted (fast and medium in the figure).
Once CDEVSEL# has been asserted, it cannot be negated until the last data phase has completed,
except to signal target-abort.
If the first access maps into the targets address range, it asserts CDEVSEL# to claim the access. But if
the master attempts to continue the burst access across the resource boundary, the target is required
to signal disconnect.
When a target claims an I/O access, and the byte enables indicate one or more bytes of the access
are outside the target's address range, it must signal target-abort. To deal with this type of I/O
access problem, a subtractive decode device (e.g., expansion bus bridge) may do one of the
following:
• do positive decode (by including a byte map) on addresses for which different devices share
common DWORDs, additionally using byte enables to detect this problem and signal target-
abort.
• pass the full access to the expansion bus, where the portion of the access that cannot be serviced
will be ignored. (This occurs only when first addressed target resides on the expansion bus and
the other is on CardBus PC Card.)
During the address phase, CCBE[3::0]# = 0001 (Special Cycle) and CAD[31::00] are driven to
random values and must be ignored. During the data phase, CCBE[3::0]# are asserted and
CAD[31::00] are as follows:
CAD[15::00] Encoded message
CAD[31::16] Message dependent (optional) data field
The CardBus PC Card bus sequencer starts this command like all others and terminates it with a
master-abort. The hardware application provides all the information like for any other command
and starts the bus sequencer. When the sequencer reports that the access terminated with a master-
abort, the hardware application knows the access completed. In this case, the Received Master Abort
field in the configuration space Status register must not be set. The quickest a Special Cycle
command can complete is five clocks. One additional clock is required for the turnaround cycle
before the next access. Therefore, a total of six CardBus PC Card clocks is required from the
beginning of a Special Cycle to the beginning of another access.
There are 64 KBytes of messages. The message encodings are defined and described in Appendix
A.
CCLK
1 2 3 4 5 6 7 8 9
A A B C
CGNT#
CFRAME#
CIRDY#
To support hierarchical buses, two types of configuration access are used. They have the following
formats which show the interpretation of CAD lines during the address phase of a configuration
access:
31 11 10 8 7 2 1 0
Function Register
Reserved 0 0
Number Number
Type 0
31 24 23 16 15 11 10 8 7 2 1 0
Bus Device Function Register
Reserved 0 1
Number Number Number Number
Type 1
Figure 5-14 Type 0 and Type 1 Configuration Accesses
Type 1 and Type 0 configuration accesses are differentiated by the values on the CAD[1::0] pins. A
Type 0 configuration cycle (when CAD[1::0] = "00") is used to select a device on the bus where the
cycle is being run. A Type 1 configuration cycle (when CAD[1::0] = "01") is used to pass a
configuration request on to another bus.
The Register Number and Function Number fields have the same meaning for both configuration
types, while Device Number and Bus Number are used only in Type 1 accesses. Reserved fields
must be ignored by targets.
Bridges (e.g., Host-to-CardBus PC Card) that need to generate a Type 0 configuration cycle use the
Device Number to select a CardBus PC Card device. The Function Number is provided on
CAD[10::08]. The Register Number is provided on CAD[7::2]. CAD[1::0] must be 00 for a Type 0
configuration access.
Type 0 configuration accesses are not propagated beyond the local CardBus PC Card and must be
claimed by a local device or terminated with master-abort.
If the target of a configuration access resides on another bus (not the local CardBus PC Card), a Type
1 configuration access must be used. Type 1 accesses are ignored by all targets except CardBus PC
Card-to-CardBus PC Card bridges. These devices decode the Bus Number field to determine if the
destination of the configuration access is residing behind the bridge. If the Bus Number is not for a
bus behind the bridge, the access is ignored. The bridge claims the access if the access is to a bus
behind the bridge. If the Bus Number is not to the secondary bus of the bridge, the access is simply
passed through unchanged. If the Bus Number matches the secondary bus number, the bridge
converts the access into a Type 0 configuration access. The bridge changes CAD[1::0] to 00 and
passes CAD[10::02] through unchanged. The Device Number is decoded to select one of 32 devices
on the local bus, and the bridge initiates a configuration access to that device.
Devices that respond to Type 0 configuration cycles are separated into two classes. The first class
(single function device) uses only CAD[1::0] (00) to determine whether or not to respond. The
second class of device (multi-function device) understands the Function Number field and uses
CAD[1::0] (00), as well as the encoded value on CAD[10::08] to determine whether or not to
respond. The two classes are differentiated by an encoding in the configuration space header.
Multi-function devices are required to do a full decode on CAD[10::08], and only respond to the
configuration cycle if they have implemented the configuration space registers for the selected
function. They are also required to always implement function 0 in the device. Implementing other
functions is optional and may be assigned in any order (i.e., a two-function device must respond to
function 0, but can choose any of the other possible function numbers (1-7) for the second function).
Configuration code will probe the bus in Device Number order (i.e., Function Number will be
zero). If a single function device is detected, no more functions for that Device Number will be
checked. If a multi-function device is detected, then all remaining Function Numbers will be
checked.
31 30 24 23 16 15 11 10 8 7 2 1 0
Bus Device Function Register
Reserved 0 0
Number Number Number Number
The CONFIG_ADDRESS register is 32 bits with the format shown in Figure 5-15 Figure. Bit 31 is an
enable flag for determining when accesses to CONFIG_DATA should be translated to configuration
cycles on CardBus PC Card. Bits 30 to 24 are reserved, read-only, and must return 0's when read.
Bits 23 through 16 choose a specific CardBus PC Card bus in the system. Bits 15 through 11 choose a
specific device on the bus. Bits 10 through 8 choose a specific function in a device (if the device
supports multiple functions). Bits 7 through 2 choose a DWORD in the device's configuration space.
Bits 1 and 0 are read-only and must return 0's when read.
Anytime a host bridge sees a full DWORD I/O write to CONFIG_ADDRESS, the bridge must latch
the data into its CONFIG_ADDRESS register. On full DWORD I/O reads to CONFIG_ADDRESS,
the bridge must return the data in CONFIG_ADDRESS. Any other types of accesses to this address
(non-DWORD) must be treated like a normal I/O access and no special action should be taken.
Therefore, the only I/O space consumed by this register is a DWORD at the given address. I/O
devices using BYTE or WORD registers are not affected because the cycles will be passed on
unchanged.
When a bridge sees an I/O access that falls inside the DWORD beginning at CONFIG_DATA
address, it checks the enable bit and the BUS NUMBER in the CONFIG_ADDRESS register. If
configuration cycle translation is enabled and the BUS NUMBER matches the bridge's bus number
or any bus number behind the bridge, then a configuration cycle translation must be done.
There are two types of translation that take place. The first, Type 0, is a translation where the device
being addressed is on the CardBus PC Card bus connected to the bridge. The second, Type 1, occurs
when the device is on another bus somewhere behind this bridge.
For Type 0 translations (see Figure 5-16), the bridge does a decode of the Device Number field to
access the appropriate device15 and performs a configuration cycle on CardBus PC Card, where
CAD[1::0] is 00. Bits 10 - 8 of CONFIG_ADDRESS are copied to CAD[10::8] on CardBus PC Card as
an encoded value which may be used by components which contain multiple functions. CAD[7::2]
are also copied from the CONFIG_ADDRESS register. Figure 5-16 shows the translation from the
CONFIG_ADDRESS register to CAD lines on CardBus PC Cards.
31 30 24 23 16 15 11 10 8 7 2 1 0
CardBus PC Card
Undefined 0 0
CAD LINES
31 11 10 1 0
For Type 1 translations, the bridge directly copies the contents of the CONFIG_ADDRESS register
onto the CardBus PC Card CAD lines during the address phase of a configuration cycle making
sure that CAD[1::0] is 01.
In both cases, byte enables for the data transfers must be directly copied from the processor bus.
For systems with peer bridges on the processor bus, one peer bridge would typically be designated
to always handshake accesses to the CONFIG_ADDRESS register. Other bridges would snoop the
data written to this register. Accesses to the CONFIG_DATA register are typically handshaken by
the bridge doing the configuration translation.
15 If the Device Number field contains an invalid device number, the bridge must complete the processor access
normally, dropping the data on writes and returning all ones on reads.
Host bridges and CardBus PC Card-to-CardBus PC Card bridges typically require two configuration
space registers whose contents are used to determine when the bridge does configuration cycle
translation. One register (Bus Number) specifies the bus number of the CardBus PC Card directly
behind the bridge, and the other register (Subordinate Bus Number) specifies the number of the last
hierarchical bus behind the bridge.16 POST code is responsible for initializing these registers to
appropriate values.
5.2.8.1 Parity
Parity on CardBus PC Card provides a mechanism to determine transaction by transaction if the
master is successful in addressing the desired target and if the data transfer occurred correctly. To
ensure that the correct bus operation is performed, the four command lines are included in the
parity calculation. To ensure that correct data is transferred, the four byte enables are also included
in the parity calculation. The agent that is responsible for driving CAD[31::00] on any given bus
phase is also responsible for driving even parity on CPAR.
During address and data phases, parity covers the CAD[31::00] and CCBE[3::0]# lines regardless of
whether or not all lines carry meaningful information. Byte lanes not actually transferring data are
16 Host bridges that do not allow peer bridges do not need either of these registers since the bus behind the bridge is,
by definition, bus 0 and all other CardBus PC Card buses are subordinate to bus 0.
still required to be driven with stable (albeit meaningless) data and are included in the parity
calculation. During Configuration or Special Cycle commands, some (or all) address lines are not
defined but are required to be driven to stable values and are included in the parity calculation.
Parity is generated according to the following rules:
• Parity is calculated in the same way on all CardBus PC Card transactions regardless of
the type or form.
• The number of "1"s on CAD[31::00], CCBE[3::0]#, and CPAR equals an even number.
• Parity generation is not optional; it must be done by all CardBus PC Card compliant
devices.
On any given bus phase, CPAR is driven by the agent that drives CAD[31::00] and lags the
corresponding address or data by one clock. Figure 5-17 illustrates a read and write transaction with
parity. The master drives CPAR for the address phases on clock 3 and 7. The target drives CPAR
for the data phase on the read transaction (clock 5) while the master drives CPAR for the data phase
on the write transaction (clock 8). Note that other than the one clock lag, CPAR behaves exactly like
CAD[31::00] including wait states and turnaround cycles.
CCLK
1 2 3 4 5 6 7 8 9
CFRAME#
CPAR
CPERR#
Parity must be checked to determine if the master successfully addressed the desired target and if
data transferred correctly. Checking of parity on CardBus PC Card is required except in one class of
devices listed in 5.2.8.2 Error Reporting. Agents that support parity checking must always set the
Detected Parity Error field in the configuration space Status register when a parity error is detected.
Any additional action beyond setting this field is conditional upon the Parity Error Response field in
the configuration space Command register and is discussed in the error reporting section.
Any agent may check and signal an address parity error on CSERR#. Only the master may report
a read data parity error and only the selected target may signal a write data parity error.
Two signals are used in the CardBus PC Card error reporting scheme. CPERR# is used exclusively
for reporting data parity errors on all transactions except Special Cycle commands. It is a sustained
tri-state signal and is bussed to all CardBus PC Card agents. Bus protocol assures that CPERR# will
never be simultaneously driven by multiple bus agents and that proper signal turn around times
are observed to avoid any driver contention.
CSERR# is used for other error signaling, including address parity, and data parity on Special
Cycle commands, and may optionally be used on any other non-parity or system errors. It is an
open drain signal that is wire-ORÕed with all other CardBus PC Card agents and, therefore, may be
simultaneously driven by multiple agents. Since open drain signaling cannot guarantee stable
levels on every clock edge, once CSERR# is asserted its logical value must be assumed to be
indeterminate until the signal is sampled in the negated state on at least two successive clock edges.
Both CPERR# and CSERR# are required pins since parity error signaling on CardBus PC Card is
required. Note that all agents are required to generate parity.
Use of CSERR# to signal non-parity errors is optional. It must be assumed, however, that signaling
on CSERR# will generate an NMI and is, therefore, fatal. Consequently, care should be taken in
using CSERR#.
The following sections cover the responsibility placed on each bus agent regarding signaling on the
CPERR# and CSERR# pins.
17 On a write transaction, this can occur when CIRDY# is asserted and the target is inserting wait states. On a read
transaction, this occurs when CTRDY# is asserted and the master is inserting wait states.
edge. To return it to nominal state at the end of each bus operation, it must be actively driven high
for one clock period, starting two clocks after the CAD bus turnaround cycle (e.g., clock 7 in Figure
5-17.) The CPERR# turnaround cycle occurs one clock later (clock 8 in Figure 5-17.) CPERR# may
never be driven (enabled) for the current cycle until at least three clocks after the address phase.
When a master detects a data parity error and asserts CPERR# (on a read transaction) or samples
CPERR# asserted (on a write transaction) it must set the Data Parity Detected field (Status register,
bit 8), and can either continue the transaction or terminate it. A target of a transaction that detects a
parity error can either continue the operation or cause it to be stopped via target termination.
Targets never set the Data Parity Reported field. When CPERR# is asserted, it is recommended that
both the master and target complete the transaction. CPERR# is only an output signal for targets
while masters use CPERR# as both an input and output.
When the master of the access becomes aware that a parity error has occurred on its transaction, it is
required to inform the system. It is recommended that the master inform its device driver of the
error by generating an interrupt (or modifying a status register or flag to mention a few options). If
none of these options is available to the device, it may, as a last recourse, pass responsibility of the
error to the operating system by asserting CSERR#. Note that the system designer may elect to
report all parity errors to the operating system by converting all CPERR# error signals into
CSERR# error signals in the central resource.
When the SERR Enable field is enabled, an agent may assert CSERR# under the following
conditions:
• The master (which does not have a driver) was involved in a transaction that was abnormally
terminated.
• A catastrophic error that left the agent questioning its ability to operate correctly.
Note that master-abort is not an abnormal condition for bridges during Configuration and Special
Cycle commands. CSERR# should not be used for these conditions or for normally recoverable
cases. The assertion of CSERR# should be done with deliberation and care since the result may be
an NMI. Target-abort is generally an abnormal target termination and may be reported (only by
the master) as an error by signaling CSERR# when the master cannot report the error through its
device driver.
For a read/write shared memory on PC Cards, the following cacheability discipline and requirements
must be met:
1. The host system may cache memory on a CardBus PC Card if the card configuration allows it
(e.g., as set in the card's Configuration Space), with hardware maintained data consistency.
2. All accesses to memory Cacheable by the host system must be visible to the host system for
maintaining its cache coherency.
3. An agent on a CardBus PC Card may cache only the card's on-board (local19) memory. If the
agent on the CardBus PC Card caches its local memory, that memory must not be cacheable by
the host system (e.g., disallowed in the card's Configuration Space). Cacheability of the card's
memory by the host system or by the local agent must be configured by the host system during
initialization of the card.
4. If an agent on the CardBus PC Card caches its local memory, it is responsible for its cache and
the memory data consistency when any other agent accesses that local memory.
In general, if the CardBus PC Card and the system bus do not operate concurrently, all CardBus PC
Card addresses should be visible on the system bus. Otherwise, the host CardBus PC Card adapter
must forward addresses in the cacheable range to the system bus for snooping. Also, card's address
range(s) which represent memory mapped I/O are not cacheable, while other regions of the card's
memory might be cacheable.
Any function in a CardBus PC Card device that contains memory that might be cacheable by the
host system, must implement a writable Cache Line Size register (refer to the CardBus PC Card
Programming Model Section of this specification). Contents of this register cannot be hard-wired to
any value. It must be written by the host system during the function configuration. If a non-zero
value is written into the Cache Line Size register, the agent must disconnect all types of memory
transactions (all Memory commands) crossing the cache line boundaries. If zero value is written to
the Cache Line Size register, the agent is released from maintaining the memory caching discipline,
i.e. it does not have to disconnect CardBus PC Card transactions on the cache line boundaries.
If the Cache Line Size register is written to 0, it is the responsibility of the host system software to
maintain the host system's cache coherency with respect to the memory on the card, or disable
caching of that memory.
An agent containing memory that is not cacheable by the host system, may hard-wire the contents
of the Cache Line Size register to zero.
19Private and local memory are not synonyms here. Private memory is not a shared memory. The term local (on-
board) memory designates physical memory location, e.g. on a PC Card with another CardBus PC Card agent.
The local memory, however, could be logically shared by two or more agents in the system.
20CGNT# is not being considered here because it may never be asserted to a card unless the card's CREQ# is
asserted. The CardBus PC Card central resource (e.g., the host CardBus PC Card adapter) is the default bus owner.
restarted. The minimum clock cycle time and the minimum clock high and low parameters must
not be violated, and the clock edges must be monotonic. (See 5.3 CardBus PC Card Electrical
Specification for the clock specifications).
The provisions for variable clock frequency and for stopping the interface clock require the CardBus
PC Card device's interface logic to maintain its state. The device cannot rely on any particular
frequency of the clock across the interface.
21Normaloperating frequency is any frequency at which transactions can be executed across the interface. It does not
necessarily mean the maximum CCLK frequency. It is up to the host's discretion to establish the operating
frequency of the interface at a given time.
CCLK
1 2 3 4 5 6 7 8 9
CFRAME#
CIRDY#
CCLKRUN#
CCLK
1 2 3 4 5 6
CCLKRUN#
CREQ#
DRIVEN BY CARD
CCLK
1 2 3 4 5 6 7 8 9
CFRAME#
CIRDY#
CCLKRUN#
DRIVEN BY CARD
When the CardBus PC Card interface is powered off, the power required to drive the CSTSCHG
signal must come from either an external source or from some power source on the card itself (e.g., a
local battery).
In its negated state, CSTSCHG signal is held low. When an external event occurs, the card drives a
single positive pulse on the CSTSCHG line. Optionally, the card may drive CSTSCHG as a high
level or series of pulses until the interface is powered up (or until CRST# is negated by the host
system). Note that when the CardBus PC Card interface is powered up, the Status Changed is
signaled on the CSTSCHG line as a level, not a pulse.
Battery powered cards assert the CSTSCHG signal for a minimum duration of 1 ms to minimize
energy drain from on card batteries (especially when the host system is completely powered off or
does not support the Wakeup protocol).
The host system, which implements this Wakeup protocol, must be able to latch a single CSTSCHG
pulse of the minimum duration. The host system cannot rely on continuous assertion or series of
CSTSCHG pulses to be driven by the card when the interface is powered off.
The host system can mask the CSTSCHG signal on a particular card or on several cards using the
Function Event Mask register(s).
In order to prevent the system from spurious wake up due to the CSTSCHG signal during a power
down process, the system must assert the CardBus PC Card reset (CRST#) before and throughout
powering off the CardBus PC Card interface (See also 5.3.3.2 Reset and 5.5.4.7.2 CSTSCHG
Requirements.)(see the CardBus PC Card Electrical Specification and the Requirements for Cards and
Sockets sections for CRST# parameters and power cycling requirements).
Upon detecting of the CSTSCHG signal assertion, the host system which supports this Wakeup
protocol is expected to:
• Return the system to an operational state
• Power up and configure the CardBus PC Card interface
The host system must assert the CardBus PC Card reset (CRST#) while powering up the interface.
After the interface is powered up and configured, the CSTSCHG line assumes its original Card
Status Changed signaling functionality.
The CSTSCHG signal driven by the card must be current-limited to prevent damage to the card or
the host system. The required signal parameters are specified in the CardBus PC Card Electrical
Specification section.
A CardBus PC Card which uses the CSTSCHG line for a system and/or the interface wake up,
must implement the Function Event, Function Event Mask, Function Present State and Function
Force Event registers. Signaling Wakeup on the CSTSCHG line is allowed only if the Wakeup
(WKUP) field is set and the mask field corresponding to the wake up event is set in the Function
Event Mask register by the host system.
All fields corresponding to the wake up events in the Function Event, Function Event Mask,
Function Present State and Function Force Event registers, must retain their settings throughout
power cycling of the CardBus PC Card interface. Also, these fields are not effected by the CardBus
PC Card reset (CRST#).
After the CardBus PC Card interface is powered up and configured, the card must signal the Card
Status Changed interrupt (assert CSTSCHG as a level) if an event field (WP, READY, BVD[2::1]) is
set in the Function Event register and the corresponding mask field is set in the Function Event
Mask register.
The host system is responsible for reading and clearing the event field(s) in the Function Event
register. The host system is also responsible for setting or clearing the fields in the Function Event
Mask register.
If a Card Status Changed event can occur either when the CardBus PC Card interface is powered up
or powered down, and the card has an auxiliary power source, then the Wakeup functionality must
be implemented on the card.
The requirements of retaining the field settings throughout power cycling or reset, however, do not
apply to the cards which do not have any auxiliary power source. Such cards cannot implement the
system or interface Wakeup protocol. The host system must not accept spurious signaling on the
CSTSCHG line during power cycling of the interface as a valid Status Changed interrupt or the
system Wakeup event.
31 16 15 14 5 4 3 2 1 0
Reserved Reserved
Interrupt (INTR)
31 16 15 14 13 7 6 5 4 3 2 1 0
Reserved Reserved
Interrupt (INTR)
Wakeup (WKUP)
PWM Audio Enable (PWM)
Binary Audio Enable (BAM)
General Wakeup (GWAKE)
Battery Voltage Detect, BVD[2::1]
Ready/Busy (READY)
Write Protect (WP)
31 16 15 14 5 4 3 2 1 0
Reserved Reserved
Interrupt (INTR)
31 16 15 14 5 4 3 2 1 0
Reserved Reserved
Interrupt (INTR)
Bit Field Name Function Event Register Function Event Mask Function Present State
Register Register
0 WP clear (0) clear (0) clear (0)
1 READY clear (0) clear (0) set (1)
2 BVD2 clear (0) clear (0) set (1)
3 BVD1 clear (0) clear (0) set (1)
4 GWAKE clear (0) clear (0) clear (0)
5 BAM Reserved (0) clear (0) Reserved (0)
6 PWM Reserved (0) clear (0) Reserved (0)
7 - 13 Reserved Reserved (0) Reserved (0) Reserved (0)
14 WKUP Reserved (0) clear (0) Reserved (0)
15 INTR clear (0) clear (0) clear (0)
16 - 31 Reserved Reserved (0) Reserved (0) Reserved (0)
The second method for generating a PWM signal is using an analog input. The analog input and a
"ramp wave" are used as inputs to a comparator, and the output is the PWM signal. If the ramp
wave is generated by ramping a digital-to-analog converter (DAC), this method can also be used to
convert the signal to a store-able digital format.
On the system side, the PWM signal is fed into an integrator to re-create the analog waveform.
Several signals can be summed through multiple isolation capacitors at the input node of the
integrator, or by summing outputs of multiple integrators. The integrator should work over the
frequency range of 50 Hz to 10 KHz.
PC Cards which support the Binary Audio mode are required to support the Binary Audio Enable
field in the Card Function Event Mask Register and the TPCE_CBMI field in the Configuration
Table Entry Tuple, CISTPL_CFTABLE_ENTRY_CB. PC Cards which support the PWM Audio mode
are required to support the PWM Audio Enable field in the Card Function Event Mask Register and
the TPCE_CBMI field in the Configuration Table Entry Tuple, CISTPL_CFTABLE_ENTRY_CB. This
allows the system to selectively enable, disable, and configure the audio functions on a card by card
basis.
5.3.1 Overview
This section defines all the electrical characteristics and constraints of CardBus PC Card components,
systems, and cards, including pin assignment on the PC card connector. The CardBus PC Card
electrical definition provides for a 3.3 V signaling environment. This should not be confused with 5
V and 3.3 V component technologies. A "5 V component" can be designed to work in a 3.3 V
signaling environment and vice versa; component technologies can be mixed in either signaling
environment. The signaling environments cannot be mixed.
However, supporting 16-bit PC Cards as well as CardBus PC Cards in the same socket implies that
the CardBus PC Card adapter must contain universal buffers capable of supporting 5 V, 3.3 V, and
eventually lower voltage PC Cards. This means that the CardBus PC Card adapter must use the
signaling convention of the PC Card in the socket (3.3 V or lower for CardBus PC Cards, 5 V or
lower for 16-bit PC Cards).
Supporting 16-bit PC Cards also means that CardBus PC Card's interconnect between the adapter
and the component on the PC Card must not have traces for signals in common between two
sockets. Protocol differences between CardBus PC Cards and 16-bit PC Cards make it impossible for
both cards to function on the same bus at the same time.
Finally, it means that the 68-pin connector must be used. This connector provides a limited number
of ground pins, creating a di/dt noise problem that is aggravated by CardBus PC Card's need to
switch a high speed, 32-bit interface over it. This necessitates managing di/dt noise across the
interface so that a clean ground reference can be maintained on the card.
5.3.2.1.1 DC Specifications
Table 5Ð7 summarizes the DC specifications for 3.3 V signaling.
1. This is determined solely by the maximum current capacity of the VCC pins on the connector.
2. This only applies to configuration accesses immediately following power-up and reset. Higher current
may be drawn after permission has been given by the host system. Since CIS can be located in config
space, expansion ROM, and/or memory space, CIS reads to all of these spaces must meet this
requirement. However, writes to memory space do not.
3. This specification must be guaranteed by design, and is only important to devices built for a
battery-operated environment. It is the Vin value at which current through the input totem pole is
essentially shut off.
4. Input leakage currents include High-Z output leakage for all bi-directional buffers with High-Z outputs.
CCD1#, CCD2#, CVS1, and CVS2 do not have to meet leakage requirements.
5. The max value assumes 5 pF for the card trace, 10 pF for the buffer, and 2 pF for the connector and
vias. The min value assumes 1 pF for the card trace, 3 pF for the buffer, and 1 pF for the connector and
vias. CCD[2::1]#, CVS1, and CVS2 do not have to meet the minimum capacitance requirement.
6. The max value assumes 10 pF for the motherboard trace, 10 pF for the buffer, and 2 pF for the
connector and vias. The min value assumes 1 pF for the motherboard trace, 3 pF for the buffer, and 1
pF for the connector and vias.
7. CCLK values account for longer trace length and additional input capacitance on the input buffer.
5.3.2.1.2 AC Specifications
Inputs are required to be clamped to both ground and VCC (3.3 V) rails. When dual power rails are
used, parasitic diode paths could exist from one supply to another. These diode paths can become
significantly forward biased (conducting) if one of the power rails does not meet specifications
momentarily. Diode clamps to a power rail, as well as output pull-up devices, must be able to
withstand short circuit current until drivers can be placed in a High-Z state. (See also 5.3.3.2 Reset.)
tfcb Output Fall Time 0.6 Vcc - 0.2 Vcc 0.25 1.0 V / ns 1
1. This does not apply to CCLK. Minimum and maximum rates are measured with the minimum
capacitive load a driver will see (7 pF). The values ensure the fastest edge rate will not switch
rail-to-rail faster than 3.6 ns.
0.9 test
Vcc point
0.6
Voltage
Vcc
DC
0.5 Vcc
drive point
DC drive
0.3 point
Vcc
0.1 test
AC drive Vcc
point point
60 Ω load line
As a consequence of this environment, under certain conditions of drivers, device topology, board
impedance, etc., the open circuit voltage at the pins of CardBus PC Card devices will exceed the
ground to VCC voltage range expected by a considerable amount. The technology used to
implement CardBus PC Card can vary from vendor to vendor, so it can not be assumed that the
technology is naturally immune to these effects. This test specification provides a synthetic worst
case AC environment, against which the long term reliability of a device can be evaluated.
These inputs to the CardBus PC Card should be capable of continuous exposure to the following test.
The test is conducted with the equivalent of a zero impedance voltage source driving a series
resistor directly into CCLK. The waveform provided by the voltage source (or open circuit voltage
including the resistor) and the resistor value is provided in Figure 5-26. This test covers the AC
operating conditions only; DC conditions are specified elsewhere.
7.1 V, p-to-p
(minimum)
0V
R 4 nS
DUT (max)
V Test 30.0 nS
(33 MHz)
Setup
+ 3.6 V
7.1 V, p-to-p
(minimum)
- 3.5 V
In all cases, di/dt noise shall not exceed Vil. (See Table 5Ð7 DC Specification for 3.3 V Signaling.)
The grounded shroud connector is required for CardBus PC Card implementations. (See the
Physical Specification and see also Appendix-B, 8. CardBus PC Card Connector Test
Methodology.)
thigh
tlow
0.6 Vcc
0.475 Vcc
0.4 Vcc, p-to-p
0.4 Vcc
(minimum)
0.325 Vcc
0.2 Vcc
1. tval includes the time to propagate data from internal registers to the output buffer and drive the output to
a valid level. Minimum tval is measured from CCLK crossing Vtest to the signal crossing Vih on
falling edges and Vil on rising edges. Maximum tval is measured from CCLK crossing Vtest to the
signal's last transition out of the threshold region (Vil for falling edges, Vih for rising edges).
2. Minimum times are specified with 0 pF equivalent load; maximum times are specified with 30 pF
equivalent load. Actual test capacitance may vary, but results should be correlated to these
specifications. Systems which exceed this capacitance, due to long traces between the socket and
adapter, must reduce the CCLK frequency appropriately.
3. tsu and th are measured at Vth for rising edges and Vtl for falling edges.
4. CRST# is asserted asynchronously and negated synchronously with respect to CCLK. "CCLK Stable"
means that VCC is within tolerances (See Table 5Ð7 DC Specification for 3.3 V Signaling.) and
CCLK is meeting specifications (See Table 5Ð10 CardBus PC Card Clock Specifications.). (See
also 5.3.3.2 Reset.)
5. See 5.1.2 Signal/Pin Description for the CardBus PC Card and adapter signals which must be in a
High-Z state.
6. This parameter only applies when signaling remote wakeup over the CSTSCHG pin. All other status
change information must be signaled by asserting CSTSCHG until the resultant interrupt is serviced.
Vth
CCLK Vtest
Vtl
tval(min)
OUTPUT Vih
DELAY Vil
tval(max)
High-Z
Vtest Vtest
OUTPUT
ton
toff
Vth
CCLK Vtest
Vtl
tsu
th
Vth
Vih
inputs Vmax
INPUT valid Vil
Vtl
1. The input test for the 3.3 V environment is done with 0.125 VCC of overdrive. Timing parameters must
be met with no more overdrive than this. Vmax specifies the maximum peak-to-peak waveform
allowed for testing input timing.
tskew 2 (max) ns
Vih
CCLK Vtest
Vil
(@Device #1)
tskew
tskew
tskew
Vih
CCLK Vtest
(@Device #2) Vil
5.3.3.2 Reset
The assertion of the CardBus PC Card reset signal (CRST#) is asynchronous with respect to CCLK
while the negation is synchronous. Both edges of the CRST# signal must be monotonic through the
input switching range. The CardBus PC Card specification does not preclude the implementation of
a fully synchronous CRST#, if desired. (See Table 5Ð11 3.3 V Timing Parameters.) The Tfail
parameter provides for system reaction to any of the power rails failing to meet specifications
momentarily. If this occurs, parasitic diode paths could short circuit active output buffers elsewhere
in the system. Therefore, CRST# is asserted upon power failure in order to float the output buffers.
The value of tfail is 500 ns (maximum) from any power rail going out of specification, i.e. exceeding
specified tolerances by more than 500 mV.
The system must assert CRST# during power up, power down, or in the event of a power failure.
After CRST# is asserted, CardBus PC Card components are not considered reset until both trst and
trst-clk parameters have been met. (See Figure 5-31.)
22There may be an additional source of clock skew with which the system designer need be concerned. This occurs
between two components that have clock input trip points at opposite ends of the Vil - Vih range. In certain
circumstances, this can add to the clock skew measurement as described here. In all cases, total clock skew must
be limited to the specified number.
POWER Vnominal - X%
tfail
)(
CCLK
100 ms (typ)
PWR_GOOD
)(
trst-clk
CRST#
)(
trst trst-off
CARDBUS
High-Z
PC CARD
SIGNALS
5.3.3.3 Pull-ups
CardBus PC Card control signals must always contain stable values when no agent is actively
driving the bus. This includes CFRAME#, CTRDY#, CIRDY#, CDEVSEL#, CSTOP#, CSERR#,
CREQ#, CGNT#, CPERR#, CINT#, CSTSCHG and, when used, CBLOCK#, CCLKRUN#, and
CAUDIO.
This is often accomplished through the use of pull-up resistors on the motherboard. However, the
existence of 16-bit PC Cards and protocol in this interface complicates this because some of the
pull-ups needed on the host system for CardBus PC Card conflict with pull-downs required on 16-bit
PC Cards. Therefore, the system designer must eliminate the need for these pull-ups, use
"switchable" pull-ups which can be disconnected when 16-bit PC Cards are present, or use an
alternative means such as gated input structures. Note that pull-up resistors are always required for
CSERR# and CINT# because they are open-drain outputs.
Whatever scheme is chosen, the system designer must
1. ensure stable values on all signals at all times when a transaction is not in progress. This
guarantees that cycles are not falsely detected and that input structures will not oscillate due to
input voltages remaining in the threshold region for long periods of time.
2. ensure that floating inputs, caused by an empty socket, do not create a crossover current in the
adapter's input structure. This requirement applies to all adapter inputs, not just the control
signals.
The pull-up resistors on certain CardBus PC Card signals can be removed when the following
conditions are met:
1. The pull-up on CRST# may be eliminated, alleviating current draw when an 16-bit PC Card is
present, if the adapter guarantees the signal will not be in a High-Z state when a CardBus PC
Card is present.
2. The pull-down on CSTSCHG may be eliminated as long as the adapter implements the pull-up
required for 16-bit PC Cards and ensures that remote wakeup isn't falsely signaled when the
socket is empty.
3. The pull-up on CCLKRUN# may be eliminated if clock stopping is not implemented and the
adapter never places this signal in a High-Z state. In this case, the adapter would always drive
this signal low when a CardBus PC Card is present.
4. The pull-ups on CIRDY#, CTRDY#, CDEVSEL#, and CSTOP# may be eliminated if the
adapter ensures the signal is always driven when the bus is idle. In this case, the adapter must
begin driving these signals when the bus is sampled idle and set them to a High-Z state, as
appropriate, during the address phase.
5. The pull-up on CPERR# may be eliminated if the adapter ensures the signal is always driven
when the bus is idle. In this case, the adapter must begin driving on the fourth clock after the
last data phase and set it to a High-Z state, as appropriate, two clocks after CFRAME# is
sampled asserted.
6. The pull-up on CBLOCK# may be eliminated if the adapter ensures the signal is always driven
when the bus is idle. In this case, the adapter must begin driving one clock after the CardBus
PC Card releases it and set it to a High-Z state during the same cycle CGNT# is asserted.
Table 5Ð14 Minimum and Maximum Pull-up Resistor Values (3.3 V signaling)
Signaling Rail Rmin Rmax
3.3 V 4.8 KΩ 45 KΩ
5.3.3.3.2 Pull-up Values for Card Detect and Voltage Sense Pins
The CCD1# and CCD2# pins require pull-up resistors either on the motherboard or integrated in
the socket adapter. The maximum resistance implemented must be sufficient to hold the CCD1#
and CCD2# inputs at a valid Voh level when no PC Card is present and the CCD[2::1]# pin is
drawing its maximum rated leakage current. The minimum resistance implemented is
recommended to be consistent with Table 4Ð19 Electrical Interface, but the actual value is a function
of how much power drain is desired when a PC Card is present. The equations for calculating this
are:
Rcd(max) = Vih(min)/Iil(max)
where Vih(min) and Iil(max) are for the adapter's CCD[2::1]# pins
Rcd(min) = recommended to be greater than 10 KΩ.
The adapter must implement CVS1 and CVS2 so that a valid Vol can be delivered to the CCD1#
and CCD2# inputs of the socket adapter. The ON resistance of the CVS[2::1] pins is a function of the
Rcd resistance, the leakage characteristics of the CCD[2::1]# and CVS[2::1] pins, and the input
threshold used for those pins. The ON resistance of the CVS[2::1] pin driving low in a CardBus PC
Card adapter can be calculated using the following relationship:
Rvsl(min) = 0
Rvsl(max) = (Vil(max))(Rcd(min))/(VCC(max) - Vil(max))
where Vil(max) is for the adapter's CCD[2::1]# and CVS[2::1] inputs
Rcd(min) is the minimum value used for Rcd
VCC(max) is 3.6 V for the 3.3 V signaling environment
2. Large enough so that the socket adapter's CVS1 and CVS2 buffers are not damaged by
excessive currents when the inserted PC card has one of the CVS[2::1] pins shorted to ground.
Note that the time required to achieve a valid Voh is related to on resistance by the RC time
constant of the CVSX and CCDX# interconnect. The ON resistance of the CVSX pin driving high can
be calculated using the following relationship:
Rvsh(max) = Vih(min)/(Iil(max) for CCDX# + Iil(max) for CVS[2::1])
Rvsh(min) = function of the CVS[2::1] output buffer specification
the capacitance presented by the motherboard trace, any stubbed components, and the CardBus PC
Card adapter does not exceed the capacitance specified in Table 5Ð7.
5.3.4.1.1 Decoupling
Under typical conditions, the VCC plane to ground plane capacitance will provide adequate
decoupling for the VCC connector pins. The maximum trace length from a connector pad to the
VCC/GND plane via shall be 0.25 inches (6.35 mm) assuming a 20 mil trace width. However,
additional local decoupling will still be needed for components on the PC Card.
5.3.4.2.2 Impedance
The unloaded characteristic impedance (Z0) of the signal traces on the CardBus PC Card shall be
controlled to be in the 60 - 90Ω range. The trace velocity must be between 150 and 190 ps/inch (381
and 483 ps/cm).
5.4.1 Overview
CardBus PC Cards operate in a dynamic environment similar to 16-bit PC Cards. The CardBus PC
Card system programming environment extends the existing 16-bit PC Card software model as
required to support the new features of CardBus PC Card. Additionally, the CardBus PC Card
programming model continues to support 16-bit PC Cards.
This section describes the organization of a CardBus PC Card which drives many of the decisions
concerning programming model design.
• Each function has the following defined and standardized logical spaces. All logical spaces are
accessible by software clients. (See the Card Services Specification.)
1. configuration header space Ñ corresponds physically to the first 64 bytes of the configuration
space.
2. status registers Ñ located physically in memory space. (See also 5.2.11.3 Register
Descriptions)
A CardBus PC Card is required to have at least one function. Each function is required to
implement a configuration space. The presence and location of other functions and physical spaces
on the card is determined via a combination of the presence of configuration space registers and the
descriptions included in the function's CIS.
For CardBus PC Card systems, 16-bit PC Card mappings are supported on the same adapter with
Base Address Register mappings. Note that 16-bit PC Card mappings only apply to 16-bit PC Cards
and Base Address Register mappings only apply to CardBus PC Cards.
CardBus PC Card has a 32-bit uniform address space, meaning that a given address, as presented to
both cards and system, refers to a unique location in this address space. It does not, for example,
refer to some offset within an individual card space. This eases the addressing required for bus
mastering by allowing the bus master to present addresses which do not require further translation.
An actual host system address space may be less than that which would be created by a full 32-bit
address space. In this case the actual address space is still uniform, but cards must be mapped into
the reduced address space; any CardBus PC Card address bits which exceed the host system address
space must be 0.
There is no simple direct analogy between CardBus PC Card memory spaces and 16-bit PC Card
Common and Attribute Memory address spaces. Instead, each CardBus PC Card space is
individually mappable via its corresponding Base Address Register. In addition, to support
processor independence, all CardBus PC Card I/O spaces must be mappable into host memory
space. This requires that a Memory Base Address Register be provided for each I/O Base Address
Register or set of I/O Base Address Registers. A card space is mapped into the host system address
space by assigning a host system address to the Base Address Register for the card space. Thus the
Base Address Register uniquely identifies the card space's location in the global system address
space. Card spaces do not share their host system addresses with other card spaces. A card space is
not mappable in finer granularity than that described by its associated Base Address Register, even
when a portion of the card space described by the Base Address Register is unpopulated.
The following figures provide mapping examples of the various spaces on a CardBus PC Card using
the Base Address Register mapping paradigm. A Base Address Register maps the beginning of a
given card address space into Host System address space.
Host System
Host
System
Memory
Address
Space
Card
Memory Base Address Register Memory
I/O Base Address Register Space 2
Memory Base Address Register
I/O Space
Memory Base Address Register
Device
Dependent
Region
Expansion
ROM
Figure 5-32 Card with Memory and I/O Space in Host System with no Separate I/O Space
Figure 5-32 shows a card with I/O space in a host system having no separate host I/O space,
requiring that the card space be memory-mapped. This is accomplished by using the memory Base
Address Register corresponding to that space, rather than the I/O Base Address Register which is
not supported by the host system. These Base Address Registers must be provided in order, with
the I/O Base Address Register (or Registers) immediately preceding the memory Base Address
Register, to avoid inadvertent double mapping, i.e. there may be a memory Base Address Register
following each I/O Base Address Register to map the I/O space, or a contiguous set of I/O Base
Address Registers may be followed by a single memory Base Address Register which maps all of
the I/O spaces described by the set.
Host System
Host
System
Memory
Address
Space
Card
Memory Base Address Register Memory
Space 2
Device
Dependent
Region
Expansion
ROM
A PC Card is not required to have any I/O spaces, and thus might contain only memory spaces, as
in Figure 5-33. In this example, an expansion ROM is included, which is another optional
component of a CardBus PC Card.
Host System
Host Host
System System
I/O Memory
Address Address
Space Space
Card
I/O Space 1
I/O Base Address Register
Memory Base Address Register
I/O Base Address Register I/O Space 2
Memory Base Address Register
Device
Dependent
Region
Figure 5-34 I/O Space-only Card in a Host System with a Separate I/O Space
Figure 5-34 depicts a card that has I/O spaces and no memory spaces in a system with a separate
host I/O space. Note that the card I/O space could be memory-mapped as in Figure 5-32.
Host System
Host Host
System System
I/O Memory
Address Address
Space Space
Card
Memory Base Address Register Memory
I/O Base Address Register Space 2
Memory Base Address Register
Memory Base Address Register I/O Space
Device
Dependent
Region
Expansion
ROM
Figure 5-35 shows a card having all of the allowable card spaces, and using both host system
memory space and a separate host I/O space.
The programming model for CardBus PC Card takes into consideration all of the above spaces, both
in describing what types of configuration information may reside where and in defining how card
and system software may gain access to a given space. Tuples may reside in any card space except
I/O space and the first 64 bytes of configuration space. For complete information on tuple definitions
and tuple chain traversal, see the Metaformat Specification.
Each function on a CardBus PC Card has a set of four status registers associated with it. (See 5.2
CardBus PC Card Operation.) These registers are located in that function's memory space at the
location given by the CISTPL_CONFIG_CB tuple in that function's CIS. (See the Metaformat
Specification.)
All unimplemented registers must return all 0's when read. Registers which are marked "Allocated"
may contain readable values. However, these values will be ignored by all CardBus PC Card
software and no programmatic interface is provided with which to access them.
31 16 15 0
CardBus PC Card header fields and registers are defined in the following sections. (See also
5.4.2.1.13 Register Summary.)
5.4.2.1.1 Command
This register specifies a function's ability to generate and respond to the different access cycles
possible for CardBus PC Card. When this register has a value of 0, the function accepts only
configuration accesses. Configuration accesses are required to be supported by all functions on all
cards as a minimum level of functionality.
Individual fields in the Command register may or may not be implemented depending on a
function's use. For instance, functions for which no I/O accesses are possible should not implement a
writable field at location 0. After a card is mapped into the host system, system software will enable
the appropriate accesses (memory and/or I/O) by setting the memory and/or I/O bits in the
Command register. After the CRST# signal is asserted, all fields in the Command register are reset
(given a value of 0). Additionally, after the card reset is complete, the Fast Back-to-Back Enable field
will contain an appropriate value based on the capabilities of the system. At this time (after the card
is reset) the client and/or the system software may reconfigure the card as necessary. Figure 5-37
shows the layout of the register and Table 5Ð17 explains the meanings of the different fields in the
Command register.
15 10 9 8 7 6 5 4 3 2 1 0
Reserved
5.4.2.1.2 Status
This register holds run-time status information for bus related events. (See Figure 5-38: STATUS
Register Layout and Table 5Ð18 STATUS Register Field Definition.) Functions implement fields
based on the presence of functionality, and should not implement fields they will not use. For
instance, a function which acts as a target but will never signal target-abort, should not implement
the Signaled Target Abort field at location 11.
This register can be read without side-effects. Writes are slightly different in that fields can be reset,
but not set. A field is reset whenever the register is written and the data in the corresponding
location is a 1. For instance, to clear the field at location 14 and not affect any other fields, write the
value 0100000000000000B to the register. After a card reset all implemented fields in this register are
reset, except for the DEVSEL# Timing and Fast Back-to-Back Capable bit fields which are read-only.
15 14 13 12 11 10 9 8 7 6 5 4 0
Reserved
5-6 Reserved
7 Fast Back-to-Back This read-only field indicates whether or not the target is capable of accepting fast
Capable back-to-back transactions when the transactions are not to the same agent. If reset,
the function cannot accept these transactions. If set, the function can accept these
transactions.
8 Data Parity Detected This field is only implemented by bus masters. If set, then three conditions must have
been met: (1) the bus agent asserted CPERR# itself or observed CPERR# asserted;
(2) the agent setting the bit field acted as the bus master for the operation in which the
error occurred; (3) the Parity Error Response bit field (Command Register) is set.
9-10 CDEVSEL# Timing This field encodes the timing of CDEVSEL#. The three allowable timings are encoded
as 00b for fast, 01b for medium, and 10b for slow (11b is reserved). This field is read-
only and must indicate the slowest time in which a card asserts CDEVSEL# for any
bus command except Configuration Read and Configuration Write.
11 Signaled Target Abort This field must be set by a target whenever it terminates a transaction with target-
abort. Functions that will never signal target-abort do not need to implement this field.
12 Received Target Abort This field must be set by a master whenever its transaction is terminated with target-
abort. All masters must implement this field.
13 Received Master Abort This field must be set by a master whenever its transaction, except for Special
Cycles, is terminated with master-abort. All masters must implement this field.
14 Signaled System Error This field must be set whenever the function asserts CSERR#.
15 Detected Parity Error This field must be set by the function whenever it detects a parity error, even if parity
error handling is disabled.
7 6 5 4 3 0
Completion Code
Reserved
Start BIST
BIST Capable
31 4 3 2 1 0
Base Address 0
Prefetchable
Type
Memory Space Indicator
The Prefetchable field is set by the card if the following are all true:
• There are no side effects on reads.
• The function returns all bytes on reads regardless of the byte enables.
• Host bridges can merge processor writes into this range without causing errors.
The field must be reset otherwise. Any function that has memory which behaves like normal
memory, but will not be participating in CardBus PC Card's caching protocol, should mark the
range as prefetchable. A linear frame buffer in a graphics device is an example of a range which
should be marked prefetchable.
The Type field indicates valid placements in memory space for the mapping. The values are
defined as below in Table 5Ð20.
Table 5Ð20 Meaning of the Type Fields for a Memory Base Address Register
Bits 2/1 Meaning
00 Base Address Register is 32 bits wide and mapping can be done anywhere in the 32-bit memory space.
01 Base Address Register is 32 bits wide but must be mapped below 1M (Real Mode mapping) in memory
space.
10 Allocated.
11 Reserved
Bits 0-3 of a memory Base Address Register are read only. This results in 16 byte alignment for
CardBus PC Card base memory addresses. The number of upper bits that a function's configuration
space actually implements in this Base Address Register depends on how much of the address space
to which the memory associated with that Base Address Register will respond. In other words, the
number of upper bits implemented indicates directly the size of the mapping required and leads to
a power-of-2 sizing and alignment for the mapping.
The layout for a Base Address Register referring to an I/O mapping is given in Figure 5-41.
31 2 1 0
Base Address 0 1
Reserved
I/O Space Indicator
Bits 0-1 of an I/O Base Address Register are read only. This results in 4 byte alignment for CardBus
PC Card I/O addresses. The function may in fact decode all 32 bits of a presented address, which
allows a one (1) byte granularity to be supported without waiting the extra cycle for a byte enable.
(See also 5.2.2.2 Addressing.) The number of upper bits that a function's configuration space actually
implements in this Base Address Register depends on how much of the I/O space to which this
function will respond. In other words, the number of upper bits implemented indicates directly the
size of the mapping required and leads to a power-of-2 sizing and alignment for the mapping.
All CardBus PC Cards implementing I/O spaces must to be able to be memory-mapped as well as
mapped via I/O Base Address Registers. Therefore, for those cards implementing an I/O space
there will be, as well as any I/O Base Address Registers mapping that space(s), at least 1 memory
Base Address Register to also map the space. The memory Base Address Register associated with
the I/O space(s) immediately follows the I/O space(s)'s I/O Base Address Register(s) in
configuration space.
There are six DWORD locations allocated for Base Address Registers, with the first starting at offset
10H.
Each configuration space of a multi-function card must have its own CIS, pointed to by the CIS
Pointer in its configuration space. The encoding for this pointer is given below in Figure 5-42.
31 28 27 3 2 1 0
The Address Space Indicator field indicates in which of this function's address spaces the CIS begins.
The encoding for this field is given below in Table 5Ð21.
The value of the Address Space Offset gives the offset, into the address space indicated by the
Address Space Indicator field, at which the CIS begins. (See Table 5Ð22 Address Space Offset
Values.)
Note that the above definition ensures that no properly implemented CIS Pointer register will ever
have the value 0. It is required that each function in a multi-function CardBus PC Card have this
register implemented and that the pointer indicates the location of a valid CIS. (See 5.5.3.2 Required
CIS.)
31 11 10 1 0
The field at location 0 in the register is used to control whether or not the function accepts accesses to
its expansion ROM. When set, this field indicates that address decoding is enabled using the
parameters in the other part of the register. This allows a function to be used with or without an
expansion ROM depending on system configuration. When reset, the function's expansion ROM
address space is disabled. The Memory Space field in the Command register has precedence over
the Expansion ROM Enable field. A function will only respond to accesses to its expansion ROM if
both the Memory Space field and the Expansion ROM Base Address Enable field are set.
Since the Expansion ROM Base Address Register controls all accesses to the Expansion ROM, a
CardBus PC Card device must also respond to a write access to the Expansion ROM, even if the
Expansion ROM is a read-only device. A CardBus PC Card device responds to such write accesses as
if it was a successful transaction (CDEVSEL# and CTRDY# asserted, with CSTOP# negated). The
write data should be ignored and should not affect the operation of the CardBus PC Card
device.(See also 5.4.2.4 Expansion ROM.)
An Expansion ROM Base Address Register that contains a zero value, in bits (31:11), is in a disabled
state. No access shall be accepted by a card for the Expansion ROM Base Address Register with bits
(31:4) set to zero. The Expansion ROM Base Address Registers must be have bits (31:11) set to zero
by assertion of CRST#.
5.4.2.1.10 Cap_Ptr
The 8-bit Capabilities Pointer at location 34h is used to point to the beginning of the first PCI
defined Extended Capabilities data structure. It represents an offset from the beginning of the PCI
Configuration Space into the Configuration Space where the first data structure will be found.
If the PCI Extended Capabilities feature is not implemented, this value is 0.
See the PCI Bus Power Management Specification for CardBus Cards section for further definition
of extended capability.
PC Card and more than one uses the interrupt pin and these functions are concurrently enabled, the
functions share the interrupt pin.
where a window of a given size is requested between a card offset address and a host system base
address.
Whether the memory space is mapped into host system address space via a 16-bit PC Card-like
mapping from a 16-bit PC Card or a Base Address Register mapping from a CardBus PC Card, it is
important that the card software manage the mapping. (See the Card Services Specification.)
Tuple chains may appear anywhere in memory space. Any tuple chains in memory space, unlike
those in configuration space, may be mapped directly into the host system address space and
accessed by the client, although the Card Services tuple parsing routines are still the preferred
access mechanism partly because those tuple chains in CardBus PC Card configuration space cannot
be directly mapped into the host system address space.
ROM Signature - this is a two-byte field containing 55H in the first byte and AAH in the second
byte. This signature must be the first two bytes of the ROM address space for each image of the
ROM.
Pointer to CardBus PC Card Data Structure - this is a two-byte pointer in little endian format which
points to the CardBus PC Card Data Structure. The reference point for this pointer is the beginning
of the ROM image.
The CardBus PC Card Data Structure must be located within the first 64 KBytes of the ROM image
and must be DWORD aligned. The CardBus PC Card Data Structure contains the information
summarized in Table 5Ð25. Details of each field are given after the figure. "Reserved" in the
diagram below indicates that the register is reserved for future use. "Allocated" indicates that the
register is not defined for CardBus PC Card and must not be redefined as other environments may
use the register. The purpose of the "Allocated" registers is to maintain compatibility between
CardBus PC Card and other environments. CardBus PC Card system software will not make use of
any of the information which may be stored in these fields.
Signature - these four bytes provide a unique signature for the CardBus PC Card Data Structure.
The string "PCIR" is the signature with "P" being at offset 0, "C" at offset 1, etc.
Pointer to Vital Product Data - the Pointer to Vital Product Data (VPD) is a 16-bit field which is the
offset from the start of the ROM image and points to the VPD. This field is in little-endian format.
The VPD must be within the first 64 KBytes of the ROM image. A value of 0 indicates that no VPD
is in the ROM image. The content of the VPD structure is not currently defined.
CardBus PC Card Data Structure Length - this is a 16-bit field which defines the length of the data
structure from the start of the data structure (the first byte of the Signature field). This field is in
little-endian format and is in units of bytes.
CardBus PC Card Data Structure Revision - this is an 8-bit field which identifies the data structure
revision level. This revision level is 0.
Image Length - this is a two-byte field which represents the length of the image. This field is in
little-endian format and gives the value in units of 512 bytes.
Revision Level - this is a two-byte field which contains the revision level of the code in the ROM
image.
Code Type - this is a 1-byte field which identifies the type of code contained in this section of the
ROM. The code may be executable binary for a specific processor and system architecture or
interpretive code. Table 5Ð26 describes the available Code Types.
Indicator - bit 7 in this field tells whether or not this is the last image in the ROM. If reset, another
image follows. If set, this is the last image. Bits 0-6 are reserved.
5.5.1 Overview
This chapter describes the minimum hardware and software interfaces that PC Card and system
designers can rely on for basic compatibility across PC Cards, systems, and related software. These
interfaces ensure that the CardBus PC Card can meet the PCMCIA/JEIDA goal of PC Card
interoperability.
23 Open Firmware is a processor architecture and system architecture independent standard for dealing with device
specific option ROM code. Documentation for Open Firmware is available in the IEEE P1275-1994 Standard for
Boot (Initialization, Configuration) Firmware Core Requirements and Practices.
24Thismethod does not have to be supported if an automated process can guarantee 100% accuracy in dynamically
determining system resource availability and it is used to initialize Card Services whenever resources change.
The remote wakeup capability is optional even for CardBus PC Cards which implement the
CSTSCHG pin. All connector pins associated with signals which aren't implemented must be no-
connects on the PC Card.
registers, just those which apply to the particular function. For example, LAN functions typically
won't implement the write-protect switch but memory cards would.
There are additional requirements on CSTSCHG support when implementing PCI Bus Power
Management for CardBus. Refer to the PCI Bus Power Management for CardBus Cards section for
CardBus card specifics and the PC Card Host System Specification for additional details.
The CardBus PC Card adapter must provide a means to decode accesses from the system intended
for its PC Card interfaces and those from CardBus PC Cards intended for the system. In many cases,
system bus constraints will dictate that the adapter function as a system bus-to-CardBus PC Card
bridge. In these cases, the adapter must provide a base address register and limit address register
for each supported space (cacheable, prefetchable, and non-cacheable).
All CardBus PC Card adapters must provide support for prefetchable memory. In the bridged
implementation mentioned above, this means the adapter must provide each socket with a
minimum of two prefetchable base and limit register pairs for each socket supported. A mechanism
must also be provided to disable prefetching, on a per window basis, to allow support of non-
cacheable memory and/or memory mapped I/O. If that cacheable space is supported, the adapter
must provide additional base and limit register pairs for that space. These registers are also
required on a per socket basis.
Note: Each Base and Limit register pair may be reassignable from socket to socket, but may not be
shared across multiple sockets simultaneously.
The resources they point to must be mappable anywhere in the available system memory space.
The adapter must provide at least 32 KBytes of contiguous memory to each socket and also must be
able to map larger memory blocks into available system memory space. The top 20 bits of the
prefetchable base and limit registers correspond to address bits CAD[31::12] of a memory address.
For the purposes of address decoding the adapter assumes that address bits CAD[11::0] of the base
address are zero. Similarly, it assumes that address bits CAD[11::0] of the limit address are FFFH.
This forces a prefetchable address range to be aligned to a 4 KByte boundary and to have a size
granularity of 4 KBytes. The low four bits of the prefetchable memory base and limit registers are
required to be read only and must return a value of 0 to indicate only 32-bit addressing is
supported. The returned value of 01 is allocated and must not be used by CardBus PC Card
adapters.
Note that some system buses, particularly in hierarchical topologies, specify bridges which require
the assignment (i.e., the base address value) to be above 1 MB. Therefore, it is recommended that
CardBus PC Card follow the convention of placing memory in upper memory whenever the
CardBus PC Card adapter does not reside on the primary system bus.
The address spaces of a CardBus PC Card with multiple address spaces may be interleaved with
another CardBus PC Card's spaces only if all the affected cards reside on the same adapter and the
adapter provides a mechanism to allow this. Since the CardBus PC Card interface requires each
address to have a unique destination, this mechanism must allow the mapping to be done such that
the spaces do not overlap.
Note that some system buses, particularly in hierarchical topologies, specify bridges which decode
I/O addresses on 4 KByte boundaries. This means that Card Services must be aware of where each
CardBus PC Card function physically resides in the system so valid I/O assignments can be made.
Further, the adapter must make the following status information, associated with status change
events, available to Card Services:
• if a removal event caused a failed transaction or left data in the adapter's buffers
• if an inserted PC Card cannot be supported by the hardware
• what type of PC Card was inserted (16-bit PC Card vs. CardBus PC Card)
Note that a CardBus PC Card may assert CSTSCHG as a pulse to request remote wakeup when the
CardBus PC Card interface is powered down. If the system supports remote wakeup, the socket
must capture this event.
There are significant additional requirements for the adapter (PCI to CardBus Bridge) when
supporting PCI Bus Power Management for CardBus. See the PC Card Host System Specification
for additional information for adapter (PCI to CardBus Bridge) requirements.
31 4 3 2 1 0
Reserved
1 CCD1# This field is set (1) whenever the CCD1# field in the Present State register changes
state. It is cleared by writing it to 1. The state after the adapter has been reset is 0.
2 CCD2# This field is set (1) whenever the CCD2# field in the Present State register changes
state. It is cleared by writing it to 1. The state after the adapter has been reset is 0.
3 PowerCycle This field is set (1) by the adapter when it detects that the interface has finished
powering up or powering down. Note that the Present State register must be read to
see if it was successful. This field is cleared by writing it to 1. The state after the
adapter has been reset is 0.
4-31 Reserved These fields are reserved for future use.
Also, see the PC Card Host System Specification for additional CSTSCHG requirements when
supporting PCI Bus Power Management for CardBus.
31 4 3 2 1 0
Reserved
1-2 CardDetect This field masks the CCD1# and CCD2# fields in the Event register so that insertion
and removal events will not cause a status changed interrupt to occur. Note that
the CCD1# and CCD2# fields in the Event register will still be set. The meaning
of the bits is:
00 Masks the CCD1# and CCD2# fields in the Event register. Insertion and removal
events will not cause a status changed interrupt. This is the default state after
the adapter is reset.
01 Undefined
10 Undefined
11 Unmasks the CCD1# and CCD2# fields in the Event register. Insertion and
removal events will cause a status changed interrupt.
3 PowerCycle When cleared (0), the status changed event signaling the power up process has
completed will not be generated although the PowerCycle field in the Event register
will be set. It is set by writing it to 1. The state after the adapter has been reset is 0.
4-31 Reserved These fields are reserved for future use.
31 30 29 28 27 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
30 XVsocket When set (1), indicates that the socket can supply VCC= X.X V. When cleared (0),
indicates that the socket cannot supply VCC= X.X V.
31 YVsocket When set (1), indicates that the socket can supply VCC= Y.Y V. When cleared (0),
indicates that the socket cannot supply VCC= Y.Y V.
31 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved
31 7 6 4 3 2 0
Reserved
WARN I N G :
If a 16-bit PC Card was inserted, then the adapter should proceed with
powering-up the interface as described in 4.4.16.1 Socket Vcc for CIS
Read.
1. Card Services notifies Socket Services of the voltage requirements. Socket Services writes the
appropriate register(s) in the adapter to specify the requested VCC and VPP[2::1] value.
2. The adapter must keep glitches on the CSTSCHG input from causing the CSTSCHG field to be
set in the socket's Event register during the power-up process by disabling this field. This must
be done from card insertion until the "Power Up Complete" condition is reached.
3. If the requested voltage is supported by the PC card and can be supplied to the socket, the
adapter applies that voltage to the socket's VCC and VPP[2::1]26 pins. If the requested voltage is
outside the range decoded from the card's CVS[2::1] pins or is not available in the system, the
adapter must set the BadVccReq field in the socket's Present State register and must not apply
power to the VCC pins. When servicing the status changed interrupt, Card Services must also
read the socket's Present State register to ensure power was successfully applied. Note that this
25CVS1 and CVS2 must not be set to a High-Z state or the CCD# pins will indicate a card removal event for
CardBus PC Cards. If a CardBus PC Card was inserted, CRST# must be driven low.
26The requirements for applying power to Vpp are specified in 5.5.4.5 Vpp[2::1] Power Requirements.
requires the adapter to be aware of the voltages available so that illegal requests can be
detected. CRST# must remain asserted throughout the power up process.
4. The adapter sets the PowerCycle field in the socket's Event register to cause a status changed
interrupt to inform Card Services that the power up process is complete. Note that if an illegal
voltage was requested, no power up will actually occur.
5. After recognizing that the power up process is complete, Card Services clears the socket's
EVENT Register to eliminate spurious interrupt events arising from powering up the interface
(e.g., glitches on CSTSCHG from CardBus PC Cards not supporting remote wakeup).
6. Card Services instructs the socket to negate CRST#. Note that software must ensure that the
timings outlined in 5.3 CardBus PC Card Electrical Specification have been met. Also, software
alone controls the negation of CRST# but hardware will automatically assert CRST# in most
circumstances.
7. Card Services proceeds with the CardBus PC Card configuration process as defined in 5.4
CardBus PC Card Programming Model. (See also the Card Services Specification.)
Only by physically locking the card in, or providing an imminent removal indication, can
cycles be reliably completed and the need to immediately assert CRST# be avoided. Note that
the imminent removal warning must occur at least 256 CCLK periods before card removal
begins.
2. Drive CAD, CCBE[3::0]#, CPAR, CVS1, and CVS2 low, in addition to CRST#, and set the
other outputs to a High-Z state. The adapter must not drive any signal High to an unpowered
socket.
3. Disable the socket's remote wakeup capability by clearing the CSTSCHG field in the socket's
Mask register. The adapter must also disable the CSTSCHG field in the socket's Event register
to keep glitches on CSTSCHG from causing false status changed events. This action could be
taken in parallel with steps 1-3.
4. Remove power, VCC and VPP[2::1], from the connector. This action must be automatic; it must
not wait for the involvement of software. Note that CGNT# must be set to a High-Z state or
driven low before power is removed.
5. Update the CCD1# and CCD2# fields in the socket's Present State register to set corresponding
fields in the socket's Event register and generate a status changed interrupt notifying Card
Services of the removal event. If a transaction on the CardBus PC Card interface was aborted by
the CRST# assertion or data was stranded in the adapter's buffers, the adapter must also set the
DataLost field in its Present State register.
6.1 Introduction
Since its introduction in 1993, PCI has become a very popular bus. It is used in a wide variety of
computer systems sold today ranging from laptops to large servers. Its bandwidth and efficient
support for multiple masters has allowed it to sustain high performance applications while at the
same time, its low pin count and high integration factor has enabled very low cost solutions.
Power Management in the current PC platform is performed by a combination of BIOS and System
Management Mode (SMM) code utilizing hardware unique to each platform. While this strategy has
successfully brought the PC platform into the mobile environment it is beset with problems because
of the fact that there is no standard way to truly determine when the system is busy and when it is
actually idle. The operating system does have this information so it makes sense to give it the
responsibility for power management. The reason that this has not happened up to now is a lack of
standards to provide the operating system with the required information that would allow it to
control the hardware in a platform independent way. This specification addresses this need.
While the PCI Local Bus Specification is quite complete with a solid definition of protocols, electrical
characteristics and mechanical form factors, no provision was made in the original specification for
supporting power management functionality. This specification addresses this requirement by
defining four distinct power states for the PCI bus and four distinct power states for PCI functions as
well as an interface for controlling these power states.
6.1.3 Overview/Scope
In order to implement a power managed system under the direction of the operating system, a
large array of tightly coupled hardware, and software ingredients needs to be defined and
integrated. The following diagram outlines, at a high level, this set of required architectural
building blocks.
OSPM specifications
. Device drivers
specifications
. PM policy specifications
Storage
Audio
Graphics
SCOPE of
Specification
Config Regs Config Regs
CardBus CardBus
Function Function
The scope of this specification is sharply focused on establishing a standard set of interfaces that are
required to power manage PCI-to-CardBus Bridges, buses, devices, CardBus cards and functions.
Any PCI based component can use the mechanisms described in this specification.
Devices which can only be implemented on the motherboard are power managed in motherboard-
specific ways (such as ACPI), and as such, fall outside the scope of this specification. Docking
bridges, for example fall into the motherboard devices category because the physical docking
bridge component always resides logically on the motherboard, and is never deployed as an add-in
card. As such Docking bridges are not covered by this specification.
The PCI Bus Power Management Interface Specification describes requirements for implementing
power management for PCI functions which are capable of being used on an add-in card.
CPU
Host Bridge
Originating Device
PCI Bus I/F for bus(0)
PCI Bus(0)
PCI to CardBus
Bridge
Secondary Bus I/F
Originating Device
for CardBus bus
CardBus bus
PCI-to-CardBus Bridge PCI-to-CardBus bridges couple the PCI bus and the CardBus bus together. They are
characterized by a primary bus interface, and a secondary bus interface.
CardBus card (or device) A physical card consisting of one load on the CardBus bus. This single CardBus card may
contain up to 8 CardBus Functions.
CardBus Function A set of functionality inside a CardBus card represented by one 256 byte configuration space.
Each CardBus function within a device generally has a separate software driver.
PCI Function Context The variable data held by the CardBus function, usually volatile. Function context refers to
small amounts of information held internal to the function. Function Context is not limited only
to the contents of the functionÕs PCI registers, but rather refers also to the operational states of
the function including state machine context, power state, execution stack (in some cases),
etc. For example, for a PCI-to-CardBus Bridge, the internal status and mask registers and the
Vcc control signals would be a special case of Function Context which must be preserved.
PME Context Power Management Event Context is defined as the functional state information and logic
required to generated Power Management Events (PMEs), report PME status, and enable
PMEs.
Power Management Mechanisms in software and hardware to minimize system power consumption, manage
system thermal limits and maximize system battery life. Power management involves
tradeoffs among system speed, noise, battery life, and AC power consumption.
Power Management Event (PME) A power management event is the process by which a CardBus function can request a
change of its power consumption state. Typically a device uses a PME to request a change
from a power savings state to the fully operational (and fully powered) state. However, a
device could use a PME to request a change to a lower power state. A power management
event is requested via the assertion of the PME# signal. For a CardBus card, assertion of
CSTSCHG (and STSCHG# for a PC Card) are translated to the host systemÕs PME#
through the PCI-to-CardBus bridge . The power management policies of the system
ultimately dictate what action is taken as a result of a power management event.
Primary or Ordinate Bus The primary bus of a CardBus card refers to the bus that is topologically closest to the CPU
that is running the operating system.
Restore Time Restore time is defined as the time required to fully restore a CardBus function to its fully
operational state from a power saving mode of operation. It is measured as the total elapsed
time between when the system software request for restoration occurs to when the function is
fully configured and activated.
Secondary or Subordinate Bus The secondary bus of a CardBus card refers to the bus that is topologically farthest from the
CPU that is running the operating system.
Sleeping State A computer state where the computer consumes a small amount of power, user mode
threads are not being executed, and the system ÒappearsÓ to be off (from an end userÕs
perspective, the display is off, etc.). Latency for returning to the Working state varies on the
wakeup environment selected prior to entry of this state (for example, should the system
answer phone calls, etc.). Work can be resumed without rebooting the OS because large
elements of system context are saved by the hardware and the rest by system software. It is
not safe to disassemble the machine in this state.
Soft Off State A computer state where the computer consumes a minimal amount of power. No user mode
or system mode code is run. This state requires a large latency in order to return to the
Working state. The systemÕs context will not be preserved by the hardware. The system
must be restarted to return to the Working state. It is not safe to disassemble the machine.
Wakeup Event An event which can be enabled to wake the system from a Sleeping or Soft Off state to a
Working state to allow some task to be performed.
Working State A computer state where the system dispatches user mode (application) threads and they
execute. In this state, devices (peripherals) are dynamically having their power state
changed. The user will be able to select (through some user interface) various
performance/power characteristics of the system to have the software optimize for
performance or battery life. The system responds to external events in real time. It is not safe
to disassemble the machine in this state.
PCI Bus Power Management Specification, Revision 1.0, Mar 18, 1997, PCI Special Interest Group
PC Card Standard, April 1998 (Release 6.1), PCMCIA/JEIDA
Advanced Configuration and Power Interface Specification Revision 1.0, Intel Corporation,
Microsoft Corporation and Toshiba
Toward the ÒOnNowÓ Machine: The Evolution of the PC Platform, Microsoft Technology Brief,
April 1996, Microsoft Corporation
Device Power Management, Microsoft Technology Brief, April 1996, Microsoft Corporation
Device Class Power Management Reference Specifications, Draft Proposals, 1996, Microsoft
Corporation
OnNow Design Initiative and ACPI, Microsoft Web Page with links to many of the documents
above, 1996, Microsoft Corporation
OnNow Power Management and the Win32 Driver Model, 1996, Microsoft Corporation
PCI Hot-Plug Specification, PCI Special Interest Group
While the concept of these power states is universal for all functions in the system, the meaning, or
intended functional behavior when transitioned to a given power management state is dependent
upon the type (or class) of the function.
While individual CardBus functions must support only the first three capabilities with wakeup
being optional, all basic power management operations must be supported by the bus architecture
to ensure that CardBus functions on the bus can be power managed.
For multi-function CardBus cards there is a common portion of bus interface logic that physically
binds each of the supported functions to the CardBus bus. This common logicÕs power consumption
is explicitly reported if supported, using the Data register of Function 0. For further detail on the
reporting of CardBus function power consumption, see 6.3.2.6 Data (Offset = 7).
Control of the common logic is handled by the multi-function device in a software transparent
fashion. For further power savings in a runtime environment, the enabling and disabling of some
portion of this common CardBus bus interface logic is the responsibility of the multi-function
component hardware. This implicit power control, if implemented, may be based upon the power
states of the functions behind it. As an example one might consider a hardware administered logic
control policy where the common logic can not be internally powered down unless all of the
functions hosted by the device have been placed in the D3hot state first.
27 The CardBus function provides power management capabilities reporting through a standard register definition
as specified in this document.
The location of the Capabilities Pointer (Cap_Ptr) depends on the CardBus cardÕs PCI header type.
See 6.3.1.1 Capabilities List Cap_Ptr Location for Header Type specific Cap_Ptr offsets.
07:00 XXH Read Only The Cap_Ptr provides an offset into the functionÕs CardBus cardÕs PCI
Configuration Space for the location of the first item in the Capabilities Linked
List. The Cap_Ptr offset is DWORD aligned so the two least significant bits
are always Ò0Ós.
If a function does not implement any capabilities with IDs defined by the PCI SIG, the New
Capabilities bit in the PCI Status register (bit 4) should read as Ò0Ó and the Cap_Ptr register should
be ignored. Values of 00h-3Fh are not valid values for the Cap_Ptr because they point into the
standard CardBus cardÕs PCI header. A CardBus function may choose any DWORD aligned offset as
indicated in Table 6-3: PCI Configuration Space Header Type / Cap_Ptr mappings.
Next Item ID
Capability X
PM Regs
Next Item 0 ID
Capability Y
The figure above shows how the capabilities list is implemented. The Cap_Ptr gives the location of
the first item in the list which is the PCI Power Management Registers in this example (although the
capabilities can be in any order). The first byte of each entry is required to be the ID of that
capability. The PCI Power Management capability has an ID of 01H. The next byte is a pointer
giving an absolute offset in the functionÕs CardBus PCI Configuration space to the next item in the
list and must be DWORD aligned. If there are no more entries in the list, the Next_Item_Ptr must
be set to 0 to indicate that the end of the linked list has been reached. Each capability can then have
registers following the Next_Item_Ptr. The definition of these registers (including layout, size and
bit definitions) is specific to each capability. The CardBus PCI Power Management Register Block is
defined in this specification.
Regardless of the implemented Header Type the definition of the Cap_Ptr register and the New
Capabilities bit in the CardBus PCI Status register is common.
The offset for each register is listed as an offset from the beginning of the linked list item which is
determined either from the Cap_Ptr (If Power Management is the first item in the list) or the
Next_Item_Ptr of the previous item in the list.
07:00 01H Read Only ID - This field, when Ò01HÓ identifies the linked list item as being the PCI
Power Management Registers.
07:00 00H Read Only Next Item Pointer - This field provides an offset into the functionÕs PCI
Configuration Space pointing to the location of next item in the functionÕs
capability list. If there are no additional items in the Capabilities List, this
register is set to 00H.
15:11 Device Read Only PME_Support - This five bit field indicates the power states in which the
Specific function may assert PME#. A value of 0B for any bit indicates that the function
is not capable of asserting the PME# signal while in that power state.
bit(11) XXXX1B Ð PME# can be asserted from D0
bit(12) XXX1XB Ð PME# can be asserted from D1
bit(13) XX1XXB Ð PME# can be asserted from D2
bit(14) X1XXXB Ð PME# can be asserted from D3hot
bit(15) 1XXXXB Ð PME# can be asserted from D3cold
10 Device Read Only D2_Support - If this bit is a Ò1Ó, this function supports the D2 Power
Specific Management State.
Functions that do not support D2 must always return a value of Ò0Ó for this bit.
09 Device Read Only D1_Support - If this bit is a Ò1Ó, this function supports the D1 Power
Specific Management State.
Functions that do not support D1 must always return a value of Ò0Ó for this bit.
08:06 000B Read Only Reserved
05 Device Read Only DSI - For definition regarding the Device Specific Initialization bit, see the PCI
Specific Bus Power Management Specification.
04 Device Read Only Auxiliary Power Source (VAUX) -This bit is only meaningful if bit 15 (D3cold
Specific supporting PME#) is a Ò1Ó. When this bit is also a Ò1Ó it indicates that support
for PME# in D3cold requires auxiliary power supplied by the system by way of
a the slot Vcc pins and will consume less than 200 mA.
A Ò0Ó in this bit indicates that the function supplies its own auxiliary power
source.
If the function does not support PME# while in D3cold, bit(15)=0, then this field
must always return Ò0Ó.
03 0B Read Only PME Clock - When this bit is a Ò1Ó it indicates that the function relies on the
presence of the PCI clock for PME# operation. When this bit is a Ò0Ó it
indicates that no PCI clock is required for the function to generate PME#.
Functions that do not support PME# generation in any state must return Ò0Ó for
this field.
02:00 001B Read Only Version - A value of 001B indicates that this function complies with the
Revision 1.0 of the PCI Power Management Interface Specification.
As mentioned previously, the PME Function Context is defined as the logic responsible for
identifying power management events, the logic responsible for generating the PME# (CSTSCHG)
signal and the bits within this register that provide the standard system interface for this
functionality. PME Function Context also contains any device class specific status that must survive
the transition to the D0 Uninitialized state as well.
If a function supports PME# (CSTSCHG) generation from D3cold, its PME Function Context is not
affected by either a CardBus slot reset, CRST#, (hardware component reset), or the internal "soft" re-
initialization that occurs when restoring a device from D3hot. This is because the functionÕs Power
Management Event functionality itself may have been responsible for the wake event which caused
the transition back to D0. Therefore, the PME Function Context must be preserved for the system
software to process.
If PME# (CSTSCHG) generation is not supported from D3cold then all PME Function Context is
initialized with the assertion of a bus segment reset.
Because a CardBus bus CRST# assertion does not necessarily clear all functionsÕ PME Function
Context, (functions that support PME# (CSTSCHG) from D3cold), the system software is required to
explicitly initialize all PME Function Context, including the Power Management Event support bits,
for all functions during initial operating system load. In terms of the PMCSR this means that during
the initial operating system load each functionÕs PME_En bit must be written with a "0", and each
functionÕs PME_Status bit must be written with a "1" by system software as part of the process of
initializing the system.
15 Sticky Bit, Read/ Write- PME_Status - This bit is set when the function would normally assert the
indeterminate at Clear PME# (CSTSCHG) signal independent of the state of the PME_En bit.
time of initial OS Writing a "1" to this bit will clear it and cause the function to stop asserting
boot if function a PME# (CSTSCHG) (if enabled). Writing a "0" has no effect.
supports PME#
(CSTSCHG) from This bit defaults to "0" if the function does not support PME# (CSTSCHG)
D3cold. generation from D3cold.
0B, if the function If the function supports PME# (CSTSCHG) from D3cold then this bit is
does not support sticky and must be explicitly cleared by the operating system each time the
PME# operating system is initially loaded.
(CSTSCHG) from
D3cold.
14:13 Device Specific Read Only Data_Scale - This two bit read-only field indicates the scaling factor to be
used when interpreting the value of the Data register. The value and
meaning of this field will vary depending on which data value has been
selected by the Data_Select field.
This field is required for CardBus cards.
See 6.3.2.6 Data (Offset = 7)for more details.
12:09 0000B Read Write Data_Select - This four bit field is used to select which data is to be
reported through the Data register and Data_Scale field.
This field is required for CardBus cards.
See 6.3.2.6 Data (Offset = 7)for more details.
08 Sticky Bit, Read/ Write PME_En - "1" enables the function to assert PME# (CSTSCHG). When
indeterminate at "0" PME# (CSTSCHG) assertion is disabled.
time of initial OS This bit defaults to "0" if the function does not support PME# generation
boot if function from D3cold.
supports PME#
(CSTSCHG) from If the function supports PME# (CSTSCHG) from D3cold then this bit is
D3cold. sticky and must be explicitly cleared by the operating system each time the
operating system is initially loaded.
0B, if the function
does not support
PME#
(CSTSCHG) from
D3cold.
07:02 000000B Read Only Reserved
01:00 00B Read/ Write PowerState - This two bit field is used both to determine the current power
state of a function and to set the function into a new power state. The
definition of the field values is given below.
00B - D0
01B - D1
10B - D2
11B - D3hot
If software attempts to write an unsupported, optional state to this field, the
write operation must complete normally on the bus, however the data is
discarded and no state change occurs.
07:00 00H Read Only Data - This register is used to report the state dependent data requested by
the Data_Select field. The value of this register is scaled by the value reported
by the Data_Scale field.
The Data register is used by writing the proper value to the Data_Select field in the PMCSR and
then reading the Data_Scale field and the Data register. The binary value read from Data is then
multiplied by the scaling factor indicated by Data_Scale to arrive at the value for the desired
measurement. The table below shows which measurements are defined and how to interpret the
values of each register.
0 D0 Power Consumed
1 D1 Power Consumed
2 D2 Power Consumed 0 = Unknown
3 D3 Power Consumed 1 = 0.1x Watts
4 D0 Power Dissipated 2 = 0.01x
5 D1 Power Dissipated 3 = 0.001x
6 D2 Power Dissipated
7 D3 Power Dissipated
8 Common logic power
consumption (Multi-function PCI
devices, Function 0 only)
9-15 Reserved (function 0 of a multi- 0 = Unknown 1-3 = TBD TBD
function device)
8-15 Reserved (single function PCI 0 = Unknown 1-3 = TBD TBD
devices, and other functions
(greater than function 0) within a
multi-function device)
When using the Data register as a window into the data sheet for the PCI function, data returned
must comply with measurements derived from the following test environment:
• Bus Frequency: 33 MHz
• VCC: 3.3 VDC
The power measurements defined above have a dynamic range of 0 to 25.5 W with 0.1 W
resolution, 0 to 2.55 W with 0.01 W resolution or 0 to 255 mW with 1 mW resolution. Power should
be reported as accurately as possible. For example, the data returned for each state supported must
indicate the maximum power used by the function when in that particular state. The "Power
Consumed" values defined above must include all power consumed from the PCI power planes
through the PCI connector pins. If the PCI card provides power to external devices that power must
be included as well. It should not include any power derived from a battery or an external source.
This information is useful for management of the power supply or battery.
The "Power Dissipated" values provide the amount of heat which will be released into the interior
of the computer chassis. This excludes any power delivered to external devices but must include
any power derived from a battery or external power source and dissipated inside the computer
chassis. This information is useful for fine grained thermal management.
If a function allows a wide range of implementation options, the values reported through this
register may need to be loadable through a serial EPROM or strapping option at reset much like the
Subsystem Vendor ID and Subsystem ID registers
Multi-function devices implementing power reporting should report the power consumed by each
function in each corresponding functionÕs Configuration Space. In a multi-function device, the
common logic power consumption is reported in function 0Õs Configuration Space through the Data
register once the Data_Select field of the function 0Õs PMCSR has been programmed to "1000B". The
sum of the values reported should then be accurate for the condition of all functions in the device
being put in that state.
Each function of each device on the card is responsible for reporting the power consumed by that
function.
Each CardBus bus in a system has an originating device which can support one or more power
states. In most cases this will be some kind of a bridge such as a PCI-to-CardBus Bridge.
The PC Card Standard defines a bus power (VCC) and clock control mechanism. For a CardBus
bus, the clock control mechanism is CCLKRUN# and the Vcc control mechanism is the Vcc control
registers.
28 Enforced by the operating system which has previously programmed the functions residing on, and further
downstream of, that particular bus segment to power management states that would preclude normal CardBus
transactions or functional interrupts from occurring.
in B0, the transaction must be treated as if a "Master Abort" had occurred and error reporting
handled in the same manner.
It is the system softwareÕs responsibility to ensure that, prior to attempting to program the CardBus
bus to a power management state other than B0, all CardBus card functions residing on that
CardBus bus have previously been programmed to a state that would preclude any further bus
activity initiated by them. For new CardBus functions compliant with the CardBus PCI Bus Power
Management Interface Specification this means that all functions must have been previously
programmed to a power management state that, for each of them, has precluded any bus activity on
their parts. For legacy CardBus functions system software must rely on other means such as
disabling the Bus Master Enable bit of the legacy functionÕs CardBus Command register to ensure
that the function does not attempt to initiate any bus transactions.
The busÕs originating device must always exit from B0 gracefully by first allowing the bus to settle
into the idle state.
B3 is exhibited by all PC Card Standard compliant systems when their power is removed. A
programmable interface for placing a bus in B3, or restoring it from B3 is optional.
B0 B2
(On) (Clock Stopped)
B1 B3
(Idle Bus) (Off)
Note that the power management state of a CardBus bus segment follows that of its originating
bridgeÕs power management state with one exception. The D3hot state may cause its secondary busÕs
power management state to transition to either B2 or B3.
Clock control for the PCI-to-CardBus bridgeÕs CardBus bus is accomplished using the Mobile PCI
clock run protocol. When the PCI-to-CardBus bridge desires to stop the clock to the CardBus card, it
requests permission from the card. If the card supports stopping the clock, permission is granted as
applicable. When the CardBus card requires that the clock be started again, it uses the clock run
29 Bus activity wouldnÕt actually resume until the downstream functions were also programmed to states that
permitted bus transactions to occur.
protocol to request that the CardBus clock be started from the PCI-to-CardBus bridge. This describes
the D0/B0 scenario. In CardBus card device states D1 and D2, the CardBus card can still request
that the clock be started only if PME_EN is true. In device state D2, the CardBus card must be
capable of the clock run request being denied because the PCI-to-CardBus bridge may not have a
PCI clock to pass on to the CardBus bus. It is expected that the PCI-to-CardBus bridge use the clock
run protocol to stop the clock in when the PCI-to-CardBus bridge is placed in device state D2/B2.
The clock run protocol cannot be exercised in device state D3.
D1 is used as a light sleep state. Some functions may be processing background tasks such as
monitoring the network which actually requires most of the function to be active. Allowable
behavior for a given function in D1 is dictated by the Device-Class-Power Management
Specifications for that class of function.
All of PCI and CardBus Configuration Space is functional. Functional context is preserved but not
accessible, functional and CSTSCHG interrupts are not available. PME# is functional.
CRST#. Other bus activity may be taking place during this time on the same CardBus bus segment
so the device that has returned to D0 Uninitialized state must ensure that all of its CardBus signal
drivers remain disabled for the duration of the D3hot to D0 Uninitialized state transition30.
The only function context that must be retained in D3hot and through the soft reset transition to the
D0 Uninitialized state is the PME context.
There is a required delay of 10 ms when changing the state from D3 to D0 before the CardBus card
can be accessed.
4CardBus bus signal drivers must behave the same as if the component had received a CRST#.
Power on
Reset
D0
Uninitialized
CRST#
D0
Active D2
PCI to
CardBus
Bridge
SCOPE
Function Function
The following tables define the behavior for a CardBus card function while operating in each
combination of bus and functional power management states.
Legend:
CardBus Function PM State Current CardBus function power management state.
CardBus Bus PM State Current power management state of the CardBus functionÕs hosting CardBus bus segment.
Context Configuration register and functional state information that are required to be valid for the
given power management state. The registers that must remain valid, and the features that
must remain available for a given class of device are typically dictated by the corresponding
Device-class power management specification.
Power Power consumption
Access Delay The minimum required delay before attempting to access the CardBus function to change its
power state. If the bus is fully accessible (B0) then this delay is solely the result of the state
transition delay, or recovery time, following the last write to the functionÕs PowerState field. If
the bus is not in a fully accessible state (B1, B2 or B3) then the delay is characterized by
either the functionÕs state transition recovery time, or the time it takes to restore the bus to a
fully accessible state, whichever is greater.
Restore Time The total time from when a CardBus function transitions from its current power management
state to the fully configured D0 active state. (Measurement beginning from either a write to the
functionÕs PMCSR, or a bus segment reset).
Actions to Function Valid CardBus bus transactions that can be conducted with the function as the target of the
transaction.
Actions from Function Valid CardBus bus transactions, and/or operations that can be initiated by the function.
B0 Legacy CardBus Full Full None None Any CardBus Any CardBus Transaction
Function (D0) Transaction or Interrupt
B0 D0 PME <70mA Vcc: off -> on, None None CardBus None
(Uninitialized) Context* 245mA if transitioning Config Cycles
from D3cold with
PME_En true
B0 D0 (Active) Full Full None None Any CardBus Any CardBus Transaction
Transaction or Interrupt, PME*
B1-B3 D0 (Active) N/A** N/A** N/A** N/A** N/A** N/A**
B0 D2 Device Class < next lower 200 µs Device CardBus PME only*
Specific and supported PM (Note 1) Class Config Cycles
PME Context* state, or < D0 Specific
uninitialized
B1 D2 Device Class < next lower Greater of Device None PME only*
Specific and supported PM either the bus Class
PME Context* state, or < D0 restoration Specific
uninitialized time or 200 µs
(Note 2)
B2 D2 Device Class < next lower Greater of Device none PME only*
Specific and supported PM either the bus Class
PME Context* state, or < D0 restoration Specific
uninitialized time or 200 µs
(Note 2)
B3 D2 N/A** N/A** N/A** N/A** N/A** N/A**
B0 D3hot PME and < next lower 10 ms Device CardBus PME only*
functional supported PM (Note 1) Class Config Cycles
context* state, or < D0 Specific
uninitialized
B1 D3hot PME and < next lower Greater of Device none PME only*
functional supported PM either the bus Class
context* state, or < D0 restoration Specific
uninitialized time or 10 ms
(Note 2)
B2 D3hot PME and < next lower Greater of Device none PME only*
functional supported PM either the bus Class
context* state, or < D0 restoration Specific
uninitialized time or 10 ms
(Note 2)
B3 D3hot PME and < next lower N/A N/A none PME only*
functional supported PM
context* state, or < D0
uninitialized
When in D1, D2 or D3hot a CardBus function must not respond to CardBus transactions targeting its
I/O or memory spaces or assert a functional interrupt request.
A CardBus function cannot tell the state of its CardBus bus; therefore, it must always be ready to
accept a CardBus configuration access when in D1, D2 or D3hot.
D0 D1 0
D0 or D1 D2 200 µs
D0, D1 or D2 D3hot 10 ms
D1 D0 0
D2 D0 200 µs
D3hot D0 10 ms
PCI
PCI to SCOPE
PCI Bus Segment CardBus
Bridge
CardBus Segment
Function Function Function
The following table defines the relationship between a bridge functionÕs power management state,
and that of its secondary bus. Also detailed are the resultant attributes of the secondary bus. The
rightmost column of the table details a set of conditions that all "downstream" CardBus card
functions must be capable of withstanding when residing on a bus in a given state without their
application breaking in a way that cannot be gracefully recovered from.
It is the responsibility of the system software to ensure that only valid, workable combinations of
bus and downstream PCI-to-CardBus bridge and CardBus bus function power management states
are used for a given CardBus bus and the CardBus card functions residing on that bus.
Legend:
Bridge PM State Current CardBus function power management state of bridge function.
Secondary CardBus Bus State Current power management state of the originating deviceÕs CardBus bus segment.
Secondary CardBus Attributes The characteristics of the secondary bus for the current bus power management state.
Downstream Function Attributes Necessary attributes of a CardBus function residing on the secondary bus given the
secondary busÕs power management state.
bits does not clear the PME_En bit in the PMCSR. If CSTSCHG is asserted, setting PME_En false
will prevent the CSTSCHG pin from being asserted and clear the GWAKE and WKUP bits in the
Function Event Mask Register. Writing a "1" to the PME_Status bit will clear the GWAKE bit in the
Function Event Register and clearing the GWAKE bit in the Function Event Register clears the
PME_Status bit in the PMCSR register.
Setting the Function Event Mask RegisterÕs READY (Ready/Busy), BVD1:2 (Battery Voltage detects)
and WP (Write Protect) may also generate a CSTSCHG event, however, these bits are not required
to track PME_En and BVD1, BVD2, READY and WP are not required to follow PME_Status. If
PME_En is false, changes in the CardBus card Function Event registers have no effect on PME_En /
PME_Status.
It is imperative that each hardware configuration set be controlled by the appropriate software
controller. It is expected that ACPI software configures power management in a CardBus card using
PME_En / PME_Status. Non-ACPI software should work with the CardBus Function Event registers.
Furthermore, it is expected that a CardBus card configured through PME_En / PME_Status generate
a PME# through the CardBusÕ bridge and a non-ACPI configured CardBus card generate a
CSTSCHG through the CardBusÕ bridge.
The setting of the CardBus cardÕs PME_En enables the CSTSCHG signal to be active in states other
than D0. Only if PME_En is true can the CardBus card assert CSTSCHG in device states D1, D2 and
D3. CSTSCHG can be asserted with or without PME_En true in device state D0. If PME_En is true,
then the assertion of CSTSCHG is latched into the CardBus cardÕs PCI Power Management
PME_Status bit. There may be additional PME function context which must be preserved, but that is
implementation specific and is not addressed in this specification.
PME_En bit in the PMSCR register of the function. PME_STATUS and PME_En are only cleared
when written with a "1".
PCI bus power management aware software will enable its use by setting the PME_En bit in the
PMCSR. When a CardBus card function generates or detects an event which requires the system to
change its power state (e.g. the phone rings), the function will assert CSTSCHG. It must continue to
assert CSTSCHG until software either clears the PME_En bit or clears the PME_Status bit in the
PMCSR even if the source of the power management event is no longer valid (e.g. the phone stops
ringing). This requirement is true even though the operating system software may clear the Event
Register bits which caused the PME. Some devices which are powered by a battery or some external
power source may use this signal even when powered off. Such devices must maintain the value of
the PME_Status bit through reset (CRST#).
The transition from Vcc to VAUX can occur only after the above three conditions are implemented.
Additionally, the transition from Vcc to VAUX must include the stable application of VAUX for a
minimum of 50 ms prior to transitioning Vcc off. Likewise, when transitioning from off to on, VAUX
must remain stable for 50 ms after Vcc is up and stable. See Figure 6-10: Vcc to VAUX Transitioning
for more information.
Vcc
CardBus
going
inactive
VAUX
31 Finish the PCI transaction with normal completion and ignore the write data. This is NOT a hardware error
condition.
6.8.2.1 Buses
When attempting to place a CardBus Bus segment into a lower power management state (B1- B3)
the Operating System must first ensure that all CardBus functions on that bus have been placed in
an appropriate low power state.
6.8.2.2 D3 State
Prior to placing a CardBus function into D3, the Operating System must determine if it has the
capability to restore the function from this state. Restoration includes reinitializing the function. The
Operating System must make sure that it has the appropriate driver loaded for that function in
order to restore the functions to operation. If the Operating System is not capable of fully
reinitializing a device, then the Operating System should not put the device into D3. When placing
a function into D3, the Operating System Software is required to disable I/O and memory space as
well as Bus Mastering via the CardBus PCI Command Register.
6.8.3.3 D3 State
Restoring a function from D3 requires the Operating System to reinitialize the function, beginning
with, for the case of D3cold, restoring power to the device and initiating a PCI Bus Segment Reset.
This is accomplished by either programming the hosting busÕs originating device to D0, or by other
ACPI-type control methods. Full context must be restored to the function before it is capable of
resuming normal operation. For example reintialization includes, but is not necessarily limited to
restoring the Base Address Registers, re-enabling the I/O and Memory spaces, re-enabling Bus
Master capabilities, and unmasking any IRQs or PCI Interrupts as well as restoring the INT Line
register. Furthermore, if the function has the DSI bit set, the Operating System is required to
execute whatever initialization code is necessary, either via the device driverÕs initialization code or
executing POST.
AP P E N D IX - A
SHUTDOWN is a broadcast message indicating the processor is entering into a shutdown mode.
HALT is a broadcast message from the processor indicating it has executed a halt instruction.
The x86 Architecture Specific encoding is a generic encoding for use by x86 processors and chipsets.
CAD[31::16] determine the specific meaning of the special cycle message. Specific meanings are
defined by Intel Corporation and are found in product specific documentation.
AP P E N D IX - B
8.1 Background
There are many factors which contribute to overall signal quality and integrity across the CardBus
PC Card interface, of which the CardBus PC Card connector is one of the most significant. In
addition to the connector, several other factors may influence signal integrity across the interface.
These include:
1. The quality of local and bulk decoupling on the host system and CardBus PC Card.
2. The output edge rate transmitted across the interface.
3. The frequency of operation.
4. The number of outputs switching simultaneously.
In order to understand the effect of any one variable in a system the effect of other variables must
be minimized. The focus of this procedure is on the connector alone. This does not diminish the
importance of the other factors listed above, it just allows for a concise test procedure to be
documented for the connector. This procedure or methodology, in conjunction with in-system
testing, is intended to provide connector manufacturers with a standard for evaluation of their
product performance.
I/O DRIVERS
I/O DRIVER POWER SUPPLY
DATA INPUT
CardBus PC Card
GROUND BOUNCE
MEASUREMENT
I/O DRIVER
DATA MONITOR
GROUND BOUNCE
MEASUREMENT
I/O DRIVER
TRANSMIT/RECEIVE
CARD 0 AND 1
GROUND BOUNCE
MEASUREMENT
I/O DRIVER Connector
GROUND BOUNCE
CONTROL
I/O DRIVERS
I/O DRIVER
DATA INPUT
CardBus PC Card
GROUND BOUNCE
MEASUREMENT
I/O DRIVER
DATA MONITOR
GROUND BOUNCE
MEASUREMENT
I/O DRIVER
TRANSMIT/RECEIVE
CARD 0 AND 1
GROUND BOUNCE
MEASUREMENT
I/O DRIVER
Connector GROUND BOUNCE
CONTROL
To find worst case ground bounce, all driver devices should be enabled. Then the data timing is
adjusted so all outputs are actively switching simultaneously at frequency. In this configuration, the
test system is supporting at least 45 outputs switching across the CardBus PC Card interface. Ground
bounce data may then be taken at each test point.
This technique may then be applied to each of the four singular combinations above. A true worst
case may be found by applying the two worst singular conditions for Cards 0 and 1 simultaneously
across the vertical CardBus PC Card connector and measuring as before. Now that the worst case
measurement point has been located, the frequency may be ramped to 33 MHz and the ground
bounce monitored to ensure proper operation to the maximum CardBus PC Card system frequency.
AP P E N D IX - C
9 . PC CAR D CU S T OM I N T E R F AC E S
9.1.1 Purpose/Overview
Describe the custom interface giving the primary purpose and an operational overview of the
interface.
9.1.2 Compatibility
The addition of support for a custom interface does not relax any requirement in both the host and
the card associated with 16-bit PC Cards or CardBus PC Cards. PC Cards not using a custom
interface shall not be adversely affected by the presence or state of a custom interface capability
anywhere in the host.
Describe signals not available to cards using the custom interface while the custom interface is
enabled. For example, a custom interface that redefines the SPKR# signal does not allow a PC Card
to use the optional 16-bit PC Card Binary Audio signal.
9.1.4 Features
Describe the features of the custom interface. As an example: ÒThis interface supports random access
to 16 Bytes of memory address per memory space using signals A[3::0].Ó
9.1.6 Functions
Describe the functions for any and all address spaces available while the custom interface is active.
9.1.7 Timing
Describe the access timing for any and all address spaces available while the custom interface is
active.
9.2.1 Overview
The following diagram shows the system level concept of the ZV Port. The diagram demonstrates
how TV in a window could be achieved in a portable computer with a low cost PC Card. An MPEG,
or a teleconferencing card could also be plugged into the PC Card slot.
TV LCD CRT
SPEAKERS
256Kx16
PCI DRAM
Local Bus
Analog
Encoder
Amp
VGA Audio
Codec PC Card Slot
PC Card
PCM
ZV Port
Audio 4 Audio
(Video) 19 Input
PCM
4 Converter Audio
PC Card
Host PC Card
Adapter Interface Video Video
Decoder
NTSC/PAL
Motherboard 19 RF Signal
9.2.2 Compatibility
The addition of support for the ZV Port interface does not relax any requirement associated with 16-
bit PC Cards or CardBus PC Cards in either the host or the card. PC Cards not using the ZV Port
interface shall be unaffected by the presence or state of the ZV Port interface capability anywhere in
the host.
PC Cards implementing the ZV Port interface shall present the 16-Bit PC Card memory only
interface following the application of VCC or the RESET signal. When either the 16-Bit PC Card
memory only interface or the ZV Port interface is active the card shall support direct access to 16
Bytes (signals A[3::0]) of attribute and common memory space and provide access to two 64 Mbyte
indirect memory spaces using registers in common memory. (See 4.16 Indirect Access to PC Card
Memory.) Direct access to any address beyond the first 16 Bytes of attribute or common memory is
undefined.
16-bit PC Card DMA operation shall not be supported in a socket when the ZV Port interface is
active because the entire set of pins over which the DREQ# signal can be routed, SPKR#,
INPACK# or IOIS16#, are in use.
The I/O Is 16 Bit Port (IOIS16#) signal is not available when the ZV Port interface is active. PC
Cards supporting I/O operations while using the ZV Port interface shall indicate eight or 16 bit I/O
access via the TPCE_IO field in the CISTPL_CFTABLE_ENTRY tuple.
The Input Port Acknowledge (INPACK#) signal is not available when the ZV Port interface is
active.
The Audio Digital Waveform (SPKR#) signal is not available when the ZV Port interface is active;
digital audio PCM is provided. (See 9.1.9 Specific Signals and Functions.)The Battery Voltage Detect
2 (BVD2) signal may be available in the cardÕs Pin Replacement register while the ZV Port
interface is active. (See 4.15.3 Pin Replacement Register.)
After HREF has started, the transfer of UV data always starts with the U component.
UV[7::0] starts with U[7::0] at the first pixel of the line, then V[7::0], then U[7::0], É
The following diagram shows the PC Card socket and the location of the signals that carry
video/audio signals when the PC Card and the Host Adapter are in ZV Port mode. This diagram
shows the rationale behind selecting these signals to maintain signal integrity and minimize noise.
1 35
2 36
GND GND
HREF
VSYNC
Y0 Y1
Y2
Y4
Y3
Y6 Y5
Y7
UV0
VCC VCC
VPP VPP
UV2 UV1
UV4 UV3
UV6
UV5
(SCLK) A7
UV7
(MCLK) A6
Reserved
A3 INPACK# (LRCLK)
A2
A1 SPKR# (SDATA)
A0
67
33 34 68
PCLK
GND GND
9.2.4 Features
In the ZV Port interface mode, most of the host adapter control signals and data bus follow the same
data path to the card as it would for any other 16-bit PC Card in I/O and Memory mode. The
primary difference is that the address signals A[25::4] are put in three state by the PC Card Host
Adapter thereby restricting the Common Memory space address range to sixteen bytes and the
Attribute Memory space address range to eight valid bytes. The unused address pins are used to
define the 19 pin ZV Port data bus, control signals, and 4 wire digital audio interface.
Because ZV Port restricts PC Card memory access to four address lines, A[3::0], cards implementing
the ZV Port interface will also implement indirect memory access. (See 4.16 Indirect Memory Access
and see also the Metaformat Specification.)
9.2.5.1 PCLK
This signal is used to clock valid data and HREF signal into the ZV Port. The maximum rate is 16
MHz. During display time, rising edge of PCLK is used to clock the 16-bit pixel data into the ZV
Port.
9.2.5.2 VSYNC
This signal supplies the vertical synchronization pulse to the ZV Port that displays the video data.
9.2.5.3 HREF
This signal supplies the horizontal synchronization pulse to the ZV Port that displays the video
data.
9.2.5.4 Y[7::0]
These signals are 8 bits of luminance data that are input to the ZV Port from the PC Card.
9.2.5.5 UV[7::0]
These signals are the 8 bits of chrominance data that are input to the ZV Port from the PC Card.
9.2.5.6 LRCLK
This signal determines which audio channel (left/right) is currently being input on the audio Serial
Data input line. LRCLK is low to indicate the left channel and high to indicate the right channel.
Supported sample frequencies are shown in section 9.2.5.9 MCLK. For an MCLK frequency of 384Fs
the LRCLK to SCLK ration must be 48. For an MCLK frequency of 256Fs the LRCLK to SCLK ration
must be 32.
9.2.5.7 SDATA
This signal is the digital PCM signal that carries the audio information. Digital audio data is
transferred using the I2S format.
I2S Format
The I2S formats are shown below. The digital audio data is left channel-MSB justified to the high-to-
low going edge of the LRCLK plus one SCLK delay.
SCLK
SDATA 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SCLK
SDATA 23 22 21 20 19 18 17 16 15 14 1312 11 10 9 8 7 6 5 4 3 2 1 0 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
9.2.5.8 SCLK
This signal is the serial digital audio PCM clock.
9.2.5.9 MCLK
This signal is the Master clock for the digital audio. MCLK is asynchronous to LRCLK, SDATA
and SCLK.
The MCLK must be either 256x or 384x the desired Input Word Rate (IWR). IWR is the frequency at
which words for each channel are input to the DAC and is equal to the LRCLK frequency. The
following table illustrates several standard audio word rates and the required MCLK and LRCLK
frequencies.
The ZV Port audio DAC should support a MCLK frequency of 256 times and 384 times the input
word rate. This results in the frequencies shown below.
9.2.6 Functions
There are no changes to the functions of the Common Memory and Attribute Memory areas when
the ZV Port custom interface mode is set in the PC Card Host Adapter. (See 4.6 Memory Function.)
The PC Card shall support direct access to 16 Bytes (signals A[3::0]) of attribute and common
memory space and provide access to two 64 Mbyte indirect memory spaces using registers in
common memory. (See 4.16 Indirect Access to PC Card Memory.) Direct access to any address
beyond the first 16 Bytes of attribute or common memory is undefined.
DMA Signals shall not replace I/O Interface Signals on a socket when the ZV Port custom interface
mode is set in the PC Card Host Adapter for that socket.
9.2.7 Timing
HREF
t6 t7
t5
PCLK
t1 t2 t3 t4
t6 t7
Note: All video signals have a minimum rise and fall time of 4 ns and a maximum rise and fall time of 8 ns.
Non-interlaced data asserts VSYNC at the Odd Field timing.
LRCLK
tslrs
tslrd t sclkl tsclkh
SCLK
tsdlrs tsdh
SDATA
Figure 9-6 Audio Interface Timing
GROUND BOUNCE
MEASUREMENT
I/O DRIVER
DATA MONITOR
GROUND BOUNCE
MEASUREMENT
I/O DRIVER
TRANSMIT/RECEIVE
CARD 0 AND 1
STACKED
GROUND BOUNCE CARDBUS
MEASUREMENT CONNECTOR
I/O DRIVER
GROUND BOUNCE
CONTROL
9.3.1 Overview
The IRD receiver for Digital Video Broadcasting services receives a digital data multiplex,
structured according to the MPEG-2 specifications. Digital video data are received from a satellite
transponder, a cable system, from terrestrial transmitters or from telecommunications network.
After error correction this multiplex is fed via a descrambler, to recover scrambled services, to a de-
multiplexer where the desired services - video, audio and data - are extracted and fed to the
appropriate host decoder referred to as 'host' because of the variety of possible platforms which may
perform these operations. In the model of this process the descrambler and its associated control
functionality reside on a PC Card module which communicates with the host by means of the DVB
Common Interface which is defined on the PC Card physical layer as the DVB CI Port. The
following block diagrams shows the system level concept of the DVB CI Port integrated into an IRD
host environment and demonstrate how a DVB Conditional Access is operated in principal for
receiving data streams.
RGB Out
RF In
Tuner Demodulator MPEG Decoder
Audio Out
Host
Descrambler
Microprocessor
Verifier
Module
Smart
Card
(Optional)
Host
CA module 1
CA module 2
CA module n
9.3.2 Compatibility
The addition of support for the DVB CI Port interface does not relax any requirement associated with
16-bit PC Cards or CardBus PC Cards in either the host or the card. However in case the host is not
capable of operating with PC Cards in a non-custom interface mode the card shall be gracefully
rejected by the host. PC Cards not using the DVB CI Port interface shall be unaffected by the
presence or state of the DVB CI Port interface capability anywhere in the host.
PC Cards implementing the DVB CI Port interface shall present the 16-bit PC Card memory only
interface following the application of VCC or the RESET signal. When either the 16-bit PC Card
memory only interface or the DVB CI Port interface is active the card shall support direct access to 8
kBytes (signals A[13::0]) of attribute memory. Access to any address beyond the first 8 kBytes of
attribute or common memory is possible by indirect addressing.
When operating in this configuration D[7::0] are retained as a byte-oriented I/O port, and the
capability to read the Attribute Memory is retained.
In DVB Common Interface Specification only two address lines are required for four Bytes of register
space, but address lines A[13::0] are available to address Attribute Memory, if required. IOIS16# is
never asserted and the module ignores CE2#.
The Audio Digital Waveform (SPKR#) and the Status Changed (STSCHG#) signals are not
available when the DVB CI Port custom interface mode is active. BVD1 and BVD2 shall remain
ÓhighÓ, the CE2# signal shall be ignored and interpreted by the module as always being in the
ÓhighÓ state. The IOIS16# signal is never asserted.
The following diagram shows the PC Card socket and the location of the signals that carry digital
video-audio I/O-signals when the PC Card and the Host Adapter are set to the DVB CI Port custom
interface mode.
1 35
2 36
GND GND
MDO3
MDO4
MDO5 MDO6
MDO7
MISTRT
MCLKO
MDI0
MDI1
MDI2
MDI3
VCC VCC
VPP VPP
MIVAL MDI4
MCLKI MDI5
MDI6
MDI7
SPKR# (MOVAL)
MOSTRT MDO0
MDO1
MDO2
67
33 34 68
PCLK
GND GND
9.3.4 Features
In the DVB CI Port custom interface mode, most of the host adapter control signals and data bus
follow the same signal path to the card as they would for any other 16-bit PC Card in I/O and
Memory mode. The primary difference is that the address signals A[25::14] and the data signals
D[15::8] are used by the PC Card Host Adapter thereby restricting the Common Memory space
(optional) address range to 16 kBytes and the Attribute Memory space address range to 8k valid
Bytes (8 bit even access only).
9.3.5.1 MDI[7::0]
This is the MPEG data input to the module. It utilizes the pins assigned to A[25::18].
9.3.5.2 MISTRT
This signal is active to indicate the first Byte of a MPEG Transport packet on MDI[7:0]. It uses the
pin assigned to A17.
9.3.5.3 MIVAL
This signal is active to indicate valid Bytes on MDI[7:0]. It uses the pin assigned to A16. As the
interface is clocked continuously, there is a need to indicate when valid data is present, as the way
the input is generated within the host means that there may be periods of non-valid data between
or even within MPEG Transport packets.
9.3.5.4 MDO[7::0]
This is the MPEG Transport data output from the module. It uses the pins assigned to D[15::8].
9.3.5.5 MOSTRT
This signal is active to indicate the first Byte of a MPEG Transport packet on MDO[7::0]. It uses the
pin assigned to BVD1.
9.3.5.6 MOVAL
This signal is active to indicate valid Bytes on MDO[7::0]. It uses the pin assigned to BVD2.
9.3.5.7 MCLKI
This signal is a continuously running clock input to the module during the period when the
interface is in this particular configuration. It clocks the MPEG Transport data into the module. It
uses the pin assigned to A15. The timing relationship between MCLKI and the input signal is
shown in Figure 9-11 and the timing limits are given in Table 9-6.
9.3.5.8 MCLKO
This signal is a continuously running clock output from the module during the period when the
interface is in this particular configuration. It clocks the MPEG Transport data out of the module. It
uses pin 14, assigned to A14. The timing relationships between MCLKO and the output signal is
shown in Figure 9-11 and the timing limits are given in Table 9-6. MCLKO may be a delayed copy
of MCLKI but it could also be an entirely different clock signal with no relationship with MCLKI.
9.3.6 Functions
There are no changes to the functions of the Attribute Memory areas when the DVB CI Port custom
interface mode is set in the PC Card Host Adapter. (See 4.6 Memory Function.) The PC Card shall
support direct access to 8 kBytes (signals A[13::0]) of attribute memory space and shall support
access to any address beyond the first 8 kBytes of attribute or common memory by indirect
addressing.
When operating in this configuration D[7::0] are retained as a byte-oriented I/O port, and the
capability to read the Attribute Memory is retained. Since the DVB CI Port custom interface is 8 bit
only interface the Attribute Memory Bytes are at consecutive even addresses (0,2,4, etc.).
DMA Signals shall not replace I/O Interface Signals on a socket when the DVB CI Port custom
interface mode is set in the PC Card Host Adapter for that socket. Common Memory space support
in the host is optional. There are changes to the functions of the I/O accesses. DVB CI Modules shall
use an independent I/O address window of 4 Bytes in space starting at address Ó00HÓ.
9.3.7 Timing
Transport Stream Interface Timing
The following timing diagram depicts the relationship for Transport Stream Interface signals Table
9-6 shows the AC parameters associated with the DVB CI Port signals when the DVB CI Port custom
interface is in use.
tclkp
tclkh
MCLKI
tsu th
tclkl
MDI [7::0],
MDI, MISTRT,
MISTRT MVAL
MIVAL
tclkp
tclkh
MCLKO
tclkl
tosu toh
MDO [7::0],
MDO, MOSTRT,
MOSTRT,
MOVAL MVAL
Volume 3
Physical Specification
PCMCIA
JEIDA
©1999, PCMCIA/JEIDA PCMCIA HAS BEEN NOTIFIED BY
All rights reserved. CERTAIN THIRD PARTIES THAT
THE IMPLEMENTATION OF THE
No part of this publication may be STANDARD WILL REQUIRE A
reproduced, stored in a retrieval LICENSE FROM THOSE THIRD
system, or transmitted, in any form or PARTIES TO AVOID
by any means, mechanical, INFRINGEMENT OF THEIR
electronic, photocopying, recording RIGHTS. PCMCIA HAS OBTAINED
or otherwise, without prior written FROM SOME, BUT NOT ALL, OF
permission of PCMCIA and JEIDA. THOSE PARTIES A GRANT OF
Printed in the United States of IMMUNITY THAT PCMCIA WILL
America. EXTEND TO YOU, CONTINGENT
PCMCIA (Personal Computer UPON YOUR ENTERING INTO
Memory Card International AND DELIVERING TO PCMCIA
Association) THE RECIPROCAL GRANT OF
2635 North First Street, Suite 209 IMMUNITY AGREEMENT
San Jose, CA 95134 USA CONTAINED ELSEWHERE IN
+1-408-433-2273 THIS STANDARD.
+1-408-433-9558 (Fax) IMPORTANT:
JEIDA (Japan Electronic Industry In order to receive the Grant of
Development Association) Immunity, the owner of this
Kikai Shinko Kaikan, 3-5-8, Shibakoen Standard must sign and return the
Minato-ku, Tokyo 105, JAPAN enclosed Registration Card to:
+81-3-3433-1923 PCMCIA
+81-3-3433-6350 (Fax) 2635 North First Street, Suite 209
San Jose, CA 95134 USA
The PC Card logo and PC Card are
trademarks of PCMCIA, registered in NEITHER PCMCIA NOR JEIDA
the United States. The PC Card logo MAKES ANY WARRANTY,
and design are trademarks of JEIDA, EXPRESS OR IMPLIED, WITH
registered in Japan. RESPECT TO THE STANDARD,
INCLUDING AS TO NON-
INFRINGEMENT,
MERCHANTABILITY OR FITNESS
FOR A PARTICULAR PURPOSE.
THIS STANDARD IS PROVIDED TO
YOU ÒAS IS.Ó
CONTENTS
1. Introduction____________________________________________1
2. Related Documents _____________________________________3
3. Card Dimensions _______________________________________5
3.1 Write Protect Switch (WPS) ................................................................................................5
3.2 Battery Location ..................................................................................................................5
3.3 Labeling (Marking) ..............................................................................................................5
4. Connector______________________________________________7
4.1 Card Connector....................................................................................................................7
4.2 Host Connector....................................................................................................................7
9. PC Card Environmental________________________________ 21
9.1 Reference Standards ..........................................................................................................21
9.2 Environmental Performance ..............................................................................................21
9.2.1 Operating Environment ........................................................................................................................................................2 1
9.2.2 Storage Environment .............................................................................................................................................................2 2
iv © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
© 1999 PCMCIA/JEIDA v
PHYSICAL SPECIFICATION
FIGURES
Figure 10-1: PC Card Thermal Environment Measurement Method...........................................32
Figure 10-2: Free Area Around Card Being Rated .......................................................................32
Figure 10-3: Location of Thermocouples - 5 Each Side................................................................33
Figure 10-4: Location of Thermocouples for Small PC Card - 5 Each Side ................................33
Figure 10-5: Thermal Rating vs. Temperature Rise......................................................................35
Figure 11-1: Grounding/EMI Clips Contact Resistance Measurement.......................................37
Figure 11-2: TYPE I PC Card Package Dimensions.....................................................................38
Figure 11-3: TYPE II PC Card Package Dimensions....................................................................40
Figure 11-4: Type III PC Card Package Dimensions ...................................................................41
Figure 11-5: Small PC Card Type I Package Dimensions............................................................42
Figure 11-6: Small PC Card Type II Package Dimensions ..........................................................43
Figure 11-7: Small PC Card Type III Package Dimensions.........................................................44
Figure 11-8: Type I PC Card (3D) ................................................................................................45
Figure 11-9: Type II PC Card (3D)...............................................................................................46
Figure 11-10: Type III PC Card (3D)............................................................................................46
Figure 11-11: Full-size PC Card Connector Socket ......................................................................48
Figure 11-12: Small PC Card Connector Socket ...........................................................................48
Figure 11-13: Full-size PC Card Pin/Socket Contact Length with Wipe....................................49
Figure 11-14: Small PC Card Pin/Socket Contact Length with Wipe.........................................49
Figure 11-15: Full-size PC Card Pin Connector............................................................................50
Figure 11-16: Small PC Card Pin Connector ................................................................................51
Figure 11-17: Full-size PC Card Host Connector, Pin Contacts..................................................52
Figure 11-18: Small PC Card Host Connector, Pin Contacts.......................................................53
Figure 11-19: Recommended Right Angle Connector PCB Footprint..........................................54
Figure 11-20: Recommended Straight Connector PCB Footprint ................................................54
Figure 11-21: Recommended Two Row Surface Mount Connector PCB Footprint ....................55
Figure 11-22: Recommended One Row Surface Mount Connector PCB Footprint .....................55
Figure 11-23: Full-size PC Card Guide Guidance ........................................................................56
Figure 11-24: Small PC Card Guide Guidance.............................................................................57
Figure 11-25: Connector Shock & Vibration Test Fixture.............................................................58
Figure 11-26: Electrostatic Discharge Test-1 Fixture ...................................................................58
Figure 11-27: Electromechanical Discharge Test-2 Fixture ..........................................................58
© 1999 PCMCIA/JEIDA vii
FIGURES
TABLES
Table 4-1: Host Connector Pin Configuration ................................................................................7
© 1999 PCMCIA/JEIDA ix
PHYSICAL SPECIFICATION
1. I N T R OD U C T ION
This section of the specification defines the PC CardÕs physical outline dimensions, connector system
and qualification test parameters for 5 volt, low voltage, Small PC Card, and CardBus PC Card
applications. The tests specified in the Connector Reliability Section, Connector Durability, and PC
Card Environmental Sections are the minimum parameters which must be met. Note that these tests
apply to all PC Cards, including Small PC Card, unless a different test is specified for a specific card.
Each manufacturer is responsible for qualification of their own products to this specification.
The CardBus PC Card interface requires the use of a grounded shroud CardBus PC Card connector
or PCMCIA/JEIDA approved equivalent for all CardBus PC Card applications.
© 1999 PCMCIA/JEIDA 1
INTRODUCTION
2 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
2 . R E L AT E D D O C U M E N T S
The following documents which comprise the PC Card Standard:
PC Card Standard Release 7.0 (February 1999), PCMCIA/JEIDA
Volume 1. Overview and Glossary
Volume 2. Electrical Specification
Volume 3. Physical Specification
Volume 4. Metaformat Specification
Volume 5. Card Services Specification
Volume 6. Socket Services Specification
Volume 7. Media Storage Formats Specification
Volume 8. PC Card ATA Specification
Volume 9. XIP Specification
Volume 10. Guidelines
Volume 11. PC Card Host Systems Specification
MIL-STD-202F, Military Standard, Test Methods for Electronic and Electrical Component Parts,
U.S. Department of Defense
MIL-STD-1344A, Military Standard, Test Methods for Electrical Connectors, U.S. Department of
Defense
ANSI/UL 94-1979, Standard for Tests for Flammability of Plastic Materials for Parts in Devices
and Appliances, November, 1979
EIA-364-B, Electrical/Socket Test Procedures Including Environmental Classifications, August,
1990, Electronic Industries Association
© 1999 PCMCIA/JEIDA 3
RELATED DOCUMENTS
4 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
U N L E S S O T H E R WIS E S P E C IF IE D , A L L D IME N S IO N S A R E
IN MIL L IME T E R S (MM). D IME N S IO N S S H O WN D O N O T
IN C L U D E WA R P A G E A L L O WA N C E S .
© 1999 PCMCIA/JEIDA 5
CARD DIMENSIONS
6 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
4. CON N E C T OR
The specified PC Card interconnect system shall be a 68-position, 2-piece pin-and-socket. The socket
contacts shall be within the PC Card connector.
© 1999 PCMCIA/JEIDA 7
CONNECTOR
The outermost plating of socket and pin contact area shall be gold or other plated materials
compatible with gold and shall meet the requirements specified in the Connector Reliability and
Connector Durability Sections.
The host pin connector for CardBus PC Card applications (or PCMCIA/JEIDA approved equivalent)
shall contain a top side planar electrically conductive, ground shroud (Figure 11-42: CardBus PC
Card Recommended Host Connector Grounding Interface Dimensions) with eight (8) fingers having
an effective minimum contact wipe length of 3.6 mm when mating with the CardBus PC Card
Connector (Figure 11-45: CardBus PC Card Reference Shrouded Connector and Figure 11-46:
CardBus PC Card Reference Shrouded Connector (Stacked Connector)). These eight (8) fingers
shall be recessed within the host pin connector protective dielectric shroud providing a 0.254 mm
minimum air gap when mating with 16-bit PC Cards.
The recommended host connector PCB footprints for: the right angle connector (Figure 11-19:
Recommended Right Angle Connector PCB Footprint), the straight connector (Figure 11-20:
Recommended Straight Connector PCB Footprint), two row surface mount connector (Figure 11-21:
Recommended Two Row Surface Mount Connector PCB Footprint), and one row surface mount
connector (Figure 11-22: Recommended One Row Surface Mount Connector PCB Footprint) are
shown without mounting or hardware hole locations.
The recommended CardBus PC Card host connector PCB footprints for the right angle connector
(Figure 11-43: CardBus PC Card Recommended Right Angle PCB Footprint and Figure 11-44:
CardBus PC Card Recommended Right Angle PCB Footprint (Stacked)) is shown with mounting
hole locations. The host connector ground shroud is connected to host system electrical ground
signals and must be isolated from chassis ground.
The interconnect system shall pass all requirements of the Connector Reliability Section and the
Connector Durability Section.
If a connector ejector mechanism is used, it is recommended the ejector mechanism pass all
requirements for reliability and durability, as applicable, in Section 7 Connector Reliability and
Section 8 Connector Durability.
8 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
5 . PC CAR D G U ID AN C E
The PC Card shall be guided by the host connector for a minimum distance of 10.0 mm before the
socket connector bottoms on the host (pin) connector (see Figure 11-23: Full-size PC Card Guide
Guidance or Figure 11-24: Small PC Card Guide Guidance).
To ensure alignment of the PC Card to connectors, the full-size PC Card shall be guided for a
minimum distance of 40.0 mm before engagement, and the Small PC Card shall be guided for a
minimum distance of 27.0 mm before engagement.
NOTE Figure 11-24 is a reference for the design of the guide. To ensure alignment
of the Small PC Card to the connectors, the guide shall be designed with G2
as large as possible and W2 as small as possible.
© 1999 PCMCIA/JEIDA 9
PC CARD GUIDANCE
10 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
6. G R OU N D IN G/ EM I CL IP S
PC Card manufacturers may use frame mounted grounding/EMI Clips to reduce the
Electromagnetic Emissions of PC Cards. The clips create a path of least resistance to ground so that
the external connection (e.g. RJ11 cable) through an I/O connector will not act like an antenna. With
the clips, the cardÕs emissions are directed back through the card and into the system to either the
Battery or AC input, instead of out the card into the surrounding area.
Grounding/EMI clips can be included on memory cards as well if needed.
Material(s) selected for the mating surfaces of the grounding clips must be compatible to prevent
corrosion resulting from galvanic action. The base alloy material(s) and mating surfaces for the
grounding clip(s) in host systems and on the mating surface(s) on the card must be compatible with
gold. The interface must not wear, after life cycle testing, to a level that is no longer suitable for the
application.
The recommendation is for the material, dimensions and location of the grounding/EMI clip. The
process of attaching the clip to the frame, cover or card PWB is left to the card designer.
The location of the grounding/EMI clip on different types of PC Cards is detailed in Figure 11-2:
TYPE I PC Card Package Dimensions, Figure 11-3: TYPE II PC Card Package Dimensions, Figure
11-4: Type III PC Card Package Dimensions, Figure 11-8: Type I PC Card (3D), Figure 11-9: Type
II PC Card (3D), Figure 11-10: Type III PC Card (3D), Figure 11-5: Small PC Card Type I Package
Dimensions, Figure 11-6: Small PC Card Type II Package Dimensions, and Figure 11-7: Small PC
Card Type III Package Dimensions.
S E E P CM CI A GRA NT OF I M M U NI T Y A ND S U B L I CE NS E
F OR E M I GROU ND CL I P S U B -L I CE NS E A GRE E M E NT ,
OR CONT A CT P CM CI A OF F I CE F OR A DDI T I ONA L
I NF ORM A T I ON.
© 1999 PCMCIA/JEIDA 11
GROUNDING/EMI CLIPS
using the same procedure outlined above. The contact interface is acceptable if the resistance has
increased by no more than 20 mW from the initial value.
12 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
7 . CON N E C T OR RE L IAB IL IT Y
The interconnect system as specified in the Connector Section shall meet or exceed all reliability test
requirements of this subsection. Unless otherwise specified, all test and measurements shall be
made at:
If conditions must be closely controlled in order to obtain reproducible results, the parameters shall
be:
See Section 7.5 Approved Test Procedures for approved test procedures.
© 1999 PCMCIA/JEIDA 13
CONNECTOR RELIABILITY
Gauge:
Material - Tool making steel
Hardness - HRC = 50 to 55
9.8 N
Min Force PIN
INSULATOR
4.9 N
Min Force SOCKET
14 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
7.1.9 Shock
STANDARD TESTING
a. No mechanical damage shall occur on the parts Acceleration 490 m/s_ (50G)
b. Must not cause current interruption greater than 100 ns Standard holding time 11 ms, Semi-sine wave
Velocity change 3.44 m/s (11.3 ft/s)
See Figure 11-25: Connector Shock & Vibration Test
Fixture
© 1999 PCMCIA/JEIDA 15
CONNECTOR RELIABILITY
STANDARD TESTING
18.0 nH maximum Inductance @ 1 MHz applies to both single Low level inductance
and stacked configurations
16 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
© 1999 PCMCIA/JEIDA 17
CONNECTOR RELIABILITY
18 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
8 . CON N E C T OR DU R AB IL IT Y
The interconnect system as specified in Connector Section shall meet or exceed all durability
requirements of this subsection.
Test conditions for the mate/unmate cycles are:
© 1999 PCMCIA/JEIDA 19
CONNECTOR DURABILITY
20 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
9 . P C CAR D E N V IR ON M E N TAL
The PC Card as specified in this Standard shall meet or exceed all environmental tests of the
Environmental Resistance Section. The Small PC Card shall meet or exceed all of the same
environmental tests in the Environmental Resistance Section with the exception of the following
tests, for which tests specific to Small PC Card have been developed:
· Bend Test
· Torque Test
The battery, if part of the PC Card, shall be installed for all tests. Unless otherwise specified, all test
and measurements shall be made at:
If conditions must be closely controlled in order to obtain reproducible results, the parameters shall
be:
See Section 9.4 Approved Test Procedures for approved test procedures.
© 1999 PCMCIA/JEIDA 21
PC CARD ENVIRONMENTAL
22 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
© 1999 PCMCIA/JEIDA 23
PC CARD ENVIRONMENTAL
24 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
9.3.13 Shock
STANDARD TESTING
PC Card to function as specified after test and to retain the data Acceleration 490 m/s2 (50G)
stored prior to test Duration 11ms
Semi-sine wave, velocity change: 3.44 m/s (11.3 ft/s)
(Figure 11-28: PC Card Shock and Vibration Test
Fixture)
© 1999 PCMCIA/JEIDA 25
PC CARD ENVIRONMENTAL
26 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
© 1999 PCMCIA/JEIDA 27
PC CARD ENVIRONMENTAL
28 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
© 1999 PCMCIA/JEIDA 29
PHYSICAL SPECIFICATION
1 0 . P C C A R D T H E R M A L R AT I N G
Note that alternative methods, such as an electrical summation of all power dissipated within the PC
Card, if performed correctly, will yield acceptable results.
10.1.2 Procedure
The PC Card shall be removed from the host test system using a card type specific extender (PC
Card 16 or CardBus PC Card type extender) and any external heat loads produced by the PC Card
in order to isolate external influence of the measurement as in Figure 10-1: PC Card Thermal
Environment Measurement Method. The PC Card shall be free of external influences for a
quartersphere of 304.8 millimeters and 25.4 - 38.1 millimeters above a dielectric (non-conductive)
table surface as indicated in Figure 10-2: Free Area Around Card Being Rated. The card shall be in a
free air environment on both sides. Place five thermocouples or similar temperature measuring
devices on each side of the PC Card as indicated by the template in Figure 10-3: Location of
Thermocouples - 5 Each Side or Figure 10-4: Location of Thermocouples for Small PC Card - 5
Each Side.
© 1999 PCMCIA/JEIDA 31
PC CARD THERMAL RATING
Thermocouples 1
To Thermal
Measuring Device
External Dongle
(or other external load)
PC Card Thermal Environment
304.8 mm
Card Centerline
End view of card
304.8 mm
32 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
63.5
43.18
12.7
21.59
38.1
40.64
PC Card
38.1
25.4
12.7
10.16
21.4
32.64
Card Host
Connector Edge
SmallPC Card
Note: All dimensions in millimeters
Tolerance = ±1.27 mm
From a host system, a program must be run in order to realistically exercise the card at its extremes.
When the temperature of the PC CardÕs surface is stable within ± 1¡C over thirty minutes, the card
has reached its thermal rating.
© 1999 PCMCIA/JEIDA 33
PC CARD THERMAL RATING
Determine the average temperature rise from the total number of thermocouples or similar
temperature measuring devices. Obtain the PC CardÕs Thermal Rating by using the averaged
temperature rise and Figure 10-5: Thermal Rating vs. Temperature Rise. The Thermal Rating is
characterized by the equation Thermal Rating (X.Y) = 0.05DT1.26 + 1.1E-7DT4. This is the value that is
recorded in the PC CardÕs CIS thermal entry (see TPCE_MI: Miscellaneous Features Field in the
Metaformat Specification).
Below is the list of items used to determine this Thermal Rating curve and equation:
· T30-2-506 Thermocouple Wire (30 Gauge, Type T)
· Hot Spot TC Welder (welded thermocouples)
· Fluke Hydra Data Acquisition Unit (2620A Module)
· 3M Copper Electrical Tape, 25.4 mm, H813441E181R, 12.7 mm 3M 230 Drafting Tape
Used to match the IR emissivities of the card surface to the thermocouple wire mounting area.
The copper tape's optical properties do not match, because it is a conductor and not a dielectric.
The copper tape provides a good stiff bond of the wire to the card and it provides a good
thermal interface of the card to the wire. When married to the drafting tape as an overlay, we
achieved very good agreement between the IR image and the thermocouple readouts. This
implies minimal test-induced error.
34 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
5
Thermal Rating
0
20
24
28
0
40
44
48
4
12
16
32
36
© 1999 PCMCIA/JEIDA 35
PHYSICAL SPECIFICATION
11. FIGU R E S
V POWER
SUPPLY
A
GROUND CLIP
© 1999 PCMCIA/JEIDA 37
FIGURES
WPS 1
BATTERY
PROTECT
Surface A
2x H
L
2x G
SUBSTRATE AREA
3
C INTERCONNECT AREA P
2x S CONNECTOR 2x R 4
2x T
W
6
X X
Surface A
#34 #1 X
5 volt key
X X
Surface A
#34 #1 Z
10.0 85.60 10.0 0.60 3.0 1.65 54.00 1.00 1.60 2.10 65.60 79.60
1 RECOMMENDED BATTERY LOCATION. THE BATTERY HOLDER SHOULD BE DESIGNED SO THAT THE
POSITIVE SIDE OF THE BATTERY IS UP (TOWARD SURFACE A)
38 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
WPS 1
BATTERY
PROTECT
Surface A
2x H
2x G
L
SUBSTRATE AREA
3
C INTERCONNECT AREA P
2x R 4
2x S CONNECTOR
2x T1
W
6
2x T2
X X
Surface A
#34 #1 X
5 volt key
#68 #35
Surface B
Y
X X
Surface A
#34 #1 Z
#68 #35
Surface B
Y
10.0 85.60 10.0 0.60 3.0 1.65 2.50 54.00 1.00 1.60 2.10 65.60 79.60
1 RECOMMENDED BATTERY LOCATION. THE BATTERY HOLDER SHOULD BE DESIGNED SO THAT THE
POSITIVE SIDE OF THE BATTERY IS UP (TOWARD SURFACE A)
© 1999 PCMCIA/JEIDA 39
FIGURES
Surface A
2x H
L 2x G
SUBSTRATE AREA
2
INTERCONNECT AREA P 2x C
CONNECTOR 2x R 3
2x T1
2x S
W1
5 T2
X X
W2
Surface A
#34 #1 T3 T4
Y X 5 volt key
#68 Surface B #35
X X
W2
Surface A
#34 #1 T3 T4
Y #68 #35 Z
Surface B
40 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
WPS 1
BATTERY
PROTECT
Surface A
2x H
SUBSTRATE AREA
2x G
3
C
P
INTERCONNECT AREA
CONNECTOR 2x R
2x S
W
2x T
5
Surface A
#34 #1
5 volt key
Y
#68 #35
X Surface B X
Surface A
#34 #1
low voltage key
Y
Z
#68 #35
Surface B X
X
C MIN L ± 0.2 P MIN R ± 0.10 S MIN 6 X ± 0.05 Y ± 0.05 Z ± 0.05 G ± 0.60 H ± 0.60
T W
5
10.0 45.00 10.0 0.60 3.0 1.65 42.80 1.00 1.55 2.40 25.00 39.00
© 1999 PCMCIA/JEIDA 41
FIGURES
WPS 1
BATTERY
PROTECT
Surface A
2x H
SUBSTRATE AREA
2x G
3
C
P
INTERCONNECT AREA
CONNECTOR 2x R
2x S
W
2x T1
Surface A 2x T2
#34 #1
5 volt key
Y
#68 #35
X Surface B X
Surface A
#34 #1
#68 #35
Surface B X
X
C MIN L ± 0.20 P MIN R ± 0.10 S MIN T1 ± 0.05 T2 MAX 5 X ± 0.05 Y ± 0.05 Z ± 0.05 G ± 0.60 H ± 0.60
W
10.0 45.00 10.0 0.60 3.0 1.65 2.50 42.80 1.00 1.55 2.40 25.00 39.00
42 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
T4
T3
Surface A
2x H
SUBSTRATE AREA
2x G
2
C
P
INTERCONNECT AREA
CONNECTOR 2x R
2x S
W
T1
Surface A
T2
#34 #1
5 volt key
Y
#68 #35
X Surface B X
Surface A
#34 #1
low voltage key
Y
Z
#68 #35
Surface B X
X
© 1999 PCMCIA/JEIDA 43
FIGURES
C
O
N
N
E
C
TO
R
P D
C
C
A
BA
TT
ER R
Y
B
A
TT
E
R
Y
PR
OT
EC
T
G
R
O
U
N
W
D
P
C
S
LI
P
C
O
N
N
E
C
TO
R
P D
C
C
A
R
BA
TT
ER
Y
B
A
TT
E
R
Y
PR
OT
EC
T
G
R
O
U
N
D
W
C
P
LI
S
44 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
C
O
N
N
E
C
TO
R
P D
C
C
A
R
G
R
O
U
N
D
C
LI
P
Figure 11-10: Type III PC Card (3D)
© 1999 PCMCIA/JEIDA 45
FIGURES
, PIN INSERTION
0.94 MIN
0.85 MIN
PIN INSERTION
46 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
L3
L1 L4
L2
2
L3
L1 L4
L2
2
© 1999 PCMCIA/JEIDA 47
FIGURES
33 EQ SP = L1
P
P
PIN LAYOUT
2 ROW - 68 PINS
T Y
W
#1 #34
5 volt key
#35 #68
X
T
L2
T FRONT VIEW
Y
W
#1 #34
low voltage key
#35 #68
Z
T
L2
FRONT VIEW
48 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
33 EQ SP = L1
P1
P2 P3 P4
PIN LAYOUT
2 ROW - 68 PINS
T T
W
#1 #34 X
5 volt key
X #35 #68
L2
FRONT VIEW
T T
W Y
#1 #34
low voltage key
#35 #68
X
L2
FRONT VIEW
L1 ± 0.15 L2 ± 0.08 P1 ± 0.10 P2 ± 0.10 P3 ± 0.10 P4 ± 0.10 T ± 0.05 W ± 0.07 X ± 0.05 Y ± 0.05
33.00 43.00 1.27 1.00 1.00 0.50 0.90 3.50 1.75 2.60
© 1999 PCMCIA/JEIDA 49
FIGURES
0.50 ± 0.10
10˚ - 15˚
RADIUS INCLUDED
0.44 ± 0.02
(PIN DIAMETER)
0.46 MAX
50 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
+0.15
0.40 -0.10
(1)
110˚ MIN (CONTACT AREA)
10˚ - 15˚
RADIUS INCLUDED
+0.15
0.40 -0.10
(2) 0.25 MAX
0.37 ± 0.02
(PIN DIAMETER)
0.39 MAX
© 1999 PCMCIA/JEIDA 51
FIGURES
INSERT CARD
#36
#68 #35
#67
W2
#34
#33 #2 #1 3x W1
L2
L1
#33
#1 #34
#2
W2
#35
#36 #67 #68 3x W1
L2
L1
52 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
INSERT CARD
#68 #35
#34 #1
L2 TYP L3
2x L1
Figure 11-21: Recommended Two Row Surface Mount Connector PCB Footprint
INSERT CARD
#34 #35
#68 #1
L1 TYP
L2
(L1 X 67)
L1 ± 0.050 L2 ± 0.080
0.635 42.545
Figure 11-22: Recommended One Row Surface Mount Connector PCB Footprint
© 1999 PCMCIA/JEIDA 53
,,
FIGURES
G3
3
P
KEYS
1
W2
POLARIZATION
W1
2
2
G1
G2
54 © 1999 PCMCIA/JEIDA
,, G3 3
P
KEYS
W2
W1
1
POLARIZATION
2
2
G1
G2
PHYSICAL SPECIFICATION
© 1999 PCMCIA/JEIDA 55
FIGURES
0.50
Pin Connector 0.295 N MIN PC Card Stop
with Card Guide PC Card or Dummy Card
PCB
Mounting Rack
1.5 kW
1.5 kV 100 pF
25 mm2 max
GND Contact Area
1
PC Card
Insulator
1 Connect to the four (4) ground contacts (Pin No’ s 1, 34, 35 and 68)
1.5 kW
C C
15 kV 100 pF
C
GND
C
P
C
C
A
R
D
CO TE
NN
EC P LA
TO
R ING TE
CT LA
N DU P
CO T ING
U LA
INS
Notes: 1. PC Card to make contact with the conducting plate. Discharge to top cover, left side, non-connector end and right side
three times each. Total discharge cycles = 12 on each side.
2. The PC Card cover facing the conducting plate, should make mechanical contact with the conducting plate during test.
56 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
55
mm
Clamping
Device
RD
CO CA
NN PC
EC
TO
R
mm
86
1. The PC Card shock and vibration test fixture shall entrap the PC Card such that all shock
and vibration shall be transmitted into the sample card
© 1999 PCMCIA/JEIDA 57
,,
FIGURES
19.6 N
Static Load
12.70 MAX
,,
FULL-SIZE PC CARD
2 THE FORCE BAR SHALL APPLY A UNIFORM FORCE ACROSS THE END OF THE PC CARD
19.6 N
Static Load
12.70 MAX
SMALL PC CARD
58 © 1999 PCMCIA/JEIDA
,,,
PHYSICAL SPECIFICATION
,,
12.70 MAX 12.70 MAX
1 APPLY TORQUE TO UNCLAMPED END OF PC CARD. THE TORQUE AND ANGLE MAX ARE:
TORQUE 1.236 Nm OR 10°, WHICHEVER OCCURS FIRST
1 APPLY TORQUE TO UNCLAMPED END OF SMALL PC CARD. THE TORQUE AND ANGLE MAX ARE:
TORQUE 1.236 Nm OR 10°, WHICHEVER OCCURS FIRST
© 1999 PCMCIA/JEIDA 59
,,, ,,,,
FIGURES
,,,,
, ,,,,
INTERCONNECT AREA
(SHORT SIDE 10.0, LONG SIDE 3.0)
, , ,,,,
,,,
PARALLEL PLATES
W
0.35 MAX
LONG SIDE 3.0
0.15 MAX
.0
10
DE
SI
RT
O
SH
CONNECTOR SIDE
,,,,
,, ,, ,,,,
,, ,
,,,, ,, ,
,,,,
PARALLEL PLATES
T
60 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
,,
10.0
CONNECTOR SIDE
T(i)
10.0
,,
,,
,,
10.0
T(s)
10.0
T (MAX)
SLIDE
CARD
,,,,,,,
HORIZONTAL PLATE
,,,,,,,
© 1999 PCMCIA/JEIDA
Figure 11-36: Warpage Measurement BÐMeasurements
61
FIGURES
MEASUREMENT POSITION
CONNECTOR SIDE
10.0 MIN
10.0 10.0 10.0
,,
,,
,,
,,,
,
,,
,,
,,
,,,
,
,,
,,
,, ,
,,,
3.0 MIN 3.0 MIN
62 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
X
Z
,,,
Figure 11-38: Card Inverse Insertion Test Fixture
Host Connector
© 1999 PCMCIA/JEIDA 63
FIGURES
54.00 ± 0.10
-A- 2.15
+0.20
-0.10
36.83 ± 0.15
0.60 S A S
6.35 ± 0.10
5.08 ± 0.10
6 PLC
5.38 ± 0.30
R 0.50 ± 0.10
SURFACE A
64 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
¢ X
0.64
0.41 ± 0.05 2.01 TYP
TYP 1.27
TYP
0.64
8 PLC
TOP SURFACE
41.91
REF
1.27 REF
BOTTOM SURFACE
© 1999 PCMCIA/JEIDA 65
FIGURES
POSN #34
POSN #1
POSN #35
POSN #68
POSN #34
POSN #1
POSN #2 1.91
TYP
POSN #35
7.62 REF
POSN #36
POSN #67
1.27 2.36 REF
TYP POSN # 68 2 PLC
INSERT CARD
41.91 REF
51.26
66 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
POSN #33
POSN #34
POSN #36
2.36 REF 1.27 POSN #67
INSERT CARD 4.62
2 PLC TYP POSN #68 REF
41.91 8.13 REF
REF
60.95
REF
Figure 11-44: CardBus PC Card Recommended Right Angle PCB Footprint (Stacked)
© 1999 PCMCIA/JEIDA 67
FIGURES
5.38 mm
68 © 1999 PCMCIA/JEIDA
PHYSICAL SPECIFICATION
5.38 mm
© 1999 PCMCIA/JEIDA 69
FIGURES
A POWER
SUPPLY
SOCKET
PC CARD
TERMINATION RESISTANCE
MEASUREMENT POINTS
70 © 1999 PCMCIA/JEIDA
P C C A R D S TA N D A R D
Volume 4
Metaformat Specification
PCMCIA
JEIDA
©1999, PCMCIA/JEIDA PCMCIA HAS BEEN NOTIFIED BY
All rights reserved. CERTAIN THIRD PARTIES THAT
THE IMPLEMENTATION OF THE
No part of this publication may be STANDARD WILL REQUIRE A
reproduced, stored in a retrieval LICENSE FROM THOSE THIRD
system, or transmitted, in any form or PARTIES TO AVOID
by any means, mechanical, INFRINGEMENT OF THEIR
electronic, photocopying, recording RIGHTS. PCMCIA HAS OBTAINED
or otherwise, without prior written FROM SOME, BUT NOT ALL, OF
permission of PCMCIA and JEIDA. THOSE PARTIES A GRANT OF
Printed in the United States of IMMUNITY THAT PCMCIA WILL
America. EXTEND TO YOU, CONTINGENT
PCMCIA (Personal Computer UPON YOUR ENTERING INTO
Memory Card International AND DELIVERING TO PCMCIA
Association) THE RECIPROCAL GRANT OF
2635 North First Street, Suite 209 IMMUNITY AGREEMENT
San Jose, CA 95134 USA CONTAINED ELSEWHERE IN
+1-408-433-2273 THIS STANDARD.
+1-408-433-9558 (Fax) IMPORTANT:
JEIDA (Japan Electronic Industry In order to receive the Grant of
Development Association) Immunity, the owner of this
Kikai Shinko Kaikan, 3-5-8, Shibakoen Standard must sign and return the
Minato-ku, Tokyo 105, JAPAN enclosed Registration Card to:
+81-3-3433-1923 PCMCIA
+81-3-3433-6350 (Fax) 2635 North First Street, Suite 209
San Jose, CA 95134 USA
The PC Card logo and PC Card are
trademarks of PCMCIA, registered in NEITHER PCMCIA NOR JEIDA
the United States. The PC Card logo MAKES ANY WARRANTY,
and design are trademarks of JEIDA, EXPRESS OR IMPLIED, WITH
registered in Japan. RESPECT TO THE STANDARD,
INCLUDING AS TO NON-
INFRINGEMENT,
MERCHANTABILITY OR FITNESS
FOR A PARTICULAR PURPOSE.
THIS STANDARD IS PROVIDED TO
YOU ÒAS IS.Ó
CONTENTS
1. Introduction ___________________________________________ 1
1.1 Purpose................................................................................................................................1
1.2 Scope....................................................................................................................................1
1.3 Related Documents .............................................................................................................1
2. Overview ______________________________________________ 3
2.1 Metaformat Overview .........................................................................................................3
2.2 Metaformat Requirements...................................................................................................3
2.3 Metaformat Architecture.....................................................................................................4
2.3.1 Basic Tuple Format and Tuple Chain Structure.............................................................................................................4
2.3.2 Byte Order Within Tuples ......................................................................................................................................................4
2.3.3 Byte Order on Wide Cards ....................................................................................................................................................4
2.3.4 16-bit PC Card Metaformat in Attribute Memory Space ...........................................................................................5
2.3.5 16-bit PC Card Metaformat in Common Memory Space...........................................................................................5
2.3.6 16-bit PC Card Metaformat for Multiple Function Cards.........................................................................................6
2.3.7 CardBus PC Card Metaformat.............................................................................................................................................7
2.3.8 16-bit PC Card Tuple Chain Processing ............................................................................................................................7
2.3.9 CardBus PC Card Tuple Chain Processing ......................................................................................................................8
2.3.10 Tuple Processing Recommendations............................................................................................................................... 8
2.3.10.1 Tuple Code Known..................................................................................................................................................8
2.3.10.2 Processing Longlink Tuple ...................................................................................................................................9
2.3.10.3 Longlink Pointing to Invalid Tuple Chain......................................................................................................9
2.3.11 16-bit PC Card CIS with Indirect Access PC Card Memory ...................................................................................9
iv © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
© 1999 PCMCIA/JEIDA v
CONTENTS
vi © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
TABLES
Table 2-1 Basic Tuple Format.........................................................................................................4
Table 2-2 Global CIS for Multiple Function PC Cards...................................................................6
Table 2-3 Function-specific CIS for Multiple Function PC Cards .................................................6
Table 2-4: Minimal CIS for Indirect Memory Access PC Cards ....................................................9
Table 2-5 Tuple Summary Table ..................................................................................................12
Table 2-6 Tuple Summary Table (Numerically by Tuple Code) .................................................14
Table 3-1 CISTPL_CHECKSUM: Checksum Tuple.....................................................................18
Table 3-2 CISTPL_END: End of Chain Tuple..............................................................................19
Table 3-3: CISTPL_INDIRECT: Indirect Access PC Card Memory............................................20
Table 3-4 CISTPL_LINKTARGET: Link Target Tuple ................................................................21
Table 3-5 CISTPL_LONGLINK_A and CISTPL_LONGLINK_C: 16-bit PC Card LongLink
Tuples ................................................................................................................................22
Table 3-6 CISTPL_LONGLINK_CB: The CardBus PC Card LongLink Tuple...........................23
Table 3-7 CISTPL_LONGLINK_MFC: The Multiple Function 16-bit PC Card Link Tuple.......25
Table 3-8 CISTPL_NO_LINK: The No-Link Tuple......................................................................26
Table 3-9 CISTPL_NULL: The Null Tuple...................................................................................27
Table 3-10 CISTPL_ALTSTR: The Alternate Language String Tuple.........................................28
Table 3-11 CISTPL_DEVICE, CISTPL_DEVICE_A: The 5 volt Device information Tuples.....29
Table 3-12 CISTPL_DEVICE_OC, CISTPL_DEVICE_OA: The Other Conditions Device
information Tuples............................................................................................................34
Table 3-13 CISTPL_DEVICEGEO and CISTPL_DEVICEGEO_A: Device Geometry Tuples ...36
Table 3-14 CISTPL_EXTDEVICE: The Extended Common Memory Device information Tuples
............................................................................................................................................38
Table 3-15 CISTPL_FUNCE: Function Extension Tuple .............................................................45
Table 3-16 CISTPL_FUNCE: Serial Port Interface Function Extension Tuple............................47
Table 3-17 CISTPL_FUNCE: Modem and ISDN Interface Function Extension Tuple...............48
Table 3-18 CISTPL_FUNCE: Data Modem Function Extension Tuple ......................................50
Table 3-19 CISTPL_FUNCE: TPCID_FF: Document Facsimile Function Extension Tuple .......54
Table 3-20 CISTPL_FUNCE: Voice Function Extension Tuple ...................................................56
Table 3-21: CISTPL_FUNCE: ISDN Function Extension Tuple ..................................................59
Table 3-22 CISTPL_FUNCE: Disk Function Extension Tuple.....................................................64
Table 3-23 CISTPL_FUNCE: Combined PC Card ATA Function Extension Tuple...................64
Table 3-24 CISTPL_FUNCE: Dual-Drive Card PC Card ATA Function Extension Tuple........66
Table 3-25 CISTPL_FUNCE: LAN Function Extension Tuple....................................................66
Table 3-26 CISTPL_FUNCE: LAN_TECH Function Extension Tuple........................................67
Table 3-27 CISTPL_FUNCE: LAN_SPEED Function Extension Tuple ......................................67
Table 3-28 CISTPL_FUNCE: LAN_MEDIA Function Extension Tuple.....................................67
Table 3-29 CISTPL_FUNCE: LAN_NID Function Extension Tuple...........................................68
Table 3-30 CISTPL_FUNCE: LAN_CONN Function Extension Tuple ......................................68
Table 3-31: CISTPL_FUNCE: ISDN Function Extension Tuple ..................................................69
Table 3-32: CISTPL_FUNCE: 1394 Serial I/O Bus Adapter Function Extension Tuple ...........69
Table 3-33: CISTPL_FUNCE: USB Serial I/O Bus Adapter Function Extension Tuple ............70
Table 3-34 CISTPL_FUNCID: Function Identification Tuple .....................................................72
Table 3-35 CISTPL_JEDEC_C and CISTPL_JEDEC _A: JEDEC Identifier Tuples...................74
Table 3-36 CISTPL_MANFID: Manufacturer Identification Tuple ............................................76
Table 3-37 CISTPL_VERS_1: Level 1 Version / Product Information Tuple .............................77
Table 3-38 CISTPL_BAR: CardBus PC Card Base Address Register Tuple ..............................79
Table 3-39 CISTPL_CFTABLE_ENTRY: Configuration Table Entry Tuple ...............................80
Table 3-40 CISTPL_CFTABLE_ENTRY_CB: CardBus PC Card Configuration Table Entry
Tuple..................................................................................................................................96
Table 3-41 CISTPL_CONFIG : 16-bit PC Card Configuration Tuple .......................................101
Table 3-42 CISTPL_CONFIG_CB: CardBus PC Card Configuration Tuple ............................105
Table 3-43 CISTPL_PWR_MGMNT: Function State Save/Restore Definition .........................107
Table 4Ð1 CISTPL_BATTERY: Battery Replacement Date Tuple.............................................110
Table 4Ð2 CISTPL_DATE: Card Initialization Date Tuple.......................................................111
Table 4Ð3 CISTPL_VERS_2: Level-2 Information Tuple...........................................................112
Table 4Ð4 CISTPL_BYTEORDER: Byte Order Tuple.................................................................115
Table 4Ð5 CISTPL_FORMAT and CISTPL_FORMAT_A: Format Tuples...............................116
Table 4Ð6 Format Tuple for Disk-like Regions...........................................................................117
Table 4Ð7 Format Tuple for Memory-like Regions.....................................................................119
Table 4Ð8 CISTPL_GEOMETRY: Geometry Tuple ....................................................................121
Table 4Ð9 CISTPL_SWIL: Software Interleave Tuple................................................................122
Table 5Ð1 CISTPL_ORG: Data Organization Tuple..................................................................126
Table 6Ð1 CISTPL_SPCL: Special Purpose Tuple .....................................................................129
1. I N T R OD U C T ION
1.1 Purpose
This specification provides information necessary for implementing the Card Information Structure
(CIS), or Metaformat, on PC Cards and for interpreting the metaformat for the purposes of
configuring and utilizing PC Cards.
1.2 Scope
It is recommended that all aspects of a PC Card which can be described in CIS be so described. Full
disclosure of a PC CardÕs characteristics in the CIS is a basic component of compatibility and
interchangeability.
© 1999 PCMCIA/JEIDA 1
METAFORMAT SPECIFICATION
2. O V E R V IE W
© 1999 PCMCIA/JEIDA 3
OVERVIEW
Byte 0 of each tuple contains a tuple code. A tuple code of FFH is a special mark indicating that
there are no more tuples in the chain. Byte 1 of each tuple contains a link to the next tuple in the
chain. If the link field is zero, then the tuple body is empty. If the link field of a 16-bit PC Card
contains FFH, then this tuple is the last tuple in its chain.
There are two ways of marking the end of a tuple chain for 16-bit PC Cards: a tuple code of FFH, or
a tuple link of FFH. There is only one way of marking the end of the tuple chain for CardBus PC
Cards: A tuple code of FFH. (See also 2.3.8 16-bit PC Card Tuple Chain Processing and 2.3.9
CardBus PC Card Tuple Chain Processing.)
The use of an FFH link value is allowed in 16-bit PC Cards for backward compatibility, but it is
recommended to use the End of Chain tuple. System software must use the link field to validate
tuples. No 16-bit PC Card tuple can be longer than 257 bytes: 1 byte TPL_CODE + 1 byte
TPL_LINK + FFH byte tuple body (and this 257 byte tuple ends the chain). No CardBus PC Card
tuple can be longer than 256 bytes: 1 byte TPL_CODE + 1 byte TPL_LINK + FEH byte tuple body.
Some tuples provide a termination or stop byte that marks the end of the tuple. In this case, the
tuple can effectively be shorter than the value implied by its link field. However, software must not
scan beyond the implied length of the tuple, even if a termination byte has not been seen.
4 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
until the entire CIS is recorded. On x86 architecture machines, this byte order is equivalent to the
native order; other machines may need to reorder the bytes when reading or writing the CIS.
The basic compatibility layer does not impose any particular byte order on non-header portions of
the card. However, some data-format layers impose further requirements.
© 1999 PCMCIA/JEIDA 5
OVERVIEW
Note: The use of odd bytes to represent tuple data is controlled by the logical-
address space in which the tuple resides, not by the type of memory
actually used to record the tuple. If the tuple is intended to be accessed in
Attribute Memory space, it must be stored only in the even bytes. If it is
intended to be accessed in Common Memory space, it must be stored in
both even and odd bytes following a longlink target.
There is a function-specific Card Information Structure for each function on a Multiple Function PC
Card. The following tuples are contained in each function-specific CIS.
6 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
© 1999 PCMCIA/JEIDA 7
OVERVIEW
8 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
© 1999 PCMCIA/JEIDA 9
OVERVIEW
Column Entries:
R Ñ Recommended
M Ñ Mandatory
NA Ñ Never, Not Applicable
S Ñ Single Instance Only per Function-Chain; or Main-Chain in 16-bit MFC; or per region/partition definition;
or base address register description
1 Ñ first published PCMCIA 1.0 / JEIDA 4.0
2 Ñ first published PCMCIA 2.0 / JEIDA 4.1
3 Ñ first published PCMCIA 2.1 / JEIDA 4.2
4 Ñ first published PC Card Standard, February 1995
5 Ñ recommended for use as appropriate
6 Ñ required in cards capable of operating at voltages other than 5 V VCC
7 Ñ recommended for use when applicable values (IDs and extensions) exist
8 Ñ not recommended, requires NULL Device Info fields
10 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
© 1999 PCMCIA/JEIDA 11
OVERVIEW
12 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
© 1999 PCMCIA/JEIDA 13
OVERVIEW
14 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
© 1999 PCMCIA/JEIDA 15
METAFORMAT SPECIFICATION
3 . B A S I C C O M P AT I B I L I T Y ( L AY E R 1 )
This layer is the cornerstone of the Standard. All PC Cards shall have at least a rudimentary Card
Information Structure.
The CIS on 16-bit PC Cards must start at address zero of the card's Attribute Memory space.
Each function of a CardBus PC Card has a CIS Pointer field in configuration space which points to a
CISTPL_LINKTARGET tuple which begins the CIS for that function. (See also the Electrical
Specification.)
© 1999 PCMCIA/JEIDA 17
BASIC COMPATIBILITY (LAYER 1)
The checksum is calculated by summing the bytes of the selected region using modulo 256. The
result must match the value stored in byte 6 of the checksum tuple.
TPLCKS_ADDR contains the offset, relative to the start address of this tuple, of the region to be
checksummed. The address is a signed, 2-byte integer. Negative values indicate locations prior to
the checksum tuple; positive values indicate locations after the checksum tuple. The exact
interpretation depends on the address space containing the tuple.
TPLCKS_LEN contains the number of bytes to be checksummed. The number is expressed as an
unsigned, 2-byte integer.
If the tuple appears in the Common Memory space of a 16-bit PC Card or in any of the spaces of a
CardBus PC Card, the checksum is calculated in the obvious way. The contents of TPLCKS_ADDR
(as a signed integer) are added to the base address of the tuple, yielding the target address. Starting
at the target address, the algebraic sum is calculated of all the bytes included in the range. Then,
the low-order 8-bits of this sum are compared to the value stored in TPLCKS_CS. If identical, the
region of tuple memory covered by the checksum passes the checksum test.
If the tuple appears in the Attribute Memory space of a 16-bit PC Card, the checksum operation is a
bit more complicated. Again, the data structures are recorded in such a way as to minimize the
differences between Attribute space representation and Common Memory representation. To form
the target address, 2 * offset is added to the base byte target address of the tuple. Then, the algebraic
sum is formed of the even bytes in the address range [i.e., target, target + 2 * length-1], ignoring the
odd bytes. The low-order 8-bits of this sum is then compared to the value stored in TPLCKS_CS.
18 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
Upon encountering this tuple, system software shall take one of the following actions.
· If a longlink tuple was encountered previously in this chain, continue tuple processing at the
location specified in the longlink tuple.
· If processing a tuple chain (other than the primary CIS tuple chain of a 16-bit PC Card), and no
longlink tuple was seen in this chain, then no tuples remain to be processed.
· If processing the primary CIS tuple chain of a 16-bit PC Card (the chain starting at address 0 in
Attribute Memory space), and a CISTPL_NO_LINK tuple was encountered previously in this
chain, no tuples remain to be processed.
· If processing the primary CIS tuple chain of a 16-bit PC Card (the chain starting at address 0 in
Attribute Memory space), and neither a longlink nor a no-link tuple were seen in this chain,
then continue tuple processing as if a longlink to address 0 of Common Memory space were
encountered. For validation of the implied longlink to Common Memory, as with an explicit
CISTPL_LONGLINK_C tuple, the tuple chain in Common Memory must begin with a valid
CISTPL_LINKTARGET tuple.
© 1999 PCMCIA/JEIDA 19
BASIC COMPATIBILITY (LAYER 1)
This tuple chain shall appear at most once in a Card Information Structure and always in a tuple
chain present in direct accessed Attribute or Common Memory space.
20 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
© 1999 PCMCIA/JEIDA 21
BASIC COMPATIBILITY (LAYER 1)
WA R N IN G
The 16-bit PC Card longlink tuples (_A, _C and _MFC) are not applicable to,
and must never be used by, CardBus PC Cards.
The tuple code byte selects the new address space. For example, CISTPL_LONGLINK_A indicates
that the target is in Attribute Memory space; CISTPL_LONGLINK_C indicates Common Memory
space.
A given tuple chain shall contain at most one longlink tuple. The longlink tuple need not appear as
the last tuple in a given chain because all remaining tuples in the current chain will be processed
before the link is honored.
Software shall verify that the longlink tuple points to a linktarget tuple before processing the target
chain. Because a longlink tuple may point to uninitialized RAM, it is important that software simply
reject target tuple chains that do not begin with a linktarget tuple.
The TPLL_ADDR field of a CISTPL_LONGLINK_A tuple is interpreted in the same manner as its
TPL_LINK field, only even bytes in the address range are counted. To compute the address of the
linktarget in the cardÕs Attribute Memory space, multiply the value in the TPLL_ADDR field by
two.
22 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
The Address Space Indicator field indicates in which of this function's address spaces the tuple chain is
located. The encoding for this field is given below:
Address Space Indicator field
Value Meaning
0 Tuple chain is in device dependent configuration space.
1-6 The tuple chain is in the memory address space governed by one of the six Base Address
Registers. For example, if the value is 2, then the tuple chain is in the memory address space
governed by Base Address Register 2.
7 The tuple chain is in the Expansion ROM space.
The offset into the address space indicated by the Address Space Indicator field is given by the 32 bit
value where the three low order bits, 0 through 2, are zero and the high order bits, 3 through 31,
are given by the Address Space Offset field. An address at which a tuple chain begins will have an 8
byte alignment. Appropriate values for the various spaces are given below:
© 1999 PCMCIA/JEIDA 23
BASIC COMPATIBILITY (LAYER 1)
24 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
Table 3-7 CISTPL_LONGLINK_MFC: The Multiple Function 16-bit PC Card Link Tuple
Byte 7 6 5 4 3 2 1 0
0 TPL_CODE CISTPL_LONGLINK_MFC (06H)
1 TPL_LINK Link to next tuple (at least 6, 1 plus 5 bytes per function)
2 TPLMFC_NUM Number of sets of configuration registers for individual functions
3 TPLMFC_TAS1 CIS Target address space for first function on the 16-bit PC Card
(00 = Attribute, 01 = Common)
4áá7 TPLMFC_ADDR1 Target address, stored as an unsigned long, low order byte first
8 TPLMFC_TAS2 CIS Target address space for second function on the 16-bit PC Card
9áá12 TPLMFC_ADDR2 Target address, stored as an unsigned long, low order byte first
13áán Additional TPLMFC_TASn and TPLMFC_ADDRn entries for any additional functions on the 16-
bit PC Card. If there are only two (2) sets of configuration registers, only the prior fields shall be
present.
Note: A given tuple chain shall contain at most one longlink tuple (_A, _C, _CB or _MFC).
© 1999 PCMCIA/JEIDA 25
BASIC COMPATIBILITY (LAYER 1)
A given tuple chain shall contain at most one no-link tuple. No-link tuples and longlink tuples are
mutually exclusive. A given chain may contain either a no-link tuple, or a longlink tuple, but not
both.
26 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
© 1999 PCMCIA/JEIDA 27
BASIC COMPATIBILITY (LAYER 1)
28 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
The tuple code CISTPL_DEVICE indicates that this tuple describes Common Memory space. The
code CISTPL_DEVICE_A indicates that this tuple describes Attribute Memory space.
See section 3.2.2.1 Device Info Fields, for the Device Info field definition.
© 1999 PCMCIA/JEIDA 29
BASIC COMPATIBILITY (LAYER 1)
30 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
If there are no devices in a 16-bit PC Card's common memory space, the Device Type Code shall be
DTYPE_NULL. If the devices at offset zero in the 16-bit PC Card's common memory space are
intended for function specific use, such as memory mapped I/O registers or communications
buffers, the Device Type Code shall be DTYPE_FUNCSPEC.
The extended device type, if specified, is reserved for future use. Bit 7, if set, indicates that the next
byte is also an extended type byte. The chain of extended type bytes can continue indefinitely. The
end is marked by an extended device type byte with bit 7 reset.
© 1999 PCMCIA/JEIDA 31
BASIC COMPATIBILITY (LAYER 1)
Note: The values given in the Device Speed fields of CISTPL_DEVICE and
CISTPL_DEVICE_A tuples must define the worst case cycle time required
by a 16-bit PC Card without the use of the WAIT# signal. This is required
by PCMCIA 1.0 / JEIDA 4.0 host platforms that pre-date the definition of
the WAIT# signal. 16-bit PC Cards that support the use of the WAIT#
signal shall include the CISTPL_DEVICE_OC tuple to define 5 volt device
speed with the WAIT# signal honored.
If the extended speed byte is zero, then the byte should be ignored.
The EXT bit, if set, indicates that an additional extended speed byte follows. The meaning of that
byte is not presently defined. However, the string of extended speed bytes may be arbitrarily long.
It extends through (and includes) the first byte with bit 7 reset.
32 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
The extended device speed mantissa and exponent specify the speed of the device, as follows:
Extended Device Speed Codes
Mantissa Exponent part
Code Meaning Code Meaning
0H Reserved 0H 1 ns
1H 1.0 1H 10 ns
2H 1.2 2H 100 ns
3H 1.3 3H 1 ms
4H 1.5 4H 10 ms
5H 2.0 5H 100 ms
6H 2.5 6H 1 ms
7H 3.0 7H 10 ms
8H 3.5
9H 4.0
AH 4.5
BH 5.0
CH 5.5
DH 6.0
EH 7.0
FH 8.0
Bits 3 through 7 represent the number of address units. A code of zero indicates 1 unit; a code of 1
indicates 2 units; and so on.
For a device size > 64 MBytes the device size byte shall indicate a size of 64 MBytes. The tuple
CISTPL_EXTDEVICE shall indicate the exact divice size when device size exceeds 64 MBytes.
If the device size byte is FFH, then this entry should be treated as an end marker for the device
information tuple. The device type and speed information encoded for this entry should be ignored.
© 1999 PCMCIA/JEIDA 33
BASIC COMPATIBILITY (LAYER 1)
34 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
WAIT# signal during operation. Host systems which do not support the WAIT# signal, PCMCIA
1.0 / JEIDA 4.0 and earlier, shall not use timing data provided in a tuple with the MWAIT field set
(1).
When the MWAIT field is reset (0), the timings given represent worst case cycle times and shall be
used by host systems which do not support the WAIT# signal. Note that the VccUsed field shall not
indicate 5 V VCC operation because this condition, MWAIT reset (0) and 5 V VCC, is indicated using
the CISTPL_DEVICE and CISTPL_DEVICE_A tuples
The VccUsed field indicates a VCC voltage at which the PC Card can be operated. A PC Card
capable of operating at more than one VCC voltage shall have a separate instance of the Other
Conditions tuple, CISTPL_DEVICE_OC or CISTPL_DEVICE_OA, for each such operating voltage.
VccUsed field
Value Meaning
00B 5 volt VCC operation.
01B 3.3 volt VCC operation.
10B Reserved for X.X volt VCC operation.
11B Reserved for CardBus PC Card Y.Y volt VCC operation.
The Device Info fields for the CISTPL_DEVICE_OC and CISTPL_DEVICE_OA tuples have the same
definition and format as the CISTPL_DEVICE and CISTPL_DEVICE_A tuples. The fields are defined
in section 3.2.2.1 Device Info Fields (For Tuples CISTPL_DEVICE, CISTPL_DEVICE_A).
3.2.2.1Device Info Fields
© 1999 PCMCIA/JEIDA 35
BASIC COMPATIBILITY (LAYER 1)
If the Device Geometry Info field is used, the entire six byte entry must be filled out for each entry in
the corresponding CISTPL_DEVICE, CISTPL_DEVICE_OC, CISTPL_DEVICE_OA or
CISTPL_DEVICE_A, even for devices without any special geometry (e.g. ROM, RAM), so that a 1:1
correspondence between Device Info and Device Geometry Info fields of the described regions exists.
The table length is 6 * k + 2 bytes, where k = the number of devices described. Bit 7 of
36 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
DGTPL_HWIL, the last (sixth) byte of each detailed Device Geometry Info field, is reserved for future
use and must be reset (0). When set (1) this bit indicates that an extended device geometry
information structure follows.
The DGTPL_BUS tuple has a value of n = 2 for 16 bit bus width of 16-bit PC Cards regardless of
word or byte wide operation (byte wide operation is logically low and high byte sequencing of a
fundamental 16 bit wide card internal bus) and n = 3 for the 32 bit bus width of CardBus PC Cards.
The purpose of this entry is to accommodate possible wider width cards of the future and/or to
allow file systems to use this tuple structure in non-card environments (e.g. system resident
memory arrays using the same file system).
Note: The device geometry info is normalized to byte equivalent geometry to
simplify the context for the O/S or driver level software which utilizes it.
Subsystems using internal bus widths less than 8 bits wide must employ
low-level drivers which accept 8 bit minimum data from the higher levels.
The DGTPL_EBS, DGTPL_RBS, and DGTPL_WBS (address increment or bus operation based
values) are multiplicative of the DGTPL_BUS entry (denoting bus width) to define the non-
interleaved physical memory erase, read, and write block sizes in bytes, respectively. The
DGTPL_HWIL value for cards employing hardware interleaved (i.e., ÒbanksÓ of) memory arrays or
subsystems (where DGTPL_HWIL - 2) is multiplicative of the resulting non-interleaved erase, read,
and write geometry. The product of these three geometry info layers yields the resulting card level
minimum physical block geometry.
DGTPL_PART is a special partitioning info field based on physically distinct segments of the
memory array(s) such that data are not affected by read/write/erase operations in adjacent
partitions. It is multiplicative of the resulting erase geometry (only) and defines the minimum
partition size allowed for that card. DGTPL_PART: p = 1 where array partitioning at erase block
boundaries is allowed (i.e., there are no special partitioning requirements).
Examples:
1. A particular non-interleaved (DGTPL_HWIL: q = 1) 16-bit PC Card based memory array (DGTPL_BUS: n = 2) employs
a new EEPROM type of byte-wide memory device which erases in 4K bytes (DGTPL_EBS: n = 13) and writes in 256
byte pages (DGTPL_WBS: n = 9). It has no special partitioning requirements (DGTPL_PART: p = 1). The resulting
physical geometry is:
Bus x Block x Interleave
ERASE Geometry = 2 x 4096 x1 = 8192 bytes
READ Geometry = 2x 1 x1 = 2 bytes
WRITE Geometry = 2x 256 x1 = 512 bytes
© 1999 PCMCIA/JEIDA 37
BASIC COMPATIBILITY (LAYER 1)
Table 3-14 CISTPL_EXTDEVICE: The Extended Common Memory Device information Tuples
Byte 7 6 5 4 3 2 1 0
0 TPL_CODE CISTPL_EXTDEVICE (09H)
1 TPL_LINK Link to next tuple (at least m-1)
2 Memory Paging Info (1 or more bytes)
n Device Info 1 (2 or more bytes)
Device Info 2 (2 or more bytes)
É (etc.)
Device Info n (2 or more bytes)
m FFH (marks end of Device Info field)
38 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
The 3 fields for the single defined byte are defined as follows:
Memory-Paging-Info field
7 6 5 4 3 2 1 0
EXT Number of Address Extension Bits - 1 Page Address Page Size
Location
EXT Additional Bytes Each is present only if EXT bit is set in previous byte
The Page Size field indicates the page size for Common Memory.
The Page Address Location bit applies only for 64 MByte page size and denotes which Function
Configuration Register provides a set of address extension bits for accessing > 64 MBytes of
Common Memory. The Page Address Location bit indicates the choice of either the Configuration
Option Register or Address Extension Register 0 as the source for the address extension bits.
For a 32 MByte page size Address Extension Registers 0 and 1 provide the address extension bits for
addressing a 32 MByte memory page, while for a 16 MByte page size Address Extension Registers
0, 1, 2 and 3 contain the address extension bits to address a 16 MByte memory page.
The Memory Paging-Info fieldÕs Page Size and Page Address Location sub-fields indicate the page size
and Function Configuration Registers as follows:
For the Function Configuration Register(s) providing an address extension the Number of Address
Extension Bits - 1 field indicates the actual number of bits in the address extension provided by the
register(s). The number of actual address extension bits is represented as a binary value equal to the
number of actual address extension bits minus 1; thus, 0 would imply that an address extension
consisted a single address extension bit.
© 1999 PCMCIA/JEIDA 39
BASIC COMPATIBILITY (LAYER 1)
For a device memory size > 64 MBytes the following definition holds:
Device Info fields
Byte 7 6 5 4 3 2 1 0
n Device ID one or more (m) bytes of Device ID fields
n+m Device Size Extender Indicates > 64 MBytes of device memory space
0 0 0 0 ExtBytes 1 1 1
ExtBytes = 0 signifies that 1 Device Extended Size byte and then the Device Final Size byte follow extender byte.
ExtBytes = 1 signifies that 2 Device Extended Size bytes and then the Device Final Size byte follow extender byte.
All other bit combinations of bits 7 through 0 indicate that this byte is the single Device Size byte defining a £ 64 MByte
device memory space (i.e., is not extender byte) and that no further device size bytes follow.
n+m+1 P7 P6 P5 P4 P3 P2 P1 P0
Device Extended Size byte #1 Bits 0 through 7 of P (`64 MByte pageÕ multiplier lower byte)
n+m+2 P15 P14 P13 P12 P11 P10 P9 P8
Device Extended Size byte #2 Bits 8 through 15 of P (`64 MByte pageÕ multiplier upper byte)
n + m + (s-1) Device Final Size Last of three or four bytes (s). This byte codes an amount of device memory up to a
maximum of 64 MBytes.
# of address units - 1 Size Code
40 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
When the device size code = 7 (and reserved bits 7 through 4 of the Device Size byte = 0), then a >
64 MByte device memory size is indicated (see following section).
The Size Code field ranges in value from 0 to 7 with codes 0 to 6 used to determine £ 64 MByte
device memory size The Size Code field is defined as follows:
Device Size Codes
Code Units Max Size
0 512 bytes 16 Kbytes
1 2 Kbytes 64 Kbytes
2 8 Kbytes 256 Kbytes
3 32 Kbytes 1 MByte
4 128 Kbytes 4 MBytes
5 512 Kbytes 16 Mbytes
6 2 MBytes 64 Mbytes
7*
ExtBytes = 0 Identifies byte as Device Size Extender byte for > 64 MByte
device memory size and indicates that 1 Device Extended
Size byte and the Device Final Size byte follow next in the
tuple sequence (see following section)
ExtBytes = 1 Identifies byte as Device Size Extender byte for > 64 MByte
device memory size and indicates that 2 Device Extended
Size bytes and the Device Final Size byte follow next in the
tuple sequence (see following section)
Device Size [7::4] Reserved (= 0)
* Code 7 is defined for a memory device size > 64 MBytes. For a code 7 the Device Size byte is
redefined to be the Device Size Extender byte, the first of a sequence of bytes defining > 64 MByte
device size. The Device Size Extender byte contains the ExtBytes field which is not defined for the
Device Size byte.
If the Device Size byte is FFH, then this entry should be treated as an end marker for the device
information tuple. The device type and speed information encoded for this entry should be ignored.
© 1999 PCMCIA/JEIDA 41
BASIC COMPATIBILITY (LAYER 1)
Bits 0 - 2 of the Device Size Extender byte must all = 1 in order to indicate device size extension
beyond 64 MBytes. If bits 0 -2 do not all = 1, then they represent the Size Code field for a device
memory size < 64 MBytes (see the previous section).
If the Device Size Extender byte is FFH, then this entry should be treated as an end marker for the
device information tuple. The device type and speed information encoded for this entry should be
ignored.
When the single-bit ExtBytes field (bit 3) of the Device Size Extender byte = 0, a single Device
Extended Size byte and then a Device Final Size byte follow next in line after the Device Size Extender
byte.
Device memory size is calculated using the single Device Extended Size byte and the Device Final
Size byte as follows:
(P )* 64 MBytes + Device Final Size
where ,
P = the binary-encoded value provided by the Device Extended Size byte
and
Device Final Size = the device size coded in the Device Final Size byte.
The Device Final Size byte which follows the Device Extended Size byte is formatted identical to the
single Device Size Byte used for < 64 MByte device memory sizes. Thus, 64 MBytes, obtained with a
device size code of 6, is the maximum value which can be indicated for Device Final Size. The
Device Final Size byte should not contain a device size code of 7 (where the device size codes are
defined in the table of the previous section).
When the single-bit ExtBytes field (bit 3) of the Device Size Extender byte = 1, the Device Size
Extender byte indicates that 2 Device Extended Size bytes and then a Device Final Size byte follow
next in line after the Device Size Extender byte. The order and format of the 2 Device Extended Size
bytes are illustrated in section 3.2.4.
Device memory size is calculated using the 2 Device Extended Size bytes and the Device Final Size
byte as follows:
(P )* 64 MBytes + Device Final Size
where:
P = the binary-encoded value provided by the Device Extended Size bytes
and
Device Final Size = the device size coded in the Device Final Size byte.
The Device Final Size byte which follows the 2 Device Extended Size bytes is formatted identical to the
single Device Size Byte used for < 64 MByte device memory sizes. Thus, 64 MBytes, obtained with a
device size code of 6, is the maximum value which can be indicated for Device Final Size. The
Device Final Size byte should not contain a device size code of 7 (where the device size codes are
defined in the table of the previous section).
Regardless of the device size stipulated by the Device Extended Size byte(s) immediately preceding
the Device Final Size byte, if the Device Final Size byte is FFH, then this entry should be treated as
an end marker for the device information tuple. The device type and speed information encoded for
this entry should be ignored.
42 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
© 1999 PCMCIA/JEIDA 43
BASIC COMPATIBILITY (LAYER 1)
If a 16-bit PC Card contains a 576 Mbyte Common Memory area consisting of 128 MBytes of ROM
memory, followed by a 128 MByte empty (null) area, followed by 320 MBytes of Flash memory,
then a software header block might be laid out as follows using 16 MByte pages:
/byte[0]: (CISTPL_DEVICE, /*01H*/
/byte[1]: /*link*/ 7,
/byte[2]: /*type/speed */ DTYPE_ROM| DSPEED_100NS,
/byte[3]: /*device size ¾ units/code Ð 64 MBytes*/ ((1Fh<<3) | 6)
/byte[4]: /*type/speed ¾ no device present*/ DTYPE_NULL |
DSPEED_NULL,
/byte[5]: /*device size ¾ units/code Ð 64 MBytes*/ ((1Fh<<3) | 6)
/byte[6]: /*type/speed*/ DTYPE_FLASH | DSPEED_200NS,
/byte[7]: /*device size ¾ units/code Ð 64 MBytes*/ ((1Fh<<3) | 6)
/byte[8]: /*end of tuple*/ FFh
);
/byte[9]: (CISTPL_EXTDEVICE, /*09H*/
/byte[10]: /*link*/ Eh,
/byte[11]: /*number of address extension bits/page address
location/page size*/ ((6<<3) | 2)
/byte[12]: /*type/speed*/ DTYPE_ROM | DSPEED_100NS,
/byte[13]: /*device size extender ¾ 1 device extended size byte */
7,
/byte[14]: /*device extended size byte*/ 01h,
/byte[15]: /*device final size byte ¾ units/code Ð 64 MBytes */
((1Fh<<3) | 6)
/byte[16]: /*type/speed ¾ no device present */ DTYPE_NULL |
DSPEED_NULL,
/byte[17]: /*device size extender ¾ 1 device extended size byte*/
7,
/byte[18]: /*device extended size byte*/ 01h,
/byte[19]: /*device final size byte ¾ units/code Ð 64 MBytes */
((1Fh<<3) | 6)
/byte[20]: /*type/speed*/ DTYPE_FLASH | DSPEED_200NS,
/byte[21]: /*device size extender ¾ 1 device extended size byte*/
7,
/byte[22]: /*device extended size byte*/ 04h,
/byte[23]: /*device final size byte ¾ units/code Ð 64 MBytes */
((1Fh<<3) | 6)
/byte[24]: /*end of tuple*/ FFh
);
/byte[25]: (CISTPL_CONFIG, /*1AH*/
/byte[26]: /*link*/ 8,
/byte[27]: /*field sizes -- TPCC_RFSZ/TPCC_RMSZ/TPCC_RASZ*/
2<<2 | 1,
/byte[28]: /*TPCC_LAST*/ 0,
/byte[29]: /*TPCC_RADR byte 0*/ 00h,
/byte[30]: /*TPCC_RADR byte 1*/ 40h,
/byte[31]: /*TPCC_RMSK byte 0*/ 00h,
/byte[32]: /*TPCC_RMSK byte 1*/ 54h,
/byte[33]: /*TPCC_RMSK byte 2*/ 01h,
/byte[34]: /* end of tuple*/ FFh
);
44 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
The TPLFE_TYPE field identifies the type of extended information provided about a function by this
tuple. This information varies depending on the function being extended.
The TPLFE_DATA field is the specific information being provided by the extended function. The
content of this field varies depending on the function being extended and the TPLFE_TYPE field.
Each of the function classes identified in the PC Card Functions table may be extended. Function
extension tuples are optional. If present, they relate to the function identification tuple preceding
them in the Card Information Structure.
Actual card identification extensions are to be determined by working groups concerned with
specific PC Card function classes. The following subsections describe specific extension tuples.
Multiple Function 16-bit PC Card function identification tuples are not extendible. The subsections
are numbered corresponding to the function code being extended. If a particular function may be
extended with multiple types of extended data, a further division is provided for each type of
extension data within the subsection.
© 1999 PCMCIA/JEIDA 45
BASIC COMPATIBILITY (LAYER 1)
PC Card Subfunction Id: Identifies a category of services provided by the modem and ISDN Terminal Adapter
Code Description
0 Identifies the extension tuple as a description of a serial port interface.
1 Identifies the extension tuple as a description of the capabilities of the modem interface, common to all
modem and ISDN Terminal Adapter services.
2 Identifies the extension tuple as a description of data modem services.
3 Identifies the extension tuple as a description of facsimile modem services.
4 Identifies the extension tuple as a description of voice encoding services.
5 Identifies the extension tuple as a description of the capabilities of the data modem interface.
6 Identifies the extension tuple as a description of the capabilities of the facsimile modem interface.
7 Identifies the extension tuple as a description of the capabilities of the voice modem interface.
8 Identifies the extension tuple as a description of a serial port interface for data modem services.
9 Identifies the extension tuple as a description of a serial port interface for facsimile modem services.
10 Identifies the extension tuple as a description of a serial port interface for voice modem services.
11 Identifies the extension tuple as a description of ISDN Terminal Adapter services.
12 Identifies the extension tuple as a description of the capabilities of ISDN Terminal Adapter services.
13 Identifies the extension tuple as a description of a serial port interface for ISDN Terminal Adapter
services.
14áá15 Reserved for future standardization.
46 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
interface: The type of the UART is described using the codes defined below
Code Description
0 Indicates that an 8250 UART is present.
1 Indicates that a 16450 UART is present.
2 Indicates that a 16550 UART is present.
3 Indicates that an 8251 USART is present.
4 Indicates that an 8530 SCC is present.
5 Indicates that an 85230 ESCC is present.
6áá31 Reserved for future standardization.
Field Description
space parity The protocol where the parity bit is always reset.
mark parity The protocol where the parity bit is always set.
odd parity The protocol where the parity bit is generated to create an odd number of set bits.
even parity The protocol where the parity bit is generated to create an even number of set bits.
5 bit char The encoding of data where each serial data unit contains 5 data bits.
6 bit char The encoding of data where each serial data unit contains 6 data bits.
7 bit char The encoding of data where each serial data unit contains 7 data bits.
8 bit char The encoding of data where each serial data unit contains 8 data bits.
1 stop bit: The use of one (1) stop bit encoded in each serial data unit.
1.5 stop bit The use of one and one-half (1.5) stop bits encoded in each serial data unit.
2 stop bit The use of two (2) stop bits encoded in each serial data unit.
When the field is set (1) the specified capability is supported, when the field is reset (0) the specified
capability is not supported.
© 1999 PCMCIA/JEIDA 47
BASIC COMPATIBILITY (LAYER 1)
Table 3-17 CISTPL_FUNCE: Modem and ISDN Interface Function Extension Tuple
Byte 7 6 5 4 3 2 1 0
0 TPL_CODE CISTPL_FUNCE (22H)
1 TPL_LINK Link to next tuple (09H minimum)
2 TPLFE_TYPE Type of extended data (01H, 05H, 06H, 07H, or 0CH)
3 TPLFE_FC Supported flow control methods.
4 TPLFE_CB Size in bytes of the DCE command buffer.
5áá7 TPLFE_EB Size in bytes of the DCE to DTE buffer.
8áá10 TPLFE_TB Size in bytes of the DTE to DCE buffer.
Field Description
tx xon/xoff DTE to DCE transmit flow control using DC1/DC3 for XON/XOFF
rx xon/xoff DCE to DTE receive flow control using DC1/DC3 for XON/XOFF
tx h/w flow DTE to DCE transmit flow control (CTS)
ctrl
rx h/w flow DCE to DTE receive flow control (RTS)
ctrl
transparent DCE to DCE flow control
When the field is set (1) the specified flow control method is supported, when the field is reset (0) the
specified flow control method is not supported.
48 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
© 1999 PCMCIA/JEIDA 49
BASIC COMPATIBILITY (LAYER 1)
Any additional fields which follow this value must be represented by an appropriate increase in the
value of the TPL_LINK field and are considered a description of manufacturer specific capabilities.
50 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
Field Description
Bell 103: 300 bps duplex modem standardized for use in the GSTN.
V.21: 300 bps duplex modem standardized for use in the GSTN.
V.23: 600/1200 baud modem standardized for use in the GSTN.
V.22A&B: 1200 bps duplex modem standardized for use in the GSTN and for telephone-type leased circuits.
Bell 212A: 2400 bps duplex modem standardized for use in the GSTN.
V.22bis: 2400 bps duplex modem using the frequency-division technique standardized for use on the GSTN and
on point-to-point two-wire leased telephone-type circuits.
V.26: 2400 bps modem standardized for use on 4-wire leased telephone-type circuits.
V.26bis: 2400 bps duplex modem standardized for use in the GSTN, specifying two alternate encoding
schemes (A or B).
V.27bis: 4800/2400 bps modem with automatic equalizer standardized for use on leased telephone-type
circuits.
V.29: 9600/7200/4800 bps modem standardized for use on point-to-point 4-wire leased telephone-type
circuits
V.32: A family of two-wire, duplex modems operating at data rates of up to 9600 bps for use on the GSTN or
on lease telephone-type circuits.
V.32bis: A family of two-wire, duplex modems operating at data rates of up 14400 bps for use on the GSTN or
on lease telephone-type circuits.
V.34: A modem operating at data signaling rates of up to 33,600 bps for use on the GSTN and on leased
point-to-point 2-wire telephone-type circuits.
V.90 A modem operating at data signaling rates of up to 56,000 bps (downstream) and 33,600 bps
(upstream) for use on the GSTN when connecting to a digital switched network.
When the field is set (1) the specified standard is supported, when the field is reset (0) the specified
standard is not supported.
Field Description
MNP 2-4: Error correction/detection protocols progressively defined in MNP levels 2, 3, and 4.
V.42/LAPM: Error correction/detection protocol defined by the ITU-T(CCITT).
When the field is set (1) the specified error correction/detection services and/or non ITU-T(CCITT)
modulation schemes is supported, when the field is reset (0) the specified error correction/detection
services and/or non ITU-T(CCITT) modulation schemes is not supported.
Field Description
V.42bis Data compression protocol defined by ITU-T(CCITT), requiring additional support of V.42.
MNP 5 Data compression protocol requiring the additional support of MNP 2, 3, or 4.
When the field is set (1) the specified compression protocol is supported, when the field is reset (0) the
specified compression protocol is not supported.
© 1999 PCMCIA/JEIDA 51
BASIC COMPATIBILITY (LAYER 1)
Field Description
AT1 The ÒActionÓ AT command group as defined in the Automatic Calling Equipment (ACE) command
standard ANSI/EIA/TIA 602.
AT2 The ÒACE/DTE Interface ParametersÓ AT command group as defined in the Automatic Calling
Equipment (ACE) command standard ANSI/EIA/TIA 602.
AT3 The ÒACE ParametersÓ AT command group as defined in the Automatic Calling Equipment (ACE)
command standard ANSI/EIA/TIA 602.
MNP AT The command mode convention available for DTE to DCE control and configuration of the available
MNP protocols.
V.25bis A specification of the formatting and response of DCE commands used in automatic calling
procedures over the 100-series interchange circuits.
V.25A A specification on test facilities relating to the implementation of the V.25bis automatic calling
procedure.
DMCL A command mode convention available for DTE to DCE control and configuration.
When the field is set (1) the specified command protocol is fully supported, when the field is reset (0)
the specified command protocol is not fully supported.
Field Description
BREAK The standardized BREAK represented by a sequence of 0 bits of a specified length.
+++ A sequence of characters used to return the modem to command mode.
User Defined Indicates support for a user defined escape character.
Escape Char.
When the field is set (1) the specified escape mechanism is supported, when the field is reset (0) the
specified escape mechanism is not available to return the modem to command mode.
52 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
Field Description
Caller Id A protocol which defines the encoding of specific information to allow the answering station to identify
the calling station.
When the field is set (1) caller id decoding services are provided.
When the field is reset (0) caller id decoding services are not provided.
Field Description
country code ITU-T(CCITT) numeric code assigned to the country targeted for distribution of this modem (Annex A,
Recommendation T.35).
A value of 0áá254 is the assigned ITU-T(CCITT) country code.
A value of 255 indicates the end of the variable length country code list if it does not extend to the end of
the tuple. The fields which follow this field when a value of 255 is present represent manufacturer
specific capabilities.
© 1999 PCMCIA/JEIDA 53
BASIC COMPATIBILITY (LAYER 1)
additional fields which follow this value must be represented by an appropriate increase in the
value of the TPL_LINK field and are considered a description of manufacturer specific capabilities.
Field Description
PC Card A value of 03 indicates that document facsimile services are described in this tuple.
Subfunction
Id
PC Card Indicates the EIA/TIA Service Class described in this tuple.
Subfunction Legal values are 01áá03, i.e., a value of 1 indicates support of EIA/TIA-578 Service Class 1.
Descriptor
A separate extension tuple is required for each Service Class described.
Field Description
DTE to The highest bit rate supported for communications with the DTE (v) in increments of 75 bps, where
UART the field value is computed by v/75.
maximum To compute the actual bit rate, the value of this field (represented in the formula as n) is multiplied by
data rate 75 (n * 75). A bit rate of 115,200 would be represented by a field value of 600H (1536).
54 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
Field Description
V.21-C2 300 bps duplex modem standardized for universal use in the GSTN
V.27ter 4800/2400 bps modem standardized for use in the GSTN
V.29 9600/7200/4800 bps modem standardized for use on point-to-point 4-wire leased telephone-type
circuits
V.17 14.4-K/12000/9600/7200 bps modem using trellis-coded modulation (TCM) standardized for use in the
GSTN
V.33 14.4-K/12000/9600/7200 bps modem using trellis-coded modulation (TCM) standardized for use on
point-to-point 4-wire leased telephone-type circuits
V.34 A modem operating at data signaling rates of up to 33,600 bps for use on the GSTN.
When the field is set (1) the specified standard is supported, when the field is reset (0) the specified
standard is not supported.
Field Description
T.3 Standardization of group 2 facsimile apparatus for document transmission.
T.4 Facsimile coding schemes and coding control functions for group 3 facsimile apparatus.
T.6 Facsimile coding schemes and coding control functions for group 4 facsimile apparatus.
error correct A mode of operation allowing error correction of document facsimile page data.
mode
voice request Interruption of the transmission of a facsimile image to allow voice contact with the remote station.
polling A request to receive or send a facsimile regardless of which station is considered the originator.
file transfer ITU-T(CCITT) defined procedure for transferring files between PC based facsimile DCE 's.
password A mode of operation allowing secured facsimile transmissions.
When the field is set (1) the feature is supported in the specified Service Class, when the field is reset
(0) the feature is not supported the specified Service Class.
© 1999 PCMCIA/JEIDA 55
BASIC COMPATIBILITY (LAYER 1)
Field Description
country code ITU-T(CCITT) numeric code assigned to the country targeted for distribution of this modem (Annex A,
Recommendation T.35).
A value of 0áá254 is the assigned ITU-T(CCITT) country code.
A value of 255 indicates the end of the variable length country code list if it does not extend to the end of
the tuple. The fields which follow this field when a value of 255 is present represent manufacturer
specific capabilities.
Field Description
PC Card A value of 04 indicates the presence of PCM voice encoding capabilities.
Subfunction See Serial Port Extension Tuple Type Codes for a list of all Subfunction Codes defined.
Id
PC Card The numeric value of the Service Class reserved for the definition of the extended voice AT
Subfunction commands (currently being standardized). Defined values are in the range 4áá15.
Descriptor The actual value used by the manufacturer shall be indicated in this field.
A value of zero (0) indicates that voice encoding services are provided using a protocol other than that
defined in the applicable Service Class.
56 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
Field Description
DTE to The highest bit rate supported for communications with the DTE (v) in increments of 75 bps, where
UART the field value is computed by v/75.
maximum To compute the actual bit rate, the value of this field (represented in the formula as n) is multiplied by
data rate 75 (n * 75). A bit rate of 115,200 would be represented by a field value of 600H (1536).
Field Description
Sample Rate The voice sampling rate supported in increments of a 1000 Hz.
in KHz Legal values are in the range 1áá99. A value of 0BH (11) indicates an 11 KHz sample rate.
A value of zero (0) indicates the end of the variable length list of supported sample rates. The next byte
represents the beginning of the variable length list of supported sample sizes.
Sample Rate The voice sampling rate supported in units of 1/100 KHz. The fractional component of 11.025 KHz is
in KHz/100 represented in this field as 02H. The final sample rate is derived by adding the fractional component in
this field to the whole number value in the field Sample Rate in KHz. A value of 11.025 KHz would be
derived by adding 0BH KHz or 11 KHz to 02H/100 KHz or 0.02 KHz for a value of 11.02 KHz in four
significant digits.
Legal values are in the range 1áá99.
Field Description
Sample Size The sample size supported in units of 1 bit.
in Bits Legal values are in the range 1áá15. The integer portion of 2.66 bits is represented in this field as 02H.
A value of zero (0) indicates the end of the variable length list of supported sample sizes. The next byte
represents the beginning of the variable length list of supported data compression methods.
Sample Size The sample size supported in units of 1/10 bits.
in Bits/10 Values in the range 0áá9 indicate the fractional component of the supported sample size in units of 1/10
bits. The final sample size is derived by adding the fractional component in this field to the whole
number value in the field Sample Size in Bits. A sample size of 2.66 bits would be derived by adding
02H or 2 bits from Sample Size in Bits to 06H or 0.6 bits from Sample Size in Bits/10 for a value of 2.6
bits in 2 significant digits.
© 1999 PCMCIA/JEIDA 57
BASIC COMPATIBILITY (LAYER 1)
58 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
Field Description
I.430: Basic user-network Interface - Layer 1 specification.
I.431: Primary rate user-network Interface - Layer 1 specification.
S/T S/T(Local Bus/Terminal) Interface Connector.
NT1 NT1(Network Termination 1).
When the field is set (1) the specified standard is supported, when the field is reset (0) the specified
standard is not supported.
© 1999 PCMCIA/JEIDA 59
BASIC COMPATIBILITY (LAYER 1)
Field Description
Q.921: ISDN user-network interface - Data link layer specification.
Q.922: ISDN Data Link Layer specification for Frame mode Bearer services.
When the field is set (1) the specified standard is supported, when the field is reset (0) the specified
standard is not supported.
Field Description
Q.931: ISDN user-network interface layer 3 specification for basic call control.
Q.933: ISDN Signalling specification for Frame mode basic call control.
When the field is set (1) the specified standard is supported, when the field is reset (0) the specified
standard is not supported.
Field Description
I.463: Support of data terminal equipments(DTEs) with V-series type interfaces by an ISDN. (V.110)
I.465: Support by an ISDN of data terminal equipment with V-series type interface with provision for
statistical multiplexing. (V.120)
When the field is set (1) the specified standard is supported, when the field is reset (0) the specified
standard is not supported.
Field Description
G.711: Pulse mode modulation(PCM) of voice frequencies.
G.721: 32Kbit/s adaptive differcential pulse code modulation (ADPCM).
When the field is set (1) the specified standard is supported, when the field is reset (0) the specified
standard is not supported.
60 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
Field Description
X.75: Packet-switched signaling system between public networks providing data services.
PPP: Piont-to-Point Protocol.
MLPPP MultiLink Piont-to-Point Protocol.
When the field is set (1) the specified standard is supported, when the field is reset (0) the specified
standard is not supported.
Field Description
G.722: 7 kHz audio-coding within 64 kbit/s.
G.725: System aspects for the use of 7 kHz audio codec within 64 kbit/s.
When the field is set (1) the specified standard is supported, when the field is reset (0) the specified
standard is not supported.
Field Description
H.261: Codec for audiovisual services at n x 384 kbit/s.
H.320: Narrow band visual telephone systems and terminal equipment.
When the field is set (1) the specified standard is supported, when the field is reset (0) the specified
standard is not supported.
© 1999 PCMCIA/JEIDA 61
BASIC COMPATIBILITY (LAYER 1)
Field Description
Packet mode Packet mode
Circuit mode Circuit mode
G4 FAX Group 4 Facsimile service
Aux. Number of supported Analog Ports.
Analog Port. 0 : no ports supported 6 : six ports supported 12 : twelve ports supported.
1 : one port supported 7 : seven ports supported 13 : thirteen ports supported
2 : two ports supported 8 : eight ports supported 14 : fourteen ports supported
3 : three ports supported 9 : nine ports supported 15 : fifteen ports supported
4 : four ports supported 10 : ten ports supported
5 : five ports supported 11 : eleven ports supported
When the field is set (1) the specified command protocol is fully supported, when the field is reset (0)
the specified command protocol is not fully supported.
Field Description
V.42bis Data compression protocol defined by ITU-T(CCITT),
When the field is set (1) the specified compression protocol is supported, when the field is reset (0) the
specified compression protocol is not supported.
62 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
Field Description
AT1 The ÒActionÓ AT command group as defined in the Automatic Calling Equipment (ACE) command
standard ANSI/EIA/TIA 602.
AT2 The ÒACE/DTE Interface ParametersÓ AT command group as defined in the Automatic Calling
Equipment (ACE) command standard ANSI/EIA/TIA 602.
AT3 The ÒACE ParametersÓ AT command group as defined in the Automatic Calling Equipment (ACE)
command standard ANSI/EIA/TIA 602.
V.25bis A specification of the formatting and response of DCE commands used in automatic calling
procedures over the 100-series interchange circuits.
V.25A A specification on test facilities relating to the implementation of the V.25bis automatic calling
procedure.
DMCL A command mode convention available for DTE to DCE control and configuration.
When the field is set (1) the specified command protocol is fully supported, when the field is reset (0)
the specified command protocol is not fully supported.
Field Description
BREAK The standardized BREAK represented by a sequence of 0 bits of a specified length.
+++ A sequence of characters used to return the modem to command mode.
User Defined Indicates support for a user defined escape character.
Escape Char.
When the field is set (1) the specified escape mechanism is supported, when the field is reset (0) the
specified escape mechanism is not available to return the modem to command mode.
Field Description
country code ITU-T(CCITT) numeric code assigned to the country targeted for distribution of this modem (Annex A,
Recommendation T.35).
A value of 0áá254 is the assigned ITU-T(CCITT) country code.
A value of 255 indicates the end of the variable length country code list if it does not extend to the end of
the tuple. The fields which follow this field when a value of 255 is present represent manufacturer
specific capabilities.
© 1999 PCMCIA/JEIDA 63
BASIC COMPATIBILITY (LAYER 1)
64 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
© 1999 PCMCIA/JEIDA 65
BASIC COMPATIBILITY (LAYER 1)
Table 3-24 CISTPL_FUNCE: Dual-Drive Card PC Card ATA Function Extension Tuple
Byte 7 6 5 4 3 2 1 0
0 TPL_CODE CISTPL_FUNCE (22H)
1 TPL_LINK Link to next tuple (03H minimum)
2 TPLFE_TYPE Extension type: Basic PC Card ATA Interface tuple
(02H for first drive and 03H for additional drive on card)
3 TPLFE_DATA
RFU RFU RFU D U S V
4 TPLFE_DATA
RFU I E N P3 P2 P1 P0
Field LAN_FEATURE is a code indicating the feature being described. The structure and content of
the DATA field varies according to LAN_FEATURE. A CIS may contain zero, one or more of these
tuples. If the LAN card doesn't support a feature it will lack the corresponding Extension Tuple. If it
supports more than one variation of a particular feature, it can have multiple extension tuples with
the same LAN_FEATURE value, each describing a different variant of the same feature. Defined
LAN_FEATURE values are:
TPLFE_TYPE: Values for LAN Functions
Value Description
1 LAN_TECH Technology type, e.g. ethernet, token ring, etc.
2 LAN_SPEED Raw bit rate
3 LAN_MEDIA Cable or transmission media
4 LAN_NID Node identification
5 LAN_CONN Connector standard
66 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
LAN_TECH_CODE Values
Value
1 Arcnet
2 Ethernet
3 Token Ring
4 Local Talk
5 FDDI/CDDI
6 ATM
7 Wireless
© 1999 PCMCIA/JEIDA 67
BASIC COMPATIBILITY (LAYER 1)
LAN_MEDIA_CODE Values
Value Description
1 Unshielded twisted pair
2 Shielded twisted pair
3 Thin coax
4 Thick coax
5 Fiber
6 Spread spectrum radio 902áá928 MHz
7 Spread spectrum radio 2.4 GHz
8 Spread spectrum radio 5.4 GHz
9 Diffuse infra red
10 Point to point infra red
LAN_CONN_CODE Values
Value Description
0 Open connector standard
1 Closed connector standard
68 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
Field ISDN_FEATURE is a code indicating the feature being described. The structure and content of
the DATA field varies according to ISDN_FEATURE. A CIS may contain zero, one or more of these
tuples. If the ISDN card doesn't support a feature it will lack the corresponding Extension Tuple. If it
supports more than one variation of a particular feature, it can have multiple extension tuples with
the same ISDN_FEATURE value, each describing a different variant of the same feature. Defined
ISDN_FEATURE values are:
TPLFE_TYPE: Values for ISDN Functions
Value Description
81H ISDN_TECH Technology type
Table 3-32: CISTPL_FUNCE: 1394 Serial I/O Bus Adapter Function Extension Tuple
Byte 7 6 5 4 3 2 1 0
0 TPL_CODE CISTPL_FUNCE (22H)
1 TPL_LINK Link to next tuple (05)
2 TPLFE_TYPE 1394_TYPE (01H)
3 TPLFE_ADAPTER 1394 Host Adapter type
4 TPLFE_POWER Power management data
5..6 TPLFE_SPEED Bus speed, Max raw bit rate
TPLFE_SPEED is a 16 bit integer containing the raw bus Mb/second rate.
The TPLFE_ADAPTER field identifies the type of IEEE-1394 host adapter implemented in the PC
Card. This data is used by the host to select and load the appropriate driver.
© 1999 PCMCIA/JEIDA 69
BASIC COMPATIBILITY (LAYER 1)
The TPLFE_POWER field describes the bus power requirements of the IEEE-1394 device. The device
may either source or sink power. The POWER_CLASS values associated with each code can be
found in the IEEE 1394-1995 Specification in Section 4.3.4.1 (Self-ID packet).
TPLFE_POWER Values
Value Description
0-7 (bit 0-2) Power class code of 1394
(bit 3-7) Reserved (0)
Table 3-33: CISTPL_FUNCE: USB Serial I/O Bus Adapter Function Extension Tuple
Byte 7 6 5 4 3 2 1 0
0 TPL_CODE CISTPL_FUNCE (22H)
1 TPL_LINK Link to next tuple (05)
2 TPLFE_TYPE USB_TYPE (02H)
3 TPLFE_ADAPTER USB Host Adapter type
4 TPLFE_POWER Power management data
5..6 TPLFE_SPEED Bus speed, Max raw bit rate
TPLFE_SPEED is a 16 bit integer containing the raw bus Mb/second rate.
The TPLFE_ADAPTER field identifies the type of USB host adapter implemented in the PC Card.
This data is used by the host to select and load the appropriate driver.
The defined TPLFFE_ADAPTER codes are listed below
TPLFE_ADAPTER Values
Value Description
00 USB/OHCI
01 USB/Universal
02-FFH Reserved
The TPLFE_POWER field describes the power source ability of the USB device. A Self Powered
device will neither require nor supply power on the USB bus. A Bus Powered device will draw itÕs
power from the USB bus within the constraints of the USB specification. Both of these power codes
are valid for USB functions only, not for a USB root or hub. A Low Power device can be a root
device or a hub. A Low Power device is capable of supplying only 100 mA of current per port. A
High Power device is either a root or hub capable of supplying up to 500 mA per port
The defined TPLFFE_POWER codes are listed below
70 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
TPLFE_POWER Values
Value Description
0 Self Powered
1 Bus Powered
2 USB low power source (100 mA)
3 USB high power source (500 mA)
4-FFH Reserved
© 1999 PCMCIA/JEIDA 71
BASIC COMPATIBILITY (LAYER 1)
72 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
The TPLFID_SYSINIT is a bit-mapped field. It allows PC Cards with standard system resources to
be installed during system initialization. The bit definitions are described in the following table: the
TPLFID_SYSINIT field.
TPLFID_SYSINIT field
7 6 5 4 3 2 1 0
RFU, must be zero (0). ROM POST
The POST bit indicates that the Power-On Self Test routines may attempt to configure the PC Card
during system initialization.
The ROM bit indicates the PC Card contains a system expansion ROM which may be installed
during system initialization. Information describing the ROM to be installed is in the TPCE_FS
Feature Selection Byte and related Memory Space Description Structure in a 16-bit PC Card
CISTPL_CFTABLE_ENTRY tuple or CardBus PC Card CISTPL_CFTABLE_ENTRY_CB tuple.
Only the specific function requiring POST or BOOT processing should have the appropriate bits set
in the System Initialization Byte.
© 1999 PCMCIA/JEIDA 73
BASIC COMPATIBILITY (LAYER 1)
The TPL_CODE field indicates to which device information tuple(s) the JEDEC identifier tuple
corresponds. If the value is 18H. CISTPL_JEDEC_C, the tuple corresponds to the CISTPL_DEVICE or
CSTPL_DEVICE_OC tuples. CardBus PC Cards use CISTPL_JEDEC_C tuples to indicate JEDEC
identifiers which correspond to CISTPL_DEVICE_OC tuples. If the value is 19H, CISTPL_JEDEC_A,
the tuple corresponds to the CISTPL_DEVICE_A or CISTPL_DEVICE_OA tuples (16-bit PC Cards
only).
JEDEC identifiers consist of two bytes. The first byte is the device manufacturer ID, as assigned by
JEDEC committee JC-42.4. This byte, if valid, must always have an odd number of bits set true. The
MSB (bit 7) of the byte is used as a parity bit to ensure that this constraint is met. The values of 0
and FFH are illegal JEDEC identifiers (due to their even parity). The value 0H indicates Òno JEDEC
identifier for this device.Ó
The second byte contains manufacturer specific information representing device type, programming
algorithm, and the like. If the manufacturer ID is 00H, then this byte is reserved and should be set
to zero.
JEDEC identifiers will only be provided for device info entries that indicate some kind of
programmable device. For all other entries, the corresponding JEDEC identifier field shall be
absent, i.e., set to 00H .
74 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
Examples:
If a 16-bit PC Card consists of four ÒCompany XÓ 27C512 devices, whose JEDEC identifier is
(hypothetically) manufacturer: 40H, device ID: 15H, then the header block might be laid out as
follows:
/byte[0]: (CISTPL_DEVICE,
/byte[1]: /*link*/ 3,
/byte[2]: /*type/speed*/ DTYPE_OTPROM | DSPEED_250NS,
/byte[3]: /*size: units/code*/ (1<<3) | 4)
/byte[4]: /*end of tuple*/ FFh
);
Note: In the above example, the size byte indicates that 2 x 128K bytes are
available, for a total of 256K. Programming software would use the JEDEC
information to determine that in fact 4, 64K x 8 devices are present. Since
16-bit PC Cards are always 16 bits wide, programming software could
therefore deduce the organization of such a card.
The following tuples might be used to describe a card with 256K of OTPROM and 16 KBytes of
RAM. In this example, RAM occupies locations [0 - 03FFFH], and ROM occupies locations [20000H -
5FFFFH] (for ease of decoding).
/byte[0]: (CISTPL_DEVICE,
/byte[1]: /*link*/ 7,
/byte[2]: /*type/speed*/ DTYPE_SRAM | DSPEED_100NS,
/byte[3]: /*size: units/code*/ ((1<<3) | 2)
/byte[4]: /*type/speed*/ DTYPE_NULL | DSPEED_NONE,
/byte[5]: /*size: units/code*/ ((0Dh<<3) | 2)
/byte[6]: /*type/speed*/ DTYPE_OTPROM | DSPEED_250NS,
/byte[7]: /*size: units/code*/ ((1<<3) | 4)
/byte[8]: /*end of tuple*/ FFh
);
/byte[9]: (CISTPL_JEDEC_C,
/byte[10]: /*link*/ 0FFh, /*(end of chain)*/
/byte[11]: /*RAM: no code*/ 0,
/byte[12]: /*no info*/ 0,
/byte[13]: /*hole: no code*/ 0,
/byte[14]: /*no info*/ 0,
/byte[15]: /*manufacturer ID*/ 40h,
/byte[16]: /*mfr's info*/ 15h,
);
© 1999 PCMCIA/JEIDA 75
BASIC COMPATIBILITY (LAYER 1)
The TPLMID_MANF field identifies the PC Card's manufacturer. New codes are assigned by both
PCMCIA and JEIDA. The first 256 identifiers (0000 H through 00FFH) are reserved for manufacturers
who have JEDEC IDs assigned by JEDEC Publication 106. Manufacturers with JEDEC IDs may use
their eight bit JEDEC manufacturer code as the least significant eight bits of their PC Card
manufacturer code. In this case, the most significant eight bits must be zero (0). For example, if a
JEDEC manufacturer code is 89H, their PC Card manufacturer code is 0089H.
The TPLMID_CARD field is reserved for use by the PC Card's manufacturer. It is anticipated that
the field will be used to store card identifier and revision information.
76 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
© 1999 PCMCIA/JEIDA 77
BASIC COMPATIBILITY (LAYER 1)
78 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
TPLBAR_ATTR field
Field Description
Address Space Same encoding as the Address Space Indicator field in the CISTPL_LONGLINK_CB tuple.
Indicator 0 illegal value - zero indicates CardBus PC Card configuration space.
1 Base Address Register 1.
2 Base Address Register 2.
3 Base Address Register 3.
4 Base Address Register 4.
5 Base Address Register 5.
6 Base Address Register 6.
7 the Expansion ROM Base Address Register.
Address space 0 Base Address Register is of type memory.
1 Base Address Register is of type I/O, Address Space Indicator allowed values 1áá5.
Prefetchable / When Address Space is set (1) this field is reserved and must be zero (0).
Cacheable When Address Space is reset (0):
0 neither prefetchable nor cacheable
1 prefetchable but not cacheable
2 both prefetchable and cacheable
3 Reserved value, do not use.
Below When Address Space is set (1) this field is reserved and must be zero (0).
1 MB When Address Space is reset (0):
0 no restriction on mapping location.
1 must locate in the first megabyte of system address space on x86 architecture
systems.
The TPLBAR_SIZE field indicates the size in bytes of the area mapped by the Base Address
Register or Expansion ROM Base Address Register identified by the Address Space Indicator field of
the TPLBAR_ATTR byte. All Base Address Register sizes are powers of two.
© 1999 PCMCIA/JEIDA 79
BASIC COMPATIBILITY (LAYER 1)
80 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
Field Description
Configuration- Contains the value to be written to the Card Configuration Register to enable the configuration
Entry-Number described in the tuple.
Default This bit indicates that this entry provides default values for succeeding entries until another entry
is encountered with its Default bit set.
1 The default conditions for following table entries are exactly those conditions specified
in this entry.
0 The default conditions are the conditions specified by the last entry encountered with its
default bit set.
Intface 0 No interface configuration byte is present following this byte.
When the default bit is set in this byte or no Configuration-Entry tuple has been scanned
with its default bit set then the standard, Memory Only Interface with READY, Write
Protect and Battery Voltage Detects are present at pins but not necessarily in a Pin
Replacement Register. WAIT# is not generated for memory cycles. (TPCE_IF value
of 70H)
Otherwise, the timing is specified by the most recently scanned Configuration-Entry
tuple with its default bit set.
1 An interface configuration byte follows this byte.
© 1999 PCMCIA/JEIDA 81
BASIC COMPATIBILITY (LAYER 1)
Field Description
Interface Type 0 Memory
1 I/O and Memory
2 Reserved for future standardization
3 Reserved for future standardization
4 Custom Interface 0
5 Custom Interface 1
6 Custom Interface 2
7 Custom Interface 3
8áá15 Reserved for future standardization
Interfaces 4 through 7 correspond to interfaces which are defined in CCSTPL_CIF subtuples in
the Configuration Tuple. The custom interface number is the relative position of the CCSTPL_CIF
subtuple used by this configuration in the set of CCSTPL_CIF subtuples within the Configuration
Tuple (CISTPL_CONFIG tuple, TPCC_SBTPL field) for this card.
BVDs Active BVD1 and BVD2 signals are active and should be recovered from the Pin Replacement Register
if not available on Pins 62 and 63.
WP Active Write Protect Status is active and should be recovered from the Pin Replacement Register if not
available on Pin 33.
READY Active READY Status Active and should be recovered from the Pin Replacement Register if not
available on Pin 16.
M Wait Required WAIT# Signal support required for Memory Cycles.
(This bit should not be set by I/O PC Cards that do not use Common Memory.)
The status bits BVDs Active, WP Active, READY Active, and M WAIT Required are TRUE when set
(1).
82 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
Field Description
Power The power supply requirements and load characteristics for this configuration are indicated.
There may be 0, 1, 2 or 3 fields following representing VCC, VPP[2::1], or VPP1 and VPP2
(individually) in that order. The coding is as follows:
0 No power-description structures, use the default.
1 VCC power-description-structure only.
2 VCC and VPP[2::1] (VPP1 = VPP2) power-description-structures.
3 VCC, VPP1 and VPP2 power-description-structures.
Timing 0 When the default bit is set in this tuple, or no Configuration-Entry tuple has been
scanned with its default bit set, then no timing is specified. READY may indicate busy
indefinitely, WAIT# will be active from 0 to 12 microseconds.
Otherwise, the timing is specified by the most recently scanned Configuration-Entry
tuple with its default bit set.
1 A timing-description structure is present following the power-description structure.
IO Space 0 When the default bit is set in this tuple, or no Configuration-Entry tuple has been
scanned with its default bit set, then no I/O space is used.
Otherwise, the I/O space requirement is specified by the most recently scanned
Configuration-Entry tuple with its default bit set.
1 An I/O space description structure is present following the timing description structure.
IRQ 0 When the default bit is set in this tuple, or no Configuration-Entry tuple has been
scanned with its default bit set, then no Interrupt is used.
Otherwise, the Interrupt request requirement is specified by the most recently scanned
Configuration Entry tuple with its default bit set.
1 An Interrupt request description structure is present following the I/O space description
structure.
Mem Space Memory address space mapping requirements for this configuration. There may be 0, 2, 4 or N
bytes of information following the Interrupt Request Structure. The coding is as follows:
0 When the default bit is set in this tuple, or no Configuration-Entry tuple has been
scanned with its default bit set, then no configuration dependent, memory address
space is used.
Otherwise, the memory address space requirement is specified by the most recently
scanned Configuration-Entry tuple with its default bit set.
1 Single 2-byte length specified. CardÕs Base Address is zero (0) and any host address
may be mapped. The length is specified in 256-byte units.
2 Length (2 bytes) and Card Address (2 bytes) specified. Host address equals card
address. The length and card address are each 2-bytes long and represent the number
of 256- byte pages which are mapped, and the starting page, which is mapped,
respectively. The length field appears before the card address field.
3 A memory space descriptor byte followed by one or more window descriptors is
present.
Misc 0 When the default bit is set in this tuple, or no Configuration-Entry tuple has been
scanned with its default bit set, then the miscellaneous fields are interpreted to be all
zero.
Otherwise, the miscellaneous fields are specified by the most recently scanned
Configuration-Entry tuple with its default bit set.
1 A miscellaneous fields structure is present following the memory space description
structure.
© 1999 PCMCIA/JEIDA 83
BASIC COMPATIBILITY (LAYER 1)
Each bit in the parameter selection byte indicates whether or not the corresponding parameter is
described by parameter definitions which follow that byte. The parameter definitions are present for
each logic-1 bit in the parameter selection byte. Each byte in a parameter definition, except the last
byte, has a logic-1 in bit 7 of the byte. The parameter definitions are ordered corresponding to bits 0
through 7 of the parameter selection byte.
1) Parameter Selection Byte
Parameter Selection Byte in Power Description Structure
7 6 5 4 3 2 1 0
RFU (0) Pdwn I Peak I Avg I Static I Max V Min V Nom V
Field Description
Nom V Nominal operating supply voltage. In the absence of other information the nominal operating
voltage has a tolerance of ±5%.
Min V Minimum operating supply voltage.
Max V Maximum operating supply voltage.
Static I Continuous supply current required.
Avg I Maximum current required averaged over 1 second.
Peak I Maximum current required averaged over 10 milliseconds.
PDwn I Power-down supply current required.
RFU Reserved for future standardization.
2) Parameter Definitions
Parameter definitions consist of a first byte containing a mantissa and exponent as described
below. Additional bytes appearing after the first byte serve to modify the initial value as
described below. An arbitrary number of additional bytes may be defined with the last byte in
the list having a 0 in bit 7. The next parameter definition, or the next field of the I/O tuple, is in
the byte immediately following the last byte of the parameter definition.
Parameter Definition in Power Description Structure
7 6 5 4 3 2 1 0
EXT Mantissa Exponent
EXT Extension
Extension bytes may be continued indefinitely until the first byte which contains a 0 in bit 7, which is the
final byte.
84 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
The Exponent of the Current and Voltage Values are given below:
Mantissa Value
0 1
1 1.2
2 1.3
3 1.5
4 2
5 2.5
6 3
7 3.5
8 4
9 4.5
AH 5
BH 5.5
CH 6
DH 7
EH 8
FH 9
Field Description
EXT When EXT is set (1), an extension byte follows this byte. Extension bytes may be concatenated
indefinitely. The final extension byte contains a 0 in the EXT field.
Extension The Extension field is defined as follows:
0áá63H Binary value for next two decimal digits to the right of the current value. (Note that
this range is 0áá99 decimal).
64Háá7CH Reserved.
7DH No connection (i.e., high impedance) permitted during sleep or power-down only.
(Must be last extension byte).
7EH Zero value required (Must be only extension byte). The voltage values given as
nominal values are to be ignored.
7FH No connection (i.e., high impedance) is required (Must be only extension byte).
The voltage values given as nominal values are to be ignored.
© 1999 PCMCIA/JEIDA 85
BASIC COMPATIBILITY (LAYER 1)
Operates over a VCC range of 2.5 to 7 volts. Operating current is 1 mA standby (static), 30 mA
average operating current. When in power down mode, the card requires only 75 mA. It uses a
VPP[2::1] of 12 volts ±5% at 50 mA peak which need not be connected during sleep or power down.
Power Description Example
86 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
The timing descriptions, when present, occur in the same order as the fields are listed below:
Field Description
WAIT Scale This field is the power of 10 scale factor to be applied to the MAX WAIT time in extended device
speed format which follows. The value 3 indicates that the WAIT# signal is not used and the MAX
WAIT Speed is not present following the timing byte.
READY Scale This field is the power of 10 scale factor to be applied to the MAX time in the Busy State for the
READY signal. A value of 7 indicates that READY is not used and no maximum time is present
following the timing scale factor byte.
Reserved This field is the power of 10 scale factor which is to be applied to a reserved time definition. A
Scale 7 value of 7 indicates that no initial or extended reserved speed bytes follow the READY extended
speed bytes.
Field Description
Bus 16/8 Recommended values for Bus 16/8 are:
Value Card-Related Description Host Requirements
00B Reserved.
01B Card supports 8-bit I/O only. Host must be able to access I/O on card
using byte accesses only on D0 through
All registers are accessible only with byte
D7. When 16-bit access is requested, two
accesses on D0 through D7.
cycles must be generated with the even
byte first.
10B All registers accessible by 16-bit hosts Host must access 16-bit registers using
which generate byte accesses for byte 16-bit accesses, and access 8-bit
registers and 16-bit accesses for word registers using 8-bit accesses. IOIS16# is
registers. Eight-bit accesses to 16-bit used to determine whether an access is
registers are not supported. Byte to an 8- or 16-bit register.
accesses to odd-byte registers may take
place on either D0 through D7 or D8
through D15.
11B All registers are accessible by both 8-bit This mode supports either 16-bit or 8-bit
or 16-bit accesses. If bit IOIS8 in the Card accesses, but 8-bit hosts can specify
Configuration and Status Register is set, operation as in mode 01, above, by setting
the host only supports 8-bit access and the IOIS8 bit in the Card Configuration
operation is as described for Bus 16/8 = and Status Register to 1. If IOIS8 is
01. If IOIS8 is zero, all registers can be cleared to zero either 8-bit or 16-bit
accessed using either 8-bit or 16-bit access is supported to all registers.
accesses.
© 1999 PCMCIA/JEIDA 87
BASIC COMPATIBILITY (LAYER 1)
Field Description
Range 0 The I/O Space Definition byte is the only byte needed for this definition. The card will
respond to all enabled I/O accesses and uses IOAddrLines of address to distinguish
among its I/O ports. The host can select any 2N boundary (N = IOAddrLines) for the
card and generate enables for accesses at this host base address, with the amount of
space also equal to 2N.
1 The I/O Space definition byte is followed by an I/O Range Descriptor byte, and one or
more I/O Address Range Description fields.
IOAddrLines Total number of address lines that are used by the card to determine when the card is selected.
0 When IOAddrLines is zero, a range must also be specified, and the card will respond to
all addresses presented to the card. The host is entirely responsible for when the card
is selected, and at what addresses the card is selected. The host must assign to the
card a portion of the address space which is at least as large as the number of bytes
indicated in the length field of the following range entry. The Base Address for the I/O
space (assigned to the card by the host) must begin on a 2N address boundary such that
2N is greater than the number of bytes indicated in the length field.
1áá26 When IOAddrLines is non-zero, the card performs address decoding to determine
when it is selected. In this case, the card and the host share the determination of when
a card is actually selected. The card must indicate in IOAddrLines the highest address
line (plus 1) which it decodes to determine when it has been selected. The card will
determine which I/O addresses are actually selected within the I/O space that it
decodes.
The host and the card then share the task of determining when the card is selected. The
host uses information provided by IOAddrLines and any range descriptions to
determine if Card Enables should be generated during I/O cycles. The card then
determines if it should respond to an address that has been enabled by the card
enables. The card returns the Input-Acknowledge signal to the host whenever the card
can actually respond to an I/O address on the bus.
27áá31 Reserved. (Beyond the 64 Megabyte I/O space.)
Recommended values for IOAddrLines are:
0 Card responds to all I/O cycles when CE's are true, and specifies the desired address
ranges to enable. It is suitable for all architectures.
N Where the card has 2(N-1) < I/O ports £ 2N, and can be placed on any multiple of 2N
boundary. It is suitable for any architecture. For example, if a card has 32 eight-bit I/O
ports and the card decodes 5 address lines (A4ááA0), then N = 5, but the card can still
be placed on a 32-byte I/O boundary; it does not need to be placed on a 64 byte I/O
boundary.
10 A 1 Kilobyte I/O address space. This is software compatible for decoding in the top 768
bytes of each 1 KByte of I/O space. This is the same as is done in the ISA and EISA
PC's.
16 Full decoding of 64 Kilobytes of I/O space. This is not compatible with EISA or ISA bus
architectures.
The I/O Range Descriptor byte is only provided if the Range bit in the I/O Space definition byte was
set to one. This byte determines how many I/O Address Range Description fields will follow and how
many bytes will be used to encode the Start of I/O Address Block and the Length of I/O Address Block
portion of each of the I/O Address Range Description fields that follow. Either the Start of I/O Address
Block or the Length of I/O Address Block, but not both portions of the descriptions can be eliminated
by encoding the respective size field as zero. Every I/O Address Range Description that follows must
have the same number of bytes as defined by the sum of the encoded sizes from the two size fields
in the I/O Range Descriptor byte.
88 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
Field Description
Number of I/O This field specifies how many I/O Address Range Description fields will follow the I/O Range
Address Ranges Descriptor byte. This value is encoded as one less than the number of descriptions. (A value of 0
indicates 1 I/O Address Range Description field, a value of 15 indicates 16 fields.)
Size of Address This field specifies how many bytes will be used to encode the Start of I/O Address block in each
of the I/O Range Description fields that follow.
0 address is not present in I/O Address Range Descriptions.
1 address is 1 byte long.
2 address is 2 bytes long.
3 address is 4 bytes long.
Size of Length This field specifies how many bytes will be used to encode the Length of I/O Address block in
each of the I/O Range Description fields that follow.
0 length is not present in I/O Address Range Descriptions.
1 length is 1 byte long.
2 length is 2 bytes long.
3 length is 4 bytes long.
The Size of Address and Size of Length fields may not both be zero (0).
When the Start of I/O Address Block field is not present, this indicates that the starting address of the
block is on an arbitrary 2 N boundary in the host space, where N is the number of address lines
defined by IOAddrLines.
© 1999 PCMCIA/JEIDA 89
BASIC COMPATIBILITY (LAYER 1)
[ x * 2(A)] áá [(x + 1) * 2A - 1]
[x * 2A] áá [x * 2A + L - 1]
When IOAddrLines <> 0, whether a base address is specified or not, the host can generate CE for
any combination of the upper (26 - IOAddrLines) address lines. If a base address is specified and
requires more address bits to represent than was specified by IOAddrLines, the full base address
indicates a desired I/O address range allocation which should be included in the decode by the
host. If a base address and IOAddrLines <> 0 are both specified, all recommended configurations
will have a base address value that is a multiple of 2(IOAddrLines).
When IOAddrLines <> 0 and Length L is specified, the host need not reserve any excess I/O address
space (2(IOAddrLines) - L bytes) for this PC Card. If L is not specified, the host must allocate all
2(IOAddrLines) bytes of address space to this PC Card.
In all cases, the host may allocate a larger address space than that indicated for a particular
configuration entry. The host may also allocate multiple (aliased) address ranges for a given PC
90 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
Card. If such aliased address ranges are allocated, a PC Card with IOAddrLines = 0 will respond to
all aliased ranges since it does not perform upper address line decoding. A PC Card with
IOAddrLines <> 0 will respond to other aliased ranges based on the number of decoded address
lines specified with IOAddrLines.
If multiple address ranges are specified in a configuration entry, the IOAddrLines value must span
the sum of all range lengths. For example, if an entry has a range with a length of 4 and a second
range of length 8, IOAddrLines must be at least 4 (4 bits of addressing are required to access all 12
bytes).
© 1999 PCMCIA/JEIDA 91
BASIC COMPATIBILITY (LAYER 1)
Field Description
Share The card contains interrupt sharing support logic in the Card Control and Status Register which
may be used to allow interrupt levels to be shared among several cards.
Pulse When this bit is one, the interrupt request pin in this mode may be pulsed low momentarily to
request an interrupt.
Level The Level Bit, when set, indicates that in this configuration the card's interrupt request pin can
remain asserted at the active low level until the interrupt is serviced. When a configuration is
capable of supporting level mode interrupts, the IRQLEV bit in the Configuration Register controls
whether the level or pulsed mode interrupts are selected.
Mask The Mask bit indicates whether the possible destinations of the interrupt request line are indicated
by a single interrupt line value, or a mask of possible interrupt lines.
When this bit is zero, the destination is given by the IRQN field, formed from right hand nibble of
byte 0, which selects 1 of 16 possible interrupt request lines. In this case, bytes 1 and 2 are not
present.
When this bit is a one, the 4 least significant bits of byte 0 are masks for possible interrupt
destinations. In addition, two additional bytes are present which contain mask bits for 16 possible
interrupt request lines.
NMI These bits are valid only when the Mask bit is 1. When set, each of these bits indicates that the
corresponding special interrupt signal may be assigned by the host to the card's interrupt-request
IOCK
pin. Systems are not required to support these interrupts.
BERR
NMI is non-maskable interrupt.
VEND IOCK is the I/O-check signal.
BERR is Bus-Error signal.
VEND is a Vendor-Specific signal.
IRQ0áá15 These bytes are present only when the Mask bit is a 1. When set, each of these bits indicates that
the corresponding interrupt signal may be assigned by the host to the card's interrupt request pin.
IOCK is the I/O check signal. General purpose systems must support all those interrupts which
are available on the I/O bus normally associated with the environment they are supporting.
Field Description
Number of The number of window descriptors following minus 1.
Windows
Length Size The size of the length fields in bytes. The length is in 256-byte pages
Card Address The size of the card address fields in bytes. The card address is in 256-byte pages.
Size
Host Addr 0 No host address field is present and the host address is arbitrary.
1 A host address field, the same size as the card address field, is present.
92 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
Window Descriptor
Byte 7 6 5 4 3 2 1 0
+0áá3 Length The length of the window in units of 256 bytes. The least significant part appears in byte 0.
0áá3 bytes depending upon Length Size field above.
+0áá3 Card Address The address to be accessed on the card corresponding to the host address. The least significant
part appears in byte 0. 0áá3 bytes depending upon Card Address Size field above.
+0áá3 Host Address The physical address in the host-address space where the block of memory must be placed.
This field is present only when the Host Addr field is set (1). The least significant part appears in
byte 0. 0áá3 bytes depending upon Card Address Size field above.
© 1999 PCMCIA/JEIDA 93
BASIC COMPATIBILITY (LAYER 1)
Field Description
Max Twin Cards This field is used to indicate the card requires that identical cards installed in the system be
differentiated from each other in a sequential manner. For example, first twin is card 0, second is
card 1, and so on. This allows the cards to share I/O ports and interrupts in a manner consistent
with some peripherals commonly used in PC computers, such as fixed disk drives.
The Max Twin Cards field specifies the maximum number of other identical cards which can be
configured identically to this card. This permits more than one card to be installed in host which
responds to the identical I/O addresses. The host allows the cards to distinguish among
themselves by writing their ÒCopyÓ numbers ( e.g. 0, for the first card, 1 for the second, etc.) into
the copy field of the Socket and Copy Register in the Card Configuration Registers.
Audio This bit indicates the card allows the BVD2 signal to be used as Audio Waveform for the speaker.
This operation is controlled by the Audio Enable Bit in the Card Control and Status Configuration
Register.
Read Only This bit indicates the card contains a data storage medium which is read-only for this
configuration. There may be other configurations for which the storage medium is read/write.
Pwr Down This bit indicates the card supports a power-down mode controlled by the power-down bit in the
Control and Status Register.
RFU (0) These bits are reserved for future definition and must be 0.
EXT An extension follows this byte. A series of extension bytes is terminated when an extension byte is
encountered which does not have the EXT bit set to one (1).
DMA Request A binary value identifying the pin on the interface used to signal a DMA request.
Signal 0 DMA not supported by this configuration
1 DREQ# uses SPKR#
2 DREQ# uses IOIS16#
3 DREQ# uses INPACK#
DMA Width The DMA data transfer width.
0 the DMA data width is 8-bits.
1 the DMA data width is 16-bits.
Thermal Rating, Bits The XXh value of a PC CardÕs Thermal Rating. Valid range is 0 (00h) - 99 (63h). For
Major 0-6 consistency, bit 7, EXTension bit, is set (1).
Thermal Rating, Bits The YYh value of a PC CardÕs Thermal Rating. Valid range is 0 (00h) - 99 (63h). Bit
Minor 0-6 7, EXTension flag, is set according to future specification fields.
The Operating System Name is preceded by a colon (:) and the comment is preceded by a
semicolon (;). The remaining strings contain comment (and, optionally, the system name and OS
name) in alternate languages. Each string is terminated by a 00H byte. The list of strings is
94 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
terminated by reaching the end of the subtuple. When the default bit is set in this configuration
entry tuple, the environment descriptor becomes the default environment descriptor for succeeding
entries as well.
STCE_EV: Environment Descriptor Subtuple
Byte 7 6 5 4 3 2 1 0
0 ST_CODE STCE_EV (C0H).
1 ST_LINK Link to next subtuple (at least m-1).
2áám STEV_STRS A list of strings, the first being ISO 646 IRV coded, and the rest being coded as ISO alternate
language strings, with the initial escape character suppressed. Each string is terminated by a 0
byte, and the last string, if it does not extend to the end of the subtuple, is followed by an FFH byte.
© 1999 PCMCIA/JEIDA 95
BASIC COMPATIBILITY (LAYER 1)
96 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
Field Description
Configuration- Contains the value to be written to the Card Configuration Register to enable the configuration
Entry-Number described in the tuple.
Default This bit indicates that this entry provides default values for succeeding entries until another entry
is encountered with its Default bit set.
1 The default conditions for following table entries are exactly those conditions specified
in this entry.
0 The default conditions are the conditions specified by the last entry encountered with its
default bit set.
Field Description
Power The power supply requirements and load characteristics for this configuration are indicated.
There may be 0, 1, 2 or 3 fields following representing VCC, VPP[2::1], or VPP1 and VPP2
(individually) in that order. The coding is as follows:
0 No power-description structures, use the default.
1 VCC power-description-structure only.
2 VCC and VPP[2::1] (VPP1 = VPP2) power-description-structures.
3 VCC, VPP1 and VPP2 power-description-structures.
IO Space 0 When the default bit is set in this tuple, or no Configuration-Entry tuple has been
scanned with its default bit set, then no I/O space is used.
Otherwise, the I/O space requirement is specified by the most recently scanned
Configuration-Entry tuple with its default bit set.
1 An I/O space description structure is present.
IRQ 0 When the default bit is set in this tuple, or no Configuration-Entry tuple has been
scanned with its default bit set, then no Interrupt is used.
Otherwise, the Interrupt request requirement is specified by the most recently scanned
Configuration Entry tuple with its default bit set.
1 An Interrupt request description structure is present.
Mem 0 When the default bit is set in this tuple, or no Configuration-Entry tuple has been
Space scanned with its default bit set, then no memory space(s) are used.
Otherwise, the memory space requirement(s) are specified by the most recently
scanned Configuration-Entry tuple with its default bit set.
1 A memory space description structure is present.
Misc 0 When the default bit is set in this tuple, or no Configuration-Entry tuple has been
scanned with its default bit set, then the miscellaneous fields are interpreted to be all
zero.
Otherwise, the miscellaneous fields are specified by the most recently scanned
Configuration-Entry tuple with its default bit set.
1 A miscellaneous fields structure is present.
© 1999 PCMCIA/JEIDA 97
BASIC COMPATIBILITY (LAYER 1)
The IO_BAR_Used field is a bit-mapped representation of the I/O Base Address Registers required
by a configuration. For example, if bits one and two are set, Base Address Registers one and two
map I/O space used in the configuration.
The MEM_BAR_Used field is a bit-mapped representation of the memory Base Address Registers
required by a configuration. For example, if bits one and two are set, Base Address Registers one
and two map memory space used in the configuration.
98 © 1999 PCMCIA/JEIDA
METAFORMAT SPECIFICATION
© 1999 PCMCIA/JEIDA 99
BASIC COMPATIBILITY (LAYER 1)
Field Description
RFU (0) These bits are reserved for future (or historical) definition and must be 0.
EXT If set (1), another byte follows this byte. A series of extension bytes is terminated when an
extension byte is encountered which has the EXT bit reset to zero (0).
Bus Master (See the Electrical Specification.)
Memory Write & (See the Electrical Specification.)
Invalidate
VGA Palette (See the Electrical Specification.)
Snoop
Parity Error (See the Electrical Specification.)
Response
Wait Cycle (See the Electrical Specification.)
Control
SERR# Enable (See the Electrical Specification.)
Fast Back-to- This bit field does not control the corresponding value in the Command register. Rather, this is the
Back value which should be placed in the Status register indicating if this particular function, when
acting as a target, is Fast Back-to-Back capable
PWM Audio This field is used to indicate that the card can supply audio data in a Pulse Width Modulation
Enable encoded format.
Binary Audio This field is used to indicate that the card can supply audio data in a binary wave format.
Enable
Wakeup Event This read only field is used to indicate that the card supports (can provide) wakeup events. If the
Support field is set (1), then the card supports wakeup events. If the field is reset (0), then the card does
not support wakeup events.
Thermal Rating, Bits 0-6 hold the XXH value of a PC CardÕs Thermal Rating. Valid range is 0 (00H) - 99 (63H).
Major For consistency, bit 7, EXTension bit, is set (1).
Thermal Rating, Bits 0-6 hold the YYh value of a PC CardÕs Thermal Rating. Valid range is 0 (00H) - 99 (63H). Bit
Minor 7, EXTension flag, is set according to future specification fields.
Field Description
TPCC_RASZ The number of bytes in the Configuration Registers Base Address in Attribute Memory Space
field (TPCC_RADR) of this tuple is the value of this field plus 1.
TPCC_RMSZ The number of bytes in the Configuration Register presence mask field (TPCC_RMSK field) of
the tuple is this value plus 1.
TPCC_RFSZ Size of area presently reserved for future use 0, 1, 2 or 3 bytes. Must be 0 at present.
Field Description
Last Index The Index Number of the final entry in the Card Configuration Table (the last entry encountered
when scanning the CIS).
RFU 0 This area is reserved for future standardization and must be 0.
The Base Address of the Configuration Registers, in an even byte of Attribute Memory (address of
Configuration Register 0), is given in this field. The system uses this information together with the
information in the Configuration Register's presence mask field to determine which registers are
present on the card and where they are located in the card's Attribute Memory space.
The Base Address is a field which may be from 1 to 4 bytes long depending upon the number of
bits needed to represent it. High order address bits, not present in the field, are always interpreted
to be zeros. The size of this field in bytes is one greater than the value of the TPCC_RASZ size field
in the TPCC_SZ byte.
It is recommended, but not required, that the Configuration Register's Base Address be placed near
the beginning of the Attribute Memory space.
The presence mask for the Configuration Registers is given in this field. Each bit represents the
presence (1) or absence (0) of the corresponding Configuration Register. The least significant bit
represents the lowest Configuration Register represented by the byte, and the represented registers
increase with higher bit significance. Those registers which would be indicated by bytes extending
beyond the end of the field are not implemented on the card.
The system uses this information together with the information in the Configuration Registers Base
Address field to determine which registers are present on the card, and where they are located in
the card's Attribute Memory space.
The address of each configuration register is given by the formula:
Base Address + (Register Number * 2)
regardless of whether or not the register is present.
A maximum of four custom interface subtuples may be present in the configuration tuple
(CISTPL_CONFIG).
There are two classes of custom interfaces. The first class of custom interfaces are those jointly
defined by PCMCIA and JEIDA. These interfaces have a published electrical interface which is
documented in Appendix C in the Electrical Specification. The second class of custom interfaces are
those which have an assigned custom vendor interface code but no published interface definition
within the PC Card Standard.
The first-byte codes Ñ 41H, 81H and C1H in the field STCI_IFNÑ define two (XX41H), three
(XXXX81H) and four (XXXXXXC1H) byte numbers for custom interfaces which are jointly defined
by PCMCIA and JEIDA. The custom interface codes defined by PCMCIA/JEIDA are provided in the
following table:
STCI_IFN STCI_IFN_1 STCI_IFN_2 STCI_IFN_3 CIF Name
Code Code Code Code
Vendors that wish to define proprietary custom interfaces may do so by requesting a custom vendor
interface code assignment. To simplify initial assignments, manufacturers who possess a JEDEC
programmable semiconductor manufacturer's ID may use first-byte codes 42h, 82h and C2h
followed by a second byte, which is their JEDEC ID, to generate interface ID numbers. For example,
with yy indicating values selected by the manufacturer and jj indicating their JEDIC ID, the
interface ID numbers jj42h, yyjj82h, and yyyyjjC2h are appropriate. Currently, no custom vendor
interface codes have been assigned.
The subtuple is defined as follows:
CCSTPL_CIF: Custom Interface Subtuples
Byte 7 6 5 4 3 2 1 0
0 ST_CODE CCSTPL_CIF (C0H)
1 ST_LINK Link to next tuple (n; minimum 1)
2 STCI_IFN Interface ID Number LSB - 1 to 4 bytes least significant byte first
This field provides a unique 8- to 32- bit number which identifies the interface. Within the ID
number are two bits (bits 6 and 7 of byte 0) which give the size of this field. The first two or three
bytes of the ID number is assigned by PCMCIA, JEIDA or its designer. When a vendor has been
assigned a two or three byte initial portion the remaining one or two bytes of the field are
assigned by that vendor to uniquely identify the interface.
STCI_IFN_SIZE STCI_IFN_BASE
3 STCI_IFN_1 2nd Interface ID Number byte, exists if STCI_IFN_SIZE is 1, 2 or 3.
4 STCI_IFN_2 3rd Interface ID Number byte, exists if STCI_IFN_SIZE is 2 or 3.
5 STCI_IFN_3 4th Interface ID Number byte, exists if STCI_IFN_SIZE is 3.
m STCI_STR Interface Description Strings
A list of strings, the first being ISO 646 IRV coded and the rest being coded as ISO alternate language strings with the
initial escape character suppressed. Each string is terminated by a 0 byte and the last string, if it does not extend to the
end of the subtuple, is followed by an FFH byte.
Field Description
Last Index The Index Number of the final entry in the Card Configuration Table (the last entry encountered
when scanning the CIS).
RFU 0 This area is reserved for future standardization and must be 0.
Field Description
Address Space Value Meaning
Indicator 0 The status registers are not implemented.
1áá6 The status registers are in the memory address space governed by one of the six
Base Address Registers. For example, if the value is 2, then the status registers
are in the memory address space governed by Base Address Register 2.
7 Reserved.
Address Space Address Space Indicator Space Type Address Space Offset Values
Offset 0 Reserved. If Address Space Indicator is set to 0, this
field must be set to 0.
x; 1 £ x £ 6 memory space 0 £ value £ FFFFFFF8H. This is the offset
into the memory address space governed
by Base Address Register x. Adding this
value to the value in the Base Address
Register gives the location of the start of the
status registers.
7 Reserved. Undefined.
Instead, Multiple Function PC Cards shall place a CISTPL_PWR_MGMNT tuple in the function-
specific CIS of each function that indicates the Power Management Support Register is present in the
functionÕs Configuration Register array.
The PWR_METHOD field identifies the type of support provided by the PC Card function for
saving and restoring the state of the function. Two methods of state save/restore support are
defined. When the PWR_METHOD field is 80H, the PC Card function uses storage on the card when
saving and restoring the state of the function. When the PWR_METHOD field is 00H or 01H, the PC
Card transfers the state of the function through a buffer and relies on storage in the host when
saving and restoring the state of the function.
The PWR_TIME field is used by the PC Card function to specify the period of time required by the
function to save and/or restore the functionÕs state. The granularity of this count is four milliseconds
(4 ms). A PC Card requiring eighty milliseconds (80 ms) to save and/or restore its state encodes a
value of twenty (14H) in this field. The maximum value that can be encoded in the PWR_TIME field
is FFH, corresponding to one thousand twenty milliseconds (1020 ms).
The PWR_REG_ADDR field indicates the location of the PC Card functionÕs Power Management
Support Register in Attribute Space. This address corresponds with register ten (10) at offset twenty
(20) in the PC Card functionÕs array of Configuration Registers. (See the Electrical Specification.)
The PWR_OFFSET field is the address of the PC Card functionÕs save/restore buffer in a card
address space. When the PWR_METHOD field is 01H the save/restore buffer for the function is in
Common Memory space. When the PWR_METHOD field is 00H the save/restore buffer for the
function is in Attribute Memory space. Note that in Attribute Memory space only even bytes in the
address range are valid and therefore the offset of the buffer must be a multiple of two (2).
The PWR_BUFFSIZE field indicates the number of bytes to be saved during a save operation and
then later restored during a restore operation. When the PWR_METHOD field is 00H, indicating a
save/restore buffer in Attribute Memory space, only even bytes in the address range are counted.
For example, if PWR_METHOD = 00H, PWR_OFFSET = 0100H, and PWR_BUFFSIZE = 20H , the
significant data bytes are the thirty-two (20H) bytes at even addresses in the range 0100H through
013EH in Attribute space.
Bytes 2-3, TPLBATT_RDAY, indicate the date on which the battery was last replaced. This field has
the same interpretation as the field TPLDATE_DAY in the CISTPL_DATE tuple.
Bytes 4-5, TPLBATT_XDAY, (the Òexpiration dayÓ) indicate the date on which the battery should be
replaced. This field has the same format as the field TPLDATE_DAY in the CISTPL_DATE tuple.
If either TPLBATT_RDAY or TPLBATT_XDAY are zero, it indicates that the corresponding date was
not known when the tuple was written.
Bytes 2-3, TPLDATE_TIME, indicate the time at which the card was initialized. It is a 16-bit packed
structure with the following format:
TPLDATE_TIME field
Byte 7 6 5 4 3 2 1 0
0 MINLO SSS
1 HHH MMM HI
· The field HHH contains the hour at which the card was initialized. It is a binary number
between 0 and 23.
· The field MMM contains the minute at which the card was initialized. It is a binary number
between 0 and 59. MMM is a six bit field constructed by combining MMMHI and MMMLO.
· The field SSS represents the two-second interval at which the card was initialized. It is a binary
number between 0 and 29. To convert SSS to seconds, it should be multiplied by two.
Bytes 4-5, TPLDATE_DAY, indicate the date the card was initialized. It is a 16-bit packed structure
with the following format:
TPLDATE_DAY field
Byte 7 6 5 4 3 2 1 0
0 MONLO DAY
1 YYYY MONHI
· The field YYYY represents the year. It is a binary number between 0 and 127, with 0
representing the year 1980.
· The field MON represents the month. It is a binary number between 1 and 12, with 1
representing January. MON is a four bit field constructed by combining MONHI and MONLO.
· The field DAY represents the day. It is a binary number between 1 and 31.
If the date and time components of the date are both zero, this should be taken as an indication that
the date and time were unknown when the card was first initialized.
TPLLV2_VERS represents the standardization version of the tuple. This byte should always be zero.
TPLLV2_COMPLY indicates the claimed degree of compliance with this Standard. At present, this
should always be zero.
TPLLV2_DINDEX specifies the address of the cardÕs first data byte. Setting this to non-zero reserves
bytes at the beginning of Common Memory.
Note: The first data byte on the card must always be somewhere in the first 64
KBytes of the card. This field should be consistent with information
provided in the format tuple (if that tuple is present).
TPLLV2_NHDR specifies the number of copies of the CIS that are present on the card. For
compatibility with this Standard, this value should be 1.
TPLLV2_OEM specifies the vendor of the machine, or format program, that formatted the card. This
is a text string terminated by a NULL byte (00 H). The value of TPLLV2_OEM, combined with the
value of TPLLV2_INFO, determines how to interpret vendor-specific fields in the Level-2 tuples. For
alternate languages, CISTPL_ALTSTR tuples may follow this tuple, specifying the string value to be
substituted when using alternate languages.
TPLLV2_INFO contains a text message terminated by a NULL byte (00H). This message should be
displayed to users, by a computer, whenever the host needs to describe the type of card that is in
the drive. For alternate languages, CISTPL_ALTSTR tuples may follow this tuple, specifying the
string value to be substituted when using alternate languages.
Note: If the host systemÕs format routine determines that the card is already
formatted, it may display a message like: Caution! This card contains data
for <info>, from <vendor>. The contents of the information field should be
chosen appropriately. For example, a VCR setup card for a VCR by
AlphaBeta Electronics might have <info> as ÒModel 9770 VCRÓ and the
<vendor> field would be ÒAlphaBetaÓ.
The characters used in TPLLV2_INFO and TPLLV2_OEM shall be chosen from the printing 7-bit ISO
646 IRV set (codes 20H through 7EH, inclusive).
TPLLV2_RSV6 and TPLLV2_RSV7 are reserved for use in future versions of this Standard. They
shall be set to zero.
TPLLV2_VSPEC8 and TPLLV2_VSPEC9 are vendor specific. If not used, they shall be set to zero.
Byte 2, TPLBYTE_ORDER, specifies the byte order for multi-byte numeric data. Symbolic codes for
this field begin with the text ÒTPLBYTEORD_Ó, and are listed below.
TPLBYTE_ORDER Byte Order Codes.
Code Name Description
0 TPLBYTEORD_LOW Specifies that multi-byte numeric data is recorded in little-endian
order.
1 TPLBYTEORD_HIGH Specifies that multi-byte numeric data is recorded in big-endian order.
02Háá7FH Reserved for future standardization.
80HááFFH TPLBYTEORD_VS Vendor-specific.
Byte 3, TPLBYTE_MAP, specifies the byte mapping for 16-bit or wider cards. Symbolic codes for this
field begin with the text ÒTPLBYTEMAP_Ó, and are listed below.
TPLBYTE_MAP Byte Mapping Codes.
Code Name Description
0 TPLBYTEMAP_LOW Specifies that byte 0 of a word is the least-significant byte (multi-byte
cards).
1 TPLBYTEMAP_HIGH Specifies that byte 0 of a word is the most-significant byte (multi-byte
cards).
02Háá7FH Reserved for future standardization.
80HááFFH TPLBYTEMAP_VS Vendor-specific.
If a byte-order tuple is not present, the data shall be recorded using little-endian byte order,
TPLBYTEORD_LOW, and shall be mapped with byte 0 of each word corresponding to the least-
significant byte, TPLBYTEMAP_LOW.
For applications involving DOS file systems, little-endian byte order and low-to-high byte mapping
are mandatory.
Note: Bytes 4áá7, TPLFMT_OFFSET, contain the four byte address of the first data
byte in this partition. In CISTPL_FORMAT, defining either CardBus PC
Card memory or 16-bit PC Card Common Memory, this value is the
physical offset in the partition. In CISTPL_FORMAT_A, defining 16-bit PC
Card Attribute Memory only, the value in this field must be multiplied by
2 to obtain the physical address of the first data byte. This is done for
consistency with the usage of the offset field in the Checksum tuple.
Each format tuple implicitly begins a partition tuple set. Subsequent geometry, byte order, software
interleave and data organization tuples are implicitly associated with the preceding format tuple.
Byte one of the tuple specifies the link to the next tuple, and, therefore, (implicitly) the length of this
tuple. Two ranges of values are permitted. Normally, the value will be at least 20 (014H), however,
if the format tuple is specifying a memory-like format, the value may be as little as 12 (0CH), as
bytes 13 through 21 must be zero for memory-like formats. If the partition does not use error-
detecting codes, then the TPLFMT_EDCLOC field may be omitted.
Byte two of the tuple, TPLFMT_TYPE, specifies the kind of format used for this partition. The
permitted values for this field are given below.
TPLFMT_TYPE Format Type Codes.
Code Name Description
0 TPLFMTTYPE_DISK This partition uses a disk-like format.
1 TPLFMTTYPE_MEM This partition uses a memory-like format.
02Háá7FH (Reserved for future standardization.)
80HááFFH TPLFMTTYPE_VS This partition uses a vendor-specific format.
· Byte 3, TPLFMT_EDC, specifies the error-detection method, and the length of the error-detection
code. Byte 3 is generally only meaningful for disk-like formats. Bit 7 is reserved; it must be
zero. Bits 3-6 specify the error-detection code. The legal values are given in Table 5-48. Bits 0-2,
TPLFMT_EDCLEN, specify the length in bytes of the error-detection code; this is a number
between 0 and 7. The legal values for the length field are determined by the error-detection
method in use.
· Memory-like regions may use the PCC method of error detection.
The code in TPLFMT_EDC only specifies the method to be used to verify data integrity. The value
in TPLFMT_EDCLOC must be consulted to determine whether the code is to be interleaved with
the data, or stored in a separate table.
Bytes 4-7, TPLFMT_OFFSET, specify the absolute byte address of the first data byte governed by
this tuple. The value is stored as a 32-bit quantity with LSB first.
Bytes 8-11, TPLFMT_NBYTES, specify the number of bytes in the partition, including (if present)
the error-detection codes. The value is stored as a 32-bit quantity with LSB first.
Bytes 12-13, TPLFMT_BKSZ, specify the number of data bytes in each block in the partition. This
value does not include error-check bytes. The value in this field must be a power of 2 between 128
and 2048. This Standard recommends that 512 be used wherever possible. The value is stored as a
16-bit quantity with LSB first.
Bytes 14-17, TPLFMT_NBLOCKS, specify the number of data blocks in the partition. This value is
stored as a 32-bit quantity with LSB first. The quantity:
Byte 22, TPLFMT_BAR, is present only on CardBus PC Cards and indicates the Base Address
Register which is being defined. The TPLFMT_BAR field is identical for disk-like and memory-like
partitions. (See 4.2.2.2 The Format Tuple for Memory-like Regions.)
As with the format tuple for disk-like regions, zero bytes may be omitted at the end of the format
tuple for memory-like regions. To do this, the next tuple must begin immediately after the last non-
zero byte in the format tuple.
Byte 12, TPLFMT_FLAGS, contains several control bits.
· Bit 0, TPLFMTFLAGS_ADDR, if set, indicates that bytes 14-17, TPLFMT_ADDRESS, represent a
physical address to be associated with the first byte of this region. If clear, bytes 14-17 do not
represent a physical address and must be zero.
· Bit 1, TPLFMTFLAGS_AUTO, tells the system whether to automatically map the region into
memory when the card is inserted (or at system start-up). If set, the system should attempt to
map the region into memory. If TPLFMTFLAGS_ADDR is set, the system should attempt to
map the code at the specified address. A system shall ignore these fields if it cannot perform the
specified mapping. It may also, at the designerÕs option, ignore these fields even if it could
perform the mapping.
Byte 13 is reserved and, if present, must be set to zero.
Bytes 14 through 17, TPLFMT_ADDRESS, represent the physical address at which the partition
should be mapped into the hostÕs address space. For x86 architecture machines, this is a linear
address, not a segment/offset address. If the flag TPLFMTFLAGS_ADDR is not set, then this field is
reserved and must be zero.
Note: A system can comply fully with this Standard and not honor these fields.
The automatic mapping feature is not intended for general-purpose use, or
for building interchangeable BIOS extensions for general-purpose systems.
This StandardÕs automatic mapping feature is included for use in low-cost
embedded systems, and is not intended as a general, eXecute-In-Place,
specification. Many important issues are deliberately not addressed here,
such as what to do when the card is removed, or how to resolve conflicts
when cards in different sockets both need to be mapped to a specific
physical address. It is anticipated that general purpose DOS-based systems
will ignore these fields.
Bytes 18-21, TPLFMT_EDCLOC, have the same meaning for memory-like regions that they have
for disk-like regions. A memory-like region has only two options for error checking: none or PCC.
Therefore, if this field is used, byte 18 contains the check code, and bytes 19-21 are reserved and
must be zero.
Byte 22, TPLFMT_BAR, is present only on CardBus PC Cards and indicates the Base Address
Register which is being defined.
TPLFMT_BAR field
7 6 5 4 3 2 1 0
Reserved, must be 0. Address Space Indicator
Field Description
Address Space Same encoding as the Address Space Indicator field in the CISTPL_LONGLINK_CB tuple.
Indicator 0 illegal value - zero indicates CardBus PC Card configuration space.
1 Base Address Register 1.
2 Base Address Register 2.
3 Base Address Register 3.
4 Base Address Register 4.
5 Base Address Register 5.
6 Base Address Register 6.
7 the Expansion ROM Base Address Register.
1 Also known as CRC-ITU-T(CCITT) or HDLC CRC. In this algorithm, the data to be checked is considered as a
serial-bit stream, with the low-order bit of the first byte taken as the first bit of the stream. This bit stream is
conceptually taken as the coefficients of a polynomial in x n, where n is the number of bits in the stream, and where
the first bit is the coefficient of the term in x n-1. This polynomial is multiplied by x16 and then divided (modulo 2)
by the polynomial x16 + x12 + x5 + 1, leaving a remainder of order 15 or less. If the register initial-condition is set to
all ones, the CRC code for a block of all zeros will be non-zero. The oneÕs complement of this remainder is the
error-check code. It is recorded with the complemented coefficient of x15 as its least-significant bit, and with the
complemented coefficient of x0 as its most-significant bit.
Byte 2, TPLGEO_SPT, specifies the number of sectors per simulated track on the memory card. This
is a number between 1 and 255. A value of zero is not permitted.
Byte 3, TPLGEO_TPC, specifies the number of tracks per simulated cylinder on the device. This is a
number between 1 and 255. A value of zero is not permitted.
Bytes 4-5, TPLGEO_NCYL, specify the number of simulated cylinders on the device. This is a
number between 1 and 65535, stored as a 16-bit integer with LSB first (this value is one greater than
the same quantity as represented by the PC BIOS). This Standard records the number of simulated
cylinders; the PC BIOS records the maximum cylinder number. Since cylinder numbers on the PC
start at zero , the maximum cylinder number on the PC is one less than the number of cylinders.
The product
TPLGEO_NCYL * TPLGEO_TPC * TPLGEO_SPT
shall be less than or equal to the number of blocks recorded in field TPLFMT_NBLOCKS of the
format tuple.
Assumptions:
The software interleave tuple must be associated with a Format Tuple (partition tuple set) that
describes a homogeneous partition beginning and ending on a physical device boundary and hence
referring to one and only one Device Info entry and associated Device Geometry Info entry within
the Device Information Tuple and the Device Geometry Tuple respectively.
The DGTPL_HWIL field within the Device Geometry Info entry must equal 1, i.e. non-hardware
interleaved.
The following provide the association of the Software Interleave Tuple and the implied Òsoftware
interleave partitionÓ with the Device Information Tuple, Device Geometry Tuple and Format Tuple.
Òsoftware interleaved partitionÓ base address = TPLFMT_OFFSET
Òsoftware interleaved partitionÓ length = TPLFMT_NBYTES
The size or length of the partition must be a multiple of the stride (below).
Òsoftware interleaved partitionÓ interleave width = DGTPL_WBS * DGTPL_BUS
Òsoftware interleaved partitionÓ stride = DGTPL_BUS * (size in bytes of a physical device)
The device size is determined from the Device Info entry of the Device Information Tuple.
5 . D AT A O R G A N I Z AT I O N ( L AY E R 3 )
This layer defines the data organization of a particular partition on a memory card. At this level, the
possibilities become complex. Some examples are:
· A partition can contain a DOS-file system (or a file system for some other operating system).
This can be used with any disk-like, Level-2 format.
· A partition can contain a Flash file system (used with memory-like formats).
· A partition can use a vendor-specific organization.
· A partition can use an application-specific organization.
Layer 3 of this Standard provides an unambiguous means of specifying the organization of the
partition. (See also the Media Storage Formats Specification.)
Byte 2, TPLORG_TYPE, specifies the type of data organization in use. The possible values of this
byte are given below:
TPLORG_TYPE Codes
Code Name Description
0 TPLORGTYPE_FS This partition contains a file system. The description field specifies
the file system type and version.
1 TPLORGTYPE_APP This partition contains application-specific information. The
description field specifies the application name and version.
2 TPLORGTYPE_ROMCODE This partition contains executable code images. The description field
specifies the name and version of the organization scheme.
03Háá7FH (Reserved for future standardization.)
80HááFFH TPLORGTYPE_VS This partition uses a vendor-specific organization. The contents of the
description field are vendor-specific.
Bytes 3 through the end of the tuple, TPLORG_DESC, contain a NULL-terminated ASCII-text
description of the organization. For file-system organizations, this field should specify the file-
system type. This field shall contain only characters in the printing ASCII set, 020 H through 07EH.
(For international use, one or more CISTPL_ALTSTR tuples can follow this tuple.)
The intent of this field is two-fold:
· For operating systems with sufficient flexibility, it allows the appropriate file-system driver to
be selected based on the value of this field.
· If a card cannot be read due to software incompatibilities, a utility program can display to the
user the contents of this field along with other card information. This would inform the user
what kind of information is actually on the card.
A summary of the defined TPLORG_DESC codes follows.
TPLORG_DESC Codes
TPLORG_TYPE Card TPLORG_DESC Description
Services
Index
RESERVED 0000H none This value is used by Card Services to indicate
that there is no CISTPL_ORG.
TPLORGTYPE_FS 0001H "DOS" DOS-file systems
TPLORGTYPE_FS 0002H "Flash" Microsoft Flash File System - Version 1
TPLORGTYPE_FS 0003H "FFS20" Microsoft Flash File System - see the Media
Storage Formats Specification.
TPLORGTYPE_FS 0004H "FTL100" Flash Translation Layer - see the Media Storage
Formats Specification.
TPLORGTYPE_FS 0005H "LFS100" Linear File Store - see the Media Storage Formats
Specification.
TPLORGTYPE_FS 0006H "VS" Vendor-Specific partition
RESERVED 7FFFH Card Services returns this value when indicating
an ÒUnknown partitionÓ to a client.
Note: All TPLORG_DESC fields must be null terminated.
The Card Services GetFirst/NextPartition services return values listed in the Card Services Index
field. (See the Card Services Specification.)
If more data is required than will fit in a single tuple, additional Special Purpose Tuples appear in
the CIS. A grouping of Special Purpose Tuples with identical TPLSPCL_ID values is called a series
of Special Purpose Tuples. A TPLSPCL_ID value can appear in only one series of Special Purpose
Tuples in a CIS; it may never be repeated in another series of Special Purpose Tuples in the same
CIS.
The TPLSPCL_SEQ field is divided into a single bit flag, END (bit 7), and a seven bit field,
SEQUENCE (bits 0áá6). SEQUENCE is assigned values ranging from zero (0) to one hundred twenty-
seven (127) in ascending order beginning with zero (0) and resetting to zero (0) after reaching one
hundred twenty-seven (127). The last tuple in the series is indicated by setting the END bit to one
(1). A series consisting of a single tuple has a TPLSPCL_SEQ field with a value of one hundred
twenty-eight (10000000B).
The TPLSPCL_BYTES field contains the number of data bytes in the TPLSPCL_DATA field.
A series of Special Purpose Tuples must be placed in the CIS in the order that it is to be processed in
the host environment.
7 . C O M P AT I B I L I T Y I S S U E S
Volume 6
Socket Services Specification
PCMCIA
JEIDA
©1999, PCMCIA/JEIDA PCMCIA HAS BEEN NOTIFIED BY
All rights reserved. CERTAIN THIRD PARTIES THAT
THE IMPLEMENTATION OF THE
No part of this publication may be STANDARD WILL REQUIRE A
reproduced, stored in a retrieval LICENSE FROM THOSE THIRD
system, or transmitted, in any form or PARTIES TO AVOID
by any means, mechanical, INFRINGEMENT OF THEIR
electronic, photocopying, recording RIGHTS. PCMCIA HAS OBTAINED
or otherwise, without prior written FROM SOME, BUT NOT ALL, OF
permission of PCMCIA and JEIDA. THOSE PARTIES A GRANT OF
Printed in the United States of IMMUNITY THAT PCMCIA WILL
America. EXTEND TO YOU, CONTINGENT
PCMCIA (Personal Computer UPON YOUR ENTERING INTO
Memory Card International AND DELIVERING TO PCMCIA
Association) THE RECIPROCAL GRANT OF
1030 East Duane Avenue, Suite G IMMUNITY AGREEMENT
Sunnyvale, CA 94086 USA CONTAINED ELSEWHERE IN
+1-408-720-0107 THIS STANDARD.
+1-408-720-9416 (Fax) IMPORTANT:
JEIDA (Japan Electronic Industry In order to receive the Grant of
Development Association) Immunity, the owner of this
Kikai Shinko Kaikan, 3-5-8, Shibakoen Standard must sign and return the
Minato-ku, Tokyo 105, JAPAN enclosed Registration Card to:
+81-3-3433-1923 PCMCIA
+81-3-3433-6350 (Fax) 1030 East Duane Avenue, Suite G
Sunnyvale, CA 94086, USA
The PC Card logo and PC Card are
trademarks of PCMCIA, registered in NEITHER PCMCIA NOR JEIDA
the United States. The PC Card logo MAKES ANY WARRANTY,
and design are trademarks of JEIDA, EXPRESS OR IMPLIED, WITH
registered in Japan. RESPECT TO THE STANDARD,
INCLUDING AS TO NON-
INFRINGEMENT,
MERCHANTABILITY OR FITNESS
FOR A PARTICULAR PURPOSE.
THIS STANDARD IS PROVIDED TO
YOU ÒAS IS.Ó
CONTENTS
1. Introduction____________________________________________1
1.1 Purpose................................................................................................................................1
1.2 Scope....................................................................................................................................1
1.3 Related Documents .............................................................................................................1
2. Overview ______________________________________________3
3. Functional Description __________________________________5
3.1 System Architecture ............................................................................................................5
3.2 Initialization.........................................................................................................................5
3.3 Configuration.......................................................................................................................5
3.4 Status Change Notification.................................................................................................6
3.5 Power Management.............................................................................................................6
3.6 Docking................................................................................................................................6
3.7 Overview of Services............................................................................................................7
3.7.1 Non-specific Service..................................................................................................................................................................7
3.7.2 Adapter Services........................................................................................................................................................................7
3.7.3 Socket Services............................................................................................................................................................................8
3.7.4 Window Services.......................................................................................................................................................................8
3.7.5 Error Detection and Correction Services..........................................................................................................................8
3.7.6 Status Change Handling .........................................................................................................................................................8
3.7.7 Reserved Services ......................................................................................................................................................................9
© 1999 PCMCIA/JEIDA v
CONTENTS
9.6.7.1.9 GetSetPriorHandler....................................................................................................................................106
9.6.7.1.10 GetSetSSAddr ............................................................................................................................................107
9.6.7.1.11 GetSocket......................................................................................................................................................109
9.6.7.1.12 GetSSInfo......................................................................................................................................................110
9.6.7.1.13 GetStatus ......................................................................................................................................................110
9.6.7.1.14 GetVendorInfo ...........................................................................................................................................110
9.6.7.1.15 GetWindow.................................................................................................................................................111
9.6.7.1.16 InquireAdapter ..........................................................................................................................................111
9.6.7.1.17 InquireBridgeWindow ...........................................................................................................................112
9.6.7.1.18 InquireEDC..................................................................................................................................................112
9.6.7.1.19 InquireSocket ..............................................................................................................................................113
9.6.7.1.20 InquireWindow .........................................................................................................................................113
9.6.7.1.21 PauseEDC.....................................................................................................................................................114
9.6.7.1.22 ReadEDC......................................................................................................................................................114
9.6.7.1.23 ResetSocket ..................................................................................................................................................114
9.6.7.1.24 ResumeEDC.................................................................................................................................................115
9.6.7.1.25 SetAdapter...................................................................................................................................................115
9.6.7.1.26 SetBridgeWindow....................................................................................................................................115
9.6.7.1.27 SetEDC ..........................................................................................................................................................116
9.6.7.1.28 SetPage ..........................................................................................................................................................116
9.6.7.1.29 SetSocket.......................................................................................................................................................117
9.6.7.1.30 SetWindow..................................................................................................................................................117
9.6.7.1.31 StartEDC ......................................................................................................................................................117
9.6.7.1.32 StopEDC .......................................................................................................................................................118
9.6.7.1.33 VendorSpecific...........................................................................................................................................118
9.6.7.2 Packet Usage Bindings ........................................................................................................................................119
9.6.7.2.1 AccessConfigurationSpace.......................................................................................................................119
9.6.7.2.2 AcknowledgeInterrupt ..............................................................................................................................1 20
9.6.7.2.3 GetAccessOffsets..........................................................................................................................................121
9.6.7.2.4 GetAdapter ....................................................................................................................................................122
9.6.7.2.5 GetAdapterCount ........................................................................................................................................123
9.6.7.2.6 GetBridgeWindow .....................................................................................................................................124
9.6.7.2.7 GetEDC............................................................................................................................................................125
9.6.7.2.8 GetPage............................................................................................................................................................126
9.6.7.2.9 GetSetPriorHandler....................................................................................................................................127
9.6.7.2.10 GetSetSSAddr ............................................................................................................................................128
9.6.7.2.11 GetSocket......................................................................................................................................................130
9.6.7.2.12 GetSSInfo......................................................................................................................................................131
9.6.7.2.13 GetStatus ......................................................................................................................................................132
9.6.7.2.14 GetVendorInfo ...........................................................................................................................................133
9.6.7.2.15 GetWindow.................................................................................................................................................134
9.6.7.2.16 InquireAdapter ..........................................................................................................................................135
9.6.7.2.17 InquireBridgeWindow ...........................................................................................................................136
9.6.7.2.18 InquireEDC..................................................................................................................................................137
9.6.7.2.19 InquireSocket ..............................................................................................................................................138
9.6.7.2.20 InquireWindow .........................................................................................................................................139
vi © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
9.6.7.2.21 PauseEDC.....................................................................................................................................................140
9.6.7.2.22 ReadEDC......................................................................................................................................................140
9.6.7.2.23 ResetSocket ..................................................................................................................................................141
9.6.7.2.24 ResumeEDC.................................................................................................................................................141
9.6.7.2.25 SetAdapter...................................................................................................................................................142
9.6.7.2.26 SetBridgeWindow....................................................................................................................................143
9.6.7.2.27 SetEDC ..........................................................................................................................................................144
9.6.7.2.28 SetPage ..........................................................................................................................................................145
9.6.7.2.29 SetSocket.......................................................................................................................................................146
9.6.7.2.30 SetWindow..................................................................................................................................................147
9.6.7.2.31 StartEDC ......................................................................................................................................................148
9.6.7.2.32 StopEDC .......................................................................................................................................................148
9.6.7.2.33 VendorSpecific...........................................................................................................................................149
9.6.8 Assembly Language Definitions.....................................................................................................................................150
TABLES
Table 7Ð1 Service CodesÐNumerical Order..................................................................................89
Table 7Ð2 Service Codes Alphabetic Order..............................................................................90
Table 8Ð1 Return Codes Numerical Order...............................................................................91
Table 8Ð2 Return Codes Alphabetic Order..............................................................................92
© 1999 PCMCIA/JEIDA ix
SOCKET SERVICES SPECIFICATION
1. I N T R OD U C T ION
1.1 Purpose
This document describes the software interface provided by PC Card Standard Socket Services. This
interface provides a hardware independent method of managing PC Card sockets in a host system.
1.2 Scope
This document is intended to provide enough information to software developers to utilize PC Card
sockets in a host system without any knowledge of how the actual hardware performs the desired
services. It is also intended to provide enough information for an implementer to create a Socket
Services handler for a particular adapter.
© 1999 PCMCIA/JEIDA 1
SOCKET SERVICES SPECIFICATION
2. O V E R V IE W
Socket Services is the lowest layer in a multi-layer architecture that manages resources on PC Card
Standard compatible memory and I/O cards (collectively known as PC Cards). Socket Services
provides a universal software interface to the hardware that controls sockets for PC Cards. It masks
the details of the hardware used to implement these sockets, allowing higher-level software to be
developed which is able to control and utilize PC Cards without any knowledge of the actual
hardware interface.
Software layers above Socket Services provide additional capabilities. Immediately above Socket
Services is Card Services which arbitrates the use of Socket Services resources. Card Services is
responsible for taking requests from multiple processes and sharing the resources provided by
Socket Services among these processes. In this manner, Card Services may actually provide the
same hardware to different processes allowing the use of the hardware to be time-multiplexed.
For example, if a BPBÐFAT partition and a Flash File System partition both reside on a Flash card,
Card Services might provide the same windows into the host system memory address space for both
of the device drivers involved in accessing those partitions. Card Services is responsible for
handling overlapping requests, ensuring that the appropriate partition is available at the right
time.
Socket Services approaches the handling of the hardware it manages by addressing it as a number
of objects with different areas of functionality. Adapters are the hardware that connects a host
systemÕs bus to PC Card sockets. Host systems may have more than one adapter. Socket Services
reports the number of sockets, windows and EDC generators provided by each adapter installed.
Adapter power consumption and status change reporting may be controlled separately for each
adapter.
An adapter may have one or more sockets. Sockets are receptacles for PC Cards. Socket Services
describes the characteristics of each socket and allows socket resources to be manipulated and
current settings determined.
Socket Services also provides services to deal with PC Cards. These services report on current card
status, allow data to be read and/or written on 16-bit PC Cards which are not mapped into system
memory address space, and allow configuration space to be read and/or written on CardBus PC
Cards.
For performance reasons, it is often beneficial to map PC Cards into host system memory or I/O
address space. (XIP requires the ability to map PC Card memory arrays into system memory
address space.) Adapters may or may not provide this capability. An area of PC Card memory
and/or I/O address space is mapped into a corresponding host system area through a window.
From the Socket Services perspective, there are three types of hardware that may be involved in
mapping a PC CardÕs address space into a host systemÕs address space.
Adapters for 16-bit PC Cards have windows on the adapter that map PC Card address space into the
host systemÕs address space. These windows map memory and/or I/O address space. Devices on a
16-bit PC Card are always located at the same PC Card address. The area of a PC Card mapped into
a host systemÕs address space is determined by a combination of adapter decoding and PC Card
decoding.
Adapters for CardBus PC Cards do not perform any mapping of PC Card address space into a host
systemÕs address space. Base Address Registers on the PC Card itself are programmed to decode
host system addresses directly.
© 1999 PCMCIA/JEIDA 3
OVERVIEW
If an adapter also acts as a bridge to another host system bus, it may have bridge windows. Bridge
windows are used to route a range of host system addresses across the bridge to a PC Card. Bridge
windows are controlled separately from the windows on a 16-bit PC Card adapter or the Base
Address Registers on a CardBus PC Card. If an adapter uses bridge windows, the address ranges
routed by the bridge windows must include the ranges used by 16-bit PC Card adapter windows or
the ranges programmed into the Base Address Registers on a CardBus PC Card.
4 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
3 . FU N C T ION AL DE S C R IP T ION
While this notation resembles a C language function call, Socket Services is implemented in an
appropriate manner for its environment. For example, on an x86 architecture platform a ROM BIOS
Socket Services interface is handled through Interrupt 1AH with services based at 80H. A client
simply sets the host processorÕs registers for the service desired and executes the Socket Services
software interrupt. Status is returned using the Carry flag ([CF]) and registers specific to the service
invoked.
Special handling is required to be able to write many types of memory cards. It is not feasible to
attempt to include all the necessary handlers within Socket Services for all the possible types of
write/erase routines. Handling of technology-specific write requirements is intended to be
performed by a software layer above Socket Services. Socket Services provides access to the
hardware for these card technology routines.
3.2 Initialization
Socket Services is internally initialized during installation and no specific installation is required by
the client before making service requests. It is expected the client of Socket Services will check the
Socket Services Compliance to determine the level of service available. (See 5.3.12 GetSSInfo
[BOTH].)
3.3 Configuration
The next step is to enumerate the capabilities of the implementation. This entails determining the
number of adapters installed, how many sockets, bridge and 16-bit PC Card windows are supported
by each adapter, and exploring the power management and indicators available for each adapter.
As noted above, it is expected that Socket Services is virtualized by Card Services. Above Card
Services are device drivers for different types of PC Cards. These drivers map PC Cards into system
I/O and/or memory space to implement their functions. Multiple drivers may share PC Cards and
© 1999 PCMCIA/JEIDA 5
FUNCTIONAL DESCRIPTION
sockets and may even share windows. Card Services arbitrates requests for Socket Services resources
and is responsible for preserving any state information required to share these resources.
3.6 Docking
Whether or not Socket Services is dynamically loaded (or unloaded) there is a general sequence of
things that Socket Services needs to perform in order to handle dock events. Considering all
possible dock scenarios Socket Services really is performing one of three actions: add support (dock
where new controllers are present requiring new Socket Services handlers), remove support
(undock where controllers are gone requiring removal of Socket Services handlers) or
change/replace support (either dock or undock using same socket services instance). This leads to
the following sequences for communications between Socket Services and Card Services:
I. Replace Support
A. Socket Services issues ReplaceSocketServices to Card Services w/ Base log. Socket #
(obtained via MapPhyLogSocket) and number of sockets to replace. Until Socket Services
receives GetSetPriorHandler or Card Services returns from ReplaceSocketServices this
Socket Services rejects any request (except GetSSInfo, see below for more info) w/ BUSY
return code.
B. Upon receipt of GetSetPriorHandler
6 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
© 1999 PCMCIA/JEIDA 7
FUNCTIONAL DESCRIPTION
WA R N IN G :
Windows which map 16-bit PC Cards into host system memory address space
may have one or more pages. If a Window contains multiple pages, each page
must be 16 KBytes and windows must be sized as a multiple of the 16 KByte
page size.
8 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
© 1999 PCMCIA/JEIDA 9
SOCKET SERVICES SPECIFICATION
© 1999 PCMCIA/JEIDA 11
ASSUMPTIONS AND CONSTRAINTS
Sockets are numbered from zero (0) to one less than the number on the adapter (as returned by
InquireAdapter). The maximum number of sockets that may be supported depends on the Socket
Services binding.
12 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
information must be preserved by the Socket Services client. While Socket Services does not
preserve prior state information, the client may request current state information. In this case, the
client uses the various ÔGetÕ services prior to setting new state with the various ÔSetÕ services.
Windows are numbered from zero (0) to one less than the number on the adapter (as returned by
InquireAdapter). The maximum number of windows that may be supported depends on the Socket
Services binding.
© 1999 PCMCIA/JEIDA 13
ASSUMPTIONS AND CONSTRAINTS
14 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
5 . PR OGR AM I N T E R F AC E
© 1999 PCMCIA/JEIDA 15
PROGRAM INTERFACE
16 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
The description of each service begins with a heading that contains the service name as described
above on the left and an indicator on the right as follows:
[PC16] Service only applies to 16-bit PC Cards
[PC32] Service only applies to CardBus PC Cards
[BOTH] Service applies to both 16-bit PC Cards and CardBus PC Cards
© 1999 PCMCIA/JEIDA 17
PROGRAM INTERFACE
Provides an interface for Card Services to read and write values in CardBus configuration space.
This is used to support the Card Services AccessConfigurationRegister service as well as to allow
Card Services to allocate windows for CardBus PC Card functions by writing to the functionÕs Base
Address Registers.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
Socket I Specifies a physical socket on the adapter.
Function I Specifies the card function whose configuration space is to be accessed.
Action I The READ (00H) or WRITE (01H) operation to be performed.
Location I The offset into the functionÕs configuration space where the data is to be obtained or written.
This value must be aligned on a four-byte boundary.
Data I/O If Action is READ, this field returns the data read. If Action is WRITE, this field contains the
data to be written. This field always contains a DWORD value.
Return Codes
SUCCESS Operation was successful
BAD_ADAPTER Specified Adapter is invalid
BAD_ATTRIBUTE Specified Action is not READ or WRITE.
BAD_OFFSET Location is beyond the legal configuration space or is not aligned on a four byte
boundary.
BAD_SOCKET Specified Socket and/or Function is invalid
18 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
The AcknowledgeInterrupt service returns information about which socket or sockets on the adapter
specified by the input parameters has experienced a change in status.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
Sockets O Returns a bit-map representing the sockets which have experienced a status change, e.g.
0021H indicates sockets 0 and 5.
Return Codes
SUCCESS if Adapter is valid
BAD_ADAPTER if Adapter is invalid
Comments
A Socket Services client enables status change interrupts from adapter hardware with the
SetAdapter service. The client is responsible for installing an interrupt handler on the appropriate
vector. Specific events are masked or unmasked on a per socket basis using the SetSocket service.
When a status change occurs, the handler installed by the client receives control. For each adapter
capable of generating that interrupt, the interrupt handler makes an AcknowledgeInterrupt
request.
The AcknowledgeInterrupt request allows Socket Services to prepare the adapter hardware for
generating another interrupt if another status change occurs. Socket Services also informs the client
which socket or sockets have experienced a status change. Socket Services must preserve state
information relating to the cause of the status change interrupt if it is not preserved by the adapter
hardware. This information will later be requested with the GetStatus service.
After polling all possible adapters with the AcknowledgeInterrupt request, the clientÕs interrupt
handler prepares the host system for another status change interrupt for the adapter. Some time
later, outside of the hardware interrupt handler, the client polls Socket Services for new socket state
using GetStatus. This service returns a combination of socket and card state information.
By separating the acknowledgment of the interrupt from the retrieval of specific socket and card
status, the client may reduce the amount of RAM required to store state information. The client may
elect to recover state information only when it is able to fully process the information. In this
manner, a client only needs to evaluate complete state information for one socket at a time.
Note: Since adapters may share a status change interrupt, it is possible for this
service to be called even if no status change has occurred on the adapter
specified. In this case, Socket Services returns indicating success with all bits
in Sockets reset to zero (0).
© 1999 PCMCIA/JEIDA 19
PROGRAM INTERFACE
WA R N IN G :
20 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
The GetAccessOffsets service fills the buffer pointed to by pBuffer with an array of offsets for low-
level, adapter-specific, optimized PC Card access routines for adapters using register-based (I/O
port) access to PC Card memory address space. Adapters which access PC Card memory address
space through windows mapped into host system memory address space do not support this service.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
Mode I Specifies the processor mode. This is specific to the type of host platform. See the platform-
specific binding for additional detail.
NumDesired I Specifies the number of access offsets desired. Indirectly specifies the size of the client-
supplied buffer.
pBuffer I A pointer to a client-supplied buffer for the array of access offsets. NumDesired specifies the
number of entries that will fit in the buffer.
The offsets are specific to the type of host platform. See the platform-specific bindings for
additional details.
NumAvail O Returns the number of access offsets supported by this Socket Services handler for the
specified adapter.
Return Codes
SUCCESS if Adapter is valid
BAD_ADAPTER if Adapter is invalid
BAD_SERVICE if request is not supported
BAD_MODE if Mode is not supported
Comments
All of these offsets are in the Socket Services code segment. All sockets on an adapter must use the
same entry points for a mode. However, these offsets may vary depending upon the mode
specified.
A client uses the returned values to create the MAT passed to MTDs which allows these routines to
be called in a manner appropriate to the mode in which they will be used.
There is no requirement that an implementation support every possible mode. If a mode is not
supported, this request should return BAD_MODE.
© 1999 PCMCIA/JEIDA 21
PROGRAM INTERFACE
Offsets for the access routines are returned in the following order:
Set Address
Set Auto Increment
Read Byte
Read Word
Read Byte with Auto Increment
Read Word with Auto Increment
Read Words
Read Words with Auto Increment
Write Byte
Write Word
Write Byte with Auto Increment
Write Word with Auto Increment
Write Words
Write Words with Auto Increment
Compare Byte
Compare Byte with Auto Increment
Compare Words
Compare Words with Auto Increment
Definitions for the arguments passed to the above access routines are binding specific. (See the Card
Services Specification.)
22 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
The GetAdapter service returns the current configuration of the specified adapter.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
AdapterState O Current state of the adapter hardware. This parameter can be a combination of the following
values:
Value Meaning
AS_POWERDOWN If set, adapter hardware is attempting to conserve power. Before
using adapter, full power must be restored using the SetAdapter
service.
If reset, adapter hardware is fully powered and fully functional.
AS_MAINTAIN If set, all adapter and socket configuration information is maintained
while power consumption is reduced.
If reset, adapter and socket configuration information must be
maintained by the client.
This value is only valid if the AS_POWERDOWN value is set.
SCRouting O Returns status change interrupt routing status. This parameter is an IRQ data type. It is a
combination of a binary value representing the IRQ level used for routing the status change
signal and the following optional bit-masks:
Value Meaning
IRQ_HIGH If set, status change interrupt is active-high.
If reset, status change interrupt is active-low.
IRQ_ENABLE If set, status change interrupt is enabled. If an unmasked status
change event occurs, the adapter generates a hardware interrupt of
the specified level.
If reset, status change interrupts are not generated by the adapter.
Return Codes
SUCCESS if Adapter is valid
BAD_ADAPTER if Adapter is invalid
Comments
Preserving state information may not allow the same level of power reduction as not preserving
state information. The ability to reduce power consumption is vendor specific and reduced power
settings may not result in any power savings.
All parameters have been designed to map directly to the values required for the SetAdapter
service. This is intended to allow clients of Socket Services to retrieve current configuration
information with this service, make changes and then use the SetAdapter service to modify the
configuration without having to create initial values for each parameter.
© 1999 PCMCIA/JEIDA 23
PROGRAM INTERFACE
The GetAdapterCount service returns the number of adapters supported by all Socket Services
handlers in the host system. It is also used to determine if one or more Socket Services handlers are
installed.
Parameter I/O Description
TotalAdapters O Number of adapters in host environment, if there is a Socket Services handler installed. Must
return the total number of adapters in the system, including both 16-bit PC Card-only and
CardBus PC Card adapters.
Signature O If RETCODE is set to SUCCESS and this field is set to the ASCII characters 'SS' on return,
there is at least one Socket Services handler installed and TotalAdapters is set to the number
of adapters in the host environment.
Comments
The client should ensure Signature does not contain 'SS' before calling this service. This ensures the
client does not use TotalAdapters if the routine handling the request does not support Socket Services
but still returns SUCCESS.
If a Socket Services handler is not installed, the returned parameters are undefined. Most
environments return an undefined value not equal to SUCCESS. However, an environment may
use a calling mechanism shared with another, unrelated handler. There is no guarantee the other
handler will properly reject an unrecognized Socket Services request. Before accepting the value in
TotalAdapters as the number of adapters installed, the client must confirm Signature contains the
ASCII characters 'SS'.
Even if a Socket Services handler is present, there might not be any adapter hardware present. In
this case, SUCCESS is returned, Signature contains 'SS' and TotalAdapters is zero (0). Clients must be
prepared for this situation.
Return Codes
SUCCESS if Adapter is valid
24 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
The GetBridgeWindow service returns the current configuration of the bridge window specified by
the input parameters. If present on the adapter, PC Card bridge windows are required to allow
access to devices on PC Cards.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
Window I Specifies a bridge window on the adapter.
Socket O Physical socket to which the bridge window is currently assigned.
Size O Returns the window's current size in bytes.
State O Defined as below. Current state of the window hardware. This parameter can be a
combination of the following values:
Value Meaning
WS_IO If set, this bridge window routes host system I/O accesses to the
PC Card socket.
If reset, this bridge window routes host system memory accesses
to the PC Card socket.
WS_ENABLED If set, the bridge window is enabled and routing host system
accesses to a PC Card socket.
If reset, the bridge window is disabled.
WS_PREFETCH If set, the bridge windowÕs prefetch hardware is enabled.
If reset, the bridge windowÕs prefetch hardware is not enabled (or
does not exist).
WS_CACHABLE If set, the bridge windowÕs cache coherency and prefetch hardware
are enabled.
If reset, the bridge windowÕs cache coherency hardware is not
enabled (or does not exist).
Note: All cachable windows are prefetchable.
Base O Returns the current base address of the specified bridge window. It is the first address within
the host system memory or I/O address space routed to the PC Card socket.
Return Codes
SUCCESS if Adapter and Window are valid
BAD_ADAPTER if Adapter is invalid
BAD_WINDOW if Window is invalid
Comments
All parameters have been designed to map directly to the values required for the
SetBridgeWindow service. This is intended to allow clients of Socket Services to retrieve current
configuration information with this service, make changes and then use the SetBridgeWindow
service to modify the configuration without having to create initial values for each parameter.
© 1999 PCMCIA/JEIDA 25
PROGRAM INTERFACE
26 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
The GetEDC service returns the current configuration of the EDC generator specified by the input
parameters.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
EDC I Specifies a physical EDC generator on the adapter.
Socket O Returns the physical socket on the adapter that the EDC generator is assigned.
State O Returns the current state of the EDC generator. This field may be combination of the following
values:
Value Meaning
EC_UNI If set, EDC generator is computing in only one direction.
EC_WRITE determines whether computation is on read or write
accesses.
If reset, EDC generator is computing on both read and write
accesses.
EC_WRITE If set, EDC generator is computing only on write accesses.
If reset, EDC generator is computing only on read accesses.
This value is only valid if EC_UNI is set.
Type O Returns type of EDC generated. This parameter may be one of the following values:
Value Meaning
ET_CHECK8 EDC generated is 8-bit checksum.
ET_SDLC16 EDC generated is 16-bit CRC-SDLC.
ET_SDLC32 EDC generated is 32-bit CRC-SDLC.
Return Codes
SUCCESS if Adapter and EDC are valid
BAD_ADAPTER if Adapter is invalid
BAD_EDC if EDC is invalid
Comments
All parameters have been designed to map directly to the values required by the SetEDC service.
This is intended to allow clients of Socket Services to retrieve current configuration information with
this service, make changes and then use SetEDC to modify the configuration without having to
create initial values for each parameter.
© 1999 PCMCIA/JEIDA 27
PROGRAM INTERFACE
The GetPage service returns the current configuration of the page specified by the input
parameters. It is only valid for memory windows (WS_IO is reset for the window).
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
Window I Specifies a physical window on the adapter.
Page I Specifies the page within the Window.
State O Current state of the Page within the Window. This parameter can be a combination of the
following values:
Value Meaning
PS_ATTRIBUTE If set and Page is enabled, PC Card attribute memory is mapped
into host system memory space.
If reset and Page is enabled, PC Card common memory is mapped
into host system memory space.
PS_ENABLED If set, Page is enabled and PC Card is mapped into the host system
memory or I/O space.
If reset, Page is disabled.
Some hardware implementations may not allow individual pages to
be disabled, only entire windows. Such implementations always
return with PS_ENABLED set unless the entire window is disabled.
PS_WP If set, Page is write-protected by page mapping hardware in socket.
If reset, Page is not write-protected by socketÕs page-mapping
hardware. However, PC Card memory may be write-protected in
other ways.
Offset O The offset of a PC CardÕs memory being mapped into host system memory space by this
page. The following formula may be used to calculate the system memory address to access
the PC Card memory being mapped by the page:
Base + (Page * 16 KBytes)
Return Codes
SUCCESS if Adapter, Page and Window are valid
BAD_ADAPTER if Adapter is invalid
BAD_PAGE if Page is invalid
BAD_WINDOW if Window is invalid
Comments
All parameters have been designed to map directly to the values required for the SetPage service.
This is intended to allow clients of Socket Services to retrieve current configuration information with
this service, make changes and then use the SetPage service to modify the configuration without
having to create initial values for each parameter.
All pages in windows which are subdivided into multiple pages are 16 KBytes in size. A window
with only a single page may be any size meeting the constraints returned by InquireWindow.
28 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
To map PC Card memory into system memory requires that both the WS_ENABLED value of the
State field used by Get/SetWindow be set and the PC_ENABLED value of the State field used by
Get/SetPage be set. For windows with WS_PAGED reset, the PS_ENABLED value is ignored by
SetPage. The window is enabled and disabled by the WS_ENABLED value of SetWindow. GetPage
for windows with WS_PAGED reset reports the value of WS_ENABLED for PS_ENABLED.
For windows with WS_PAGED set, WS_ENABLED acts as a global enable/disable for all pages
within the window. Once WS_ENABLED has been set using SetWindow, individual pages may be
enabled and disabled using SetPage and PS_ENABLED.
If WC_WENABLE is reported as set by InquireWindow, Socket Services preserves the state of
PS_ENABLED for each page in the window whenever WS_ENABLED is changed by SetWindow. If
WC_ENABLE is reported as reset by InquireWindow, the client must use SetPage to set the
PS_ENABLED state for each page within the window after WS_ENABLED is set with SetWindow.
© 1999 PCMCIA/JEIDA 29
PROGRAM INTERFACE
The GetSetPriorHandler service replaces or obtains the entry point of a prior handler for the
Adapter specified by the input parameters.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
Mode I Specifies whether the request is to Get the prior handler or Set a new handler.
If Mode is zero, the request is to Get the prior handler,
If Mode is one, the request is to Set the prior handler.
pHandler I/O If Mode is Get (equal to zero), this parameter is ignored on input and used to return the entry
point of the prior handler.
If Mode is Set (equal to one), this parameter contains a pointer to a new prior handler and is
used to return the entry point of the old prior handler.
Return Codes
SUCCESS if Adapter is valid
BAD_ADAPTER if Adapter is invalid
BAD_SERVICE if request is to Set a prior handler for a ROM-based handler which is hard-coded
to chain to another type of handler
BAD_MODE if Mode is not supported
Comments
If the handler responding to this request is installed in ROM and is the first handler on the Socket
Services chain, a request to Set the prior handler may be failed.
One reason a Set request would fail is the Socket Services it is addressing is in ROM as the first
extension of another type of handler which is sharing the call chain. In this case, the vector to the
prior handler is probably hard-coded into the ROM and not in RAM prohibiting it from being
updated. This should not cause any difficulty to a client wishing to revise the chain, since this Socket
Services handler may be bypassed by registering the values returned from a Get request to this
Socket Services with a replacement Socket Services handler as its prior handler.
Note: The entry point of the prior handler is always returned, even on Set
requests, if the service succeeds.
WA R N IN G :
This service should only be used with the first adapter serviced by a Socket
Services handler as returned by the GetSSInfo service. If a handler services
more than one adapter, subsequent requests to the handler for adapters other
than the first return the same information and set the same internal data
variables.
30 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
WA R N IN G :
© 1999 PCMCIA/JEIDA 31
PROGRAM INTERFACE
The GetSetSSAddr service returns code and data area descriptions and provides a way to pass
mode-specific data area descriptors to a Socket Services handler.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
Mode I Specifies the processor mode. This is specific to the type of host platform. See the platform-
specific binding for additional detail.
Subfunc I Specifies the type of request.
If Subfunc is zero (0), Socket Services returns a description of the code and main data areas in
the client-supplied buffer.
If Subfunc is one (1), Socket Services returns a description of any additional data areas in the
client-supplied buffer.
If Subfunc is two (2), Socket Services accepts an array of mode-specific pointers to additional
data areas in the client-supplied buffer.
If Subfunc is three (3), Socket Services returns a description of the I/O port range or ranges
used by the adapter hardware managed by Socket Services in the client supplied buffer.
If Subfunc is four (4), Socket Services returns in the client supplied buffer a description of the
main data area and the code area and entry point that utilizes the packet interface
NumAddData I/O Number of additional data areas.
If Subfunc is zero (0), Socket Services returns the number of additional data areas in this
parameter.
If Subfunc is one (1), the client-supplied buffer returns this number of descriptors for additional
data areas.
If Subfunc is two (2), Socket Services accepts this number of mode-specific pointers to
additional data areas in the client-supplied buffer.
If Subfunc is three (3), the NumAddData field returns the number of I/O address ranges in this
parameter.
If Subfunc is four (4), this field is reserved and must be reset to zero (0).
pBuffer I/O A pointer to a client-supplied buffer of the appropriate length for the request.
If Subfunc is zero (0), Socket Services returns a description of the code and main data
segment in the buffer.
If Subfunc is one (1), Socket Services returns a description of the additional data areas in the
client-supplied buffer.
If Subfunc is two (2), the client-supplied buffer contains mode-specific pointers to additional
data areas as input to Socket Services.
If Subfunc is three (3), the client supplied buffer contains a list of I/O address ranges that are
used to control the sockets for this adapter.
If Subfunc is four (4), Socket Services returns in the buffer a mode-specific entry point that
utilizes the packet interface.
Comments
Some Socket Services handlers may require access to other memory regions than their main data
area. If this is the case, the value in NumAddData reflects the number of unique memory regions the
Socket Services handler needs to address besides the main data segment.
32 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
A Card Services using an entry point returned by this service is expected to establish the
appropriate mode-specific pointers to the code and main data area prior to calling the entry point.
When using the entry point returned by this service, the client uses the absolute adapter number
within the host environment. For example, if two Socket Services handlers are installed, with the
first handler supporting two adapters and the second handler supporting three adapters, the client
should use adapter values of zero through one for the first handler and values of two through four
for the second handler.
When Subfunc is zero (0), the buffer pointed to by pBuffer has the following format:
Offset Size Description
00H Double Word 32-bit linear base address of code segment in system memory
04H Double Word Limit of code segment
08H Double Word Entry point offset
0CH Double Word 32-bit linear base address of main data segment in system memory
10H Double Word Limit of data segment
14H Double Word Data area offset
When Subfunc is one (1), there are entries in the client-supplied buffer pointed to by pBuffer
returned for each of the additional data segments. Each entry in the buffer has the following format:
Offset Size Description
00H Double Word 32-bit linear base address of additional data segment
04H Double Word Limit of data segment
08H Double Word Data area offset
When Subfunc is two (2), there are entries in the client-supplied buffer pointed to by pBuffer for
each additional data area. These entries are mode-specific pointers created by the client for each
additional data area. Each entry in the buffer has the following format:
Offset Size Description
00H Double Word 32-bit offset
04H Double Word Selector
08H Double Word Reserved
When Subfunc is three (3), there are entries in the client-supplied buffer pointed to by pBuffer for
each additional data area. Each entry in the buffer has the following format:
Offset Size Description
00H Double Word 32-bit I/O base address for control ports
04H Double Word Number of I/O ports consumed for this entry
When Subfunc is four (4), the buffer pointed to by pBuffer has the following format:
Offset Size Description
00H Double Word 32-bit linear base address of code segment in system memory
04H Double Word Limit of code segment
08H Double Word Entry point offset (entry point that utilizes the stack-packet interface)
0CH Double Word 32-bit linear base address of main data segment in system memory
10H Double Word Limit of data segment
14H Double Word Data area offset
© 1999 PCMCIA/JEIDA 33
PROGRAM INTERFACE
WA R N IN G :
This service should only be used with the first adapter serviced by a Socket
Services handler as returned by the GetSSInfo service. If a handler services
more than one adapter, subsequent requests to the handler for adapters other
than the first return the same information and set the same internal data
variables.
Return Codes
SUCCESS if Adapter, Mode, and Subfunc are valid
BAD_ADAPTER if Adapter is invalid
BAD_SERVICE if request is not supported
BAD_MODE if Mode is not supported
BAD_ATTRIBUTES if number of additional data segments specified when Subfunc is one (1) or two (2)
does not equal the number of additional data segments returned when Subfunc is
zero (0)
34 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
The GetSocket service returns the current configuration of the socket identified by the input
parameters.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
Socket I Specifies a physical socket on the adapter.
SCIntMask O Returns current setting of mask for events that generate a status change interrupt when they
occur on the socket. If a value is set the event generates a status change interrupt if the
following conditions are met: The event is supported as indicated by the SCIntCaps parameter
of InquireSocket and status change interrupts have been enabled by SetAdapter.
This parameter is a combination of the SBM_x values defined in InquireSocket.
Vcontrol O This parameter takes on the following values:
Value Meaning
VCTL_CISREAD If reset, the VCC level and VPP[2::1] levels are controlled by the
VccLevel and VppLevels fields.
If set, the VCC level and VPP[2::1] levels are set to the value
indicated by the voltage sense signaling from the PC Card.
VCTL_OVERRIDE If reset, the VCC level matches the value indicated by the voltage
sense signaling from the PC Card.
If set, the VCC level does not match the value indicated by the
voltage sense signaling from the PC Card.
Note: The VCTL_CISREAD and VCTL_OVERRIDE bits are mutually exclusive. In
addition, Socket Services will reset these bits upon card removal.
The following values are mutually exclusive and are only valid when a PC Card is inserted in
the socket. They may be read before the socket is powered. They indicate the voltage sense
value the PC Card is signaling (VS[2::1] signals, see the Electrical Specification) for
reading the Card Information Structure (CIS):
VCTL_50V Use 5.0 V to read the CIS.
VCTL_33V Use 3.3 V to read the CIS.
VCTL_XXV Use X.X V to read the CIS.
Note: When initially powering a PC Card with SetSocket, if the VCTL_CISREAD value is
set, the PC Card is powered to the value indicated by the voltage sense signaling
from the card.
© 1999 PCMCIA/JEIDA 35
PROGRAM INTERFACE
VccLevel O Returns current power level of VCC signal. This is an index into the array of PWRENTRY
items returned by InquireAdapter. Valid values range from zero to one less than the number
of levels returned by InquireAdapter.
VppLevels O Returns current power level of VPP[2::1] signals. This is two indices into the array of
PWRENTRY items returned by InquireAdapter. Separate values are returned in this
parameter for the VPP1 and VPP2 signals. Valid values range from zero to one less than the
number of levels returned by InquireAdapter.
Note: The VccLevel and VppLevels always return the actual levels currently applied to the
card.
State O Returns latched values representing state changes experienced by the socket hardware. Only
those values set in the InquireSocket SCRptCaps parameter will ever be set. Once set,
values must be explicitly reset using SetSocket.
This parameter is a combination of the SBM_x values defined in InquireSocket for the
SCIntCaps and SCRptCaps parameters.
CtlInd O Returns current setting of socket controls and indicators. If a value is set, the corresponding
control or indicator is on. If a value is reset, the corresponding control or indicator is off. Values
supported by the socket are defined by the CtlIndCaps parameter returned by InquireSocket.
This parameter is a combination of the SBM_x values defined in InquireSocket for the
CtlIndCaps parameter.
IREQRouting O Returns PC Card IREQ# routing status. This parameter is an IRQ data type. It is a
combination of a binary value representing the IRQ level used for routing the PC Card IREQ#
signal and the following optional values:
Value Meaning
IRQ_HIGH If set, the PC Card IREQ# signal is inverted.
If reset, the PC Card IREQ# signal is routed without inversion.
IRQ_ENABLE If set, IREQ# routing is enabled.
If reset, IREQ# routing is not enabled and interrupts from a PC
Card in the socket are ignored.
IFType O Returns the current interface and DMA settings. Only one of the following interface settings is
valid at a time: IF_IO, IF_MEMORY, IF_CARDBUS, or IF_CUSTOM. The DREQ and DMA
Channel values are only valid if the interface is set to IF_IO and the socket supports DMA as
indicated by the IF_DMA value returned by InquireSocket.
Value Meaning
IF_MEMORY Socket interface is set to Memory-Only. (See the Electrical
Specification.)
IF_IO Socket interface is set to I/O and Memory interface. (See the
Electrical Specification.)
IF_CARDBUS Socket interface is set to CardBus PC Card mode, i.e. the card
inserted in the socket is a CardBus PC Card. (See the Electrical
Specification.)
IF_CUSTOM Socket interface is set to a custom interface. The index of the
current custom interface is returned in IFIndex. (See the Electrical
Specification and see also the Metaformat Specification.)
DREQ Binary value describing the PC Card signal used for DREQ#. If
reset to zero, a DMA channel is not currently assigned to this
socket.
If set to one (1), DREQ# is assigned to the SPKR# pin.
If set to two (2), DREQ# is assigned to the IOIS16# pin.
If set to three (3), DREQ# is assigned to the INPACK# pin.
DMA Channel Binary value of the DMA channel currently assigned to this socket.
If DREQ is reset to zero, this value is undefined and should be
ignored.
IFIndex O Returns the current Custom Interface setting when IFType is set to IF_CUSTOM. This is an
index into the array of dCustomIF items returned by InquireSocket. Valid values range from
zero to one less than the number of interface numbers returned by InquireSocket.
36 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
Return Codes
SUCCESS if Adapter and Socket are valid
BAD_ADAPTER if Adapter is invalid
BAD_SOCKET if Socket is invalid
Comments
All parameters have been designed to map directly to the values required by the SetSocket service.
This is intended to allow clients of Socket Services to retrieve current configuration information with
this service, make changes and then use SetSocket to modify the configuration without having to
create initial values for each parameter.
© 1999 PCMCIA/JEIDA 37
PROGRAM INTERFACE
The GetSSInfo service returns the compliance level of the Socket Services interface supporting the
adapter specified by the input parameters and identifies the adapters serviced by the handler.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
Each adapter may be handled by a different Socket Services handler. This argument identifies
a specific Socket Services handler. If a Socket Services handler supports more than one
adapter, the same information is returned for any adapter the handler supports.
Compliance O Returns the Socket Services Interface Specification compliance level as a Binary Coded
Decimal (BCD) value. If the handler is compliant with Release 12.98 of the PC Card Socket
Services specification, 1298H is returned.
Publication Compliance
PC Card Standard, February 1999 (Release 7.0) 0700H (7.00)
PC Card Standard, April 1998 (Release 6.1) 0610H (6.10)
PC Card Standard, March 1997 (Release 6.0) 0600H (6.00)
PC Card Standard, February 1995 (Release 5.0) 0500H (5.00)
PCMCIA 2.1 / JEIDA 4.2 0210H (2.10)
PCMCIA 2.0 / JEIDA 4.1 0200H (2.00)
PCMCIA 1.0 / JEIDA 4.0 0100H (1.00)
NumAdapters O Returns the number of adapters supported by this specific Socket Services handler.
FirstAdapter O Returns the first adapter number supported by this specific Socket Services handler. The first
Socket Services handler installed always returns zero (0) to indicate it supports the first
adapter in the system.
Return Codes
SUCCESS if Adapter is valid
BAD_ADAPTER if Adapter is invalid
Example
If a host system had five adapters, two Socket Services handlers and the first handler supported
three (3) adapters, this request returns with FirstAdapter equal to zero (0) and NumAdapters equal to
three (3), for Adapter values of zero, one or two (0, 1 or 2). If this request was made with Adapter set
to three or four (3 or 4), it would return with FirstAdapter set to three (3) and NumAdapters set to two
(2).
38 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
The GetStatus service returns the current status of the card, socket, controls and indicators for the
socket identified by the input parameters.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
Socket I Specifies a physical socket on the adapter.
CardState O Returns instantaneous state. This parameter represents the current state of the socket and PC
Card, if inserted. It is a combination of the SBM_x values defined in InquireSocket for the
SCIntCaps and SCRptCaps parameters.
SBM_LOCKED, SBM_EJECT and SBM_INSERT are vendor specific and may not be
supported. See InquireSocket SCRptCaps.
For 16-bit PC Cards, SBM_WP is the output of WP (pin 33). SBM_BVD1 is the output of
BVD1 (pin 63). SBM_BVD2 the output of BVD2 (pin 62). SBM_RDYBSY is the output of
READY (pin 16) and SBM_CD is the AND-ed value of the CD1# (pin 36) and CD2# (pin 67)
outputs. Note that these bits are set when the defined states are true. This is the inverted output
of BVD1, BVD2 and the Card Detect signals.
If the interface is set to I/O and Memory mode, the meaning of many of these signals change.
Values reported are always based on the signal levels at the socket. If the IFType is IF_IO, this
service does NOT read status from the Pin Replacement Register. This is the responsibility of
the client.
For CardBus PC Cards, the state of the card is read from the Function Present State register
resident on the card. This register shows the current value for such states as SBM_BVD1.
SocketState O Returns same latched information as State parameter of GetSocket.
This parameter is a combination of the SBM_x values defined in InquireSocket for the
SCIntCaps and SCRptCaps parameters.
CtlInd O Returns same information as CtlInd parameter of GetSocket, the current setting of socket
controls and indicators. If a value is set, the corresponding control or indicator is on. If a value
is reset, the corresponding control or indicator is off. Values supported by the socket are
defined by the CtlIndCaps parameter returned by InquireSocket.
This parameter is a combination of the SBM_x values defined in InquireSocket for the
CtlIndCaps parameter.
IREQRouting O Returns same information as IREQRouting parameter of GetSocket.
IFType O Returns the same information as IFType parameter of GetSocket.
Return Codes
SUCCESS if Adapter and Socket are valid
BAD_ADAPTER if Adapter is invalid
BAD_SOCKET if Socket is invalid
© 1999 PCMCIA/JEIDA 39
PROGRAM INTERFACE
WA R N IN G
40 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
The GetVendorInfo service returns information about the vendor implementing Socket Services for
the adapter specified in the input parameters.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
Type I Specifies the type of vendor information to return in the client-supplied buffer. The only Type
currently defined is zero (0) which is an ASCIIZ string describing the implementer.
pBuffer I If Type is zero (0), this parameter points to a client-supplied buffer to be filled with an ASCIIZ
string describing the implementer. The buffer has the following form:
typedef struct tagVISTRUCT {
WORD wBufferLength = (BUF_SIZE - 4);
WORD wDataLength;
char szImplementor[BUF_SIZE - 4];
} VISTRUCT;
The wBufferLength field is set by the client to the length of the VISTRUCT structure
provided less the size of the first two fields (4 bytes). The wDataLength field is set by Socket
Services to the size of the information it has to return. Only the information that fits in the buffer
is copied. If the wDataLength is greater than wBufferLength, the information is truncated.
Release O VendorÕs release number in BCD format. Each time a vendor releases a new version of their
Socket Services handler, they should change the value returned. The initial Release should
use the value 0100H to represent Release 1.00 of a vendorÕs Socket Services handler. A
subsequent release of an updated version compliant with the same level of the Socket
Services Interface Specification should change this value according to the vendorÕs change
control procedures.
The first release of an Socket Services handler compliant with a new specification should
again use 0100H to indicate this is the vendorÕs first release compliant with the new Socket
Services specification. Each Socket Services released by a vendor must be uniquely identified
by the combination of the compliance level returned by the Compliance parameter of
GetSSInfo and this parameter.
Return Codes
SUCCESS if Adapter and Type are valid
BAD_ADAPTER if Adapter is invalid
BAD_SERVICE if Type is invalid
© 1999 PCMCIA/JEIDA 41
PROGRAM INTERFACE
The GetWindow service returns the current configuration of the window specified by the input
parameters.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
Window I Window number. Specifies a physical window on the adapter.
Socket O Returns the physical socket the Window is currently assigned. Socket numbers range from
zero to fifteen using bits 0 to 3. The rest of the bits in this field are binding specific.
Size O Returns the windowÕs current size. If Size is equal to zero (0), the window is the maximum
size that may be represented by the data type used for this parameter plus one. For example, if
the data type used for Size is a word and it is expressed in units of a byte, a value of zero
represents a window size of 65,536 bytes.
State O Defined as below. Current state of the window hardware. This parameter can be a
combination of the following values:
Value Meaning
WS_IO If set, window maps registers on a 16-bit PC Card into the host
system's I/O address space.
If reset, window maps memory address space on a 16-bit PC Card
into the host system's memory address space.
WS_ENABLED If set, window is enabled and mapping a cardÕs address space into
the host system memory or I/O address space.
If reset, window is disabled.
WS_16BIT If set, window is programmed for a 16-bit data bus width.
If reset, window is programmed for an 8-bit data bus width.
WS_PAGED If set, window is subdivided into multiple 16 KByte pages whose
card offset addresses may be set individually using SetPage.
If reset, window is a single page.
This value is only valid for memory windows (WS_IO reset).
WS_EISA If set, window is using EISA I/O mapping.
If reset, window is using ISA I/O mapping.
This value is only valid for I/O windows (WS_IO set).
WS_CENABLE If set, accesses to I/O ports in EISA common I/O areas generate
card enables.
If reset, accesses to I/O ports in EISA common I/O areas are
ignored.
This value is only valid for I/O windows (WS_IO set) that have
WS_EISA set.
42 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
Speed O This parameter is the actual access speed being used by the window. It uses the format of the
Device Speed Code and Extended Device Speed Codes of the Device Information Tuple. (See
the Metaformat Specification.)
The Device Speed Code Values are used when what would be the mantissa of an Extended
Device Speed Code is reset to zero (0). If the mantissa is non-zero, supported device speeds
are coded according to the Extended Device Speed Code.
This parameter may not match the value specified by a successful SetWindow request. If
Socket Services does not support the speed requested, it uses the next slowest speed it
supports.
For Socket Services, Bit 7 of Speed is reserved and is reset to zero (0).
This parameter is not used and should be ignored for I/O windows (WS_IO set).
Base O Returns the current base address of the specified window. It is the first address within the host
system memory or I/O address space to which the window responds.
Return Codes
SUCCESS if Adapter and Window are valid
BAD_ADAPTER if Adapter is invalid
BAD_WINDOW if Window is invalid
Comments
All parameters have been designed to map directly to the values required for the SetWindow
service. This is intended to allow clients of Socket Services to retrieve current configuration
information with this service, make changes and then use the SetWindow service to modify the
configuration without having to create initial values for each parameter.
For memory mapping windows, the area of the PC Card memory array mapped into the host
system memory space may be managed by GetPage and SetPage requests.
To map 16-bit PC Card memory into system memory requires that both the WS_ENABLED value of
the State field used by Get/SetWindow be set and the PS_ENABLED value of the State field used by
Get/SetPage be set. For windows with WS_PAGED reset, the PS_ENABLED value is ignored by
SetPage. The window is enabled and disabled by the WS_ENABLED value of SetWindow. GetPage
for windows with WS_PAGED reset reports the value of WS_ENABLED for PS_ENABLED.
For windows with WS_PAGED set, WS_ENABLED acts as a global enable/disable for all pages
within the window. Once WS_ENABLED has been set using SetWindow, individual pages may be
enabled and disabled using SetPage and PS_ENABLED.
If WC_WENABLE is reported as set by InquireWindow, Socket Services preserves the state of
PS_ENABLED for each page in the window whenever WS_ENABLED is changed by SetWindow. If
WC_ENABLE is reported as reset by InquireWindow, the client must use SetPage to set the
PS_ENABLED state for each page within the window after WS_ENABLED is set with SetWindow.
© 1999 PCMCIA/JEIDA 43
PROGRAM INTERFACE
The InquireAdapter service returns information about the capabilities of the adapter specified by
the input parameters.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
pBuffer I Points to a client-supplied buffer to be filled with information about the adapter. The buffer has
the following form:
typedef struct tagAISTRUCT {
WORD wBufferLength;
WORD wDataLength;
ACHARTBL CharTable;
WORD wNumPwrEntries = NUM_ENTRIES;
PWRENTRY PwrEntry[NUM_ENTRIES];
} AISTRUCT;
The wBufferLength field is set by the client to the size in bytes of AISTRUCT less the size of
the first two fields (4 bytes). The wDataLength field is set by Socket Services to the size of the
information it has to return. Only the information that fits in the buffer is copied. If the
wDataLength is greater than wBufferLength, the information is truncated.
The ACHARTBL structure is defined on page 46.
A PWRENTRY is a structure which has two members. One member is a binary value
representing a DC voltage level in tenth of a volt increments (25.5 V DC maximum). The other
member indicates which power signals may be set to the specified voltage level. It may be set
to a combination of the following: VCC, VPP1, and/or VPP2.
A PWRENTRY is a structure which has two members. One member is a binary value
representing a DC voltage level in tenth of a volt increments (25.5 V DC maximum). The other
member indicates which power signals may be set to the specified voltage level. It may be set
to a combination of the following: VCC, VPP1, and/or VPP2.
The PWRENTRY structure is defined on page 47.
NumSockets O Returns the number of sockets provided by the adapter.
NumWindows O Returns the number of 16-bit PC Card windows provided by the adapter.
NumEDCs O Returns the number of Error Detection Code (EDC) generators provided by the adapter.
NumBridgeWindows O Returns the number of bridge windows provided by the adapter.
Return Codes
SUCCESS if Adapter is valid
BAD_ADAPTER if Adapter is invalid
Comments
By convention, all sockets on an adapter use the same PWRENTRY array. There is one PWRENTRY
for each supported voltage.
44 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
The PWRENTRY only indicates it is possible to set one or more of the power pins to that power
level. The PWRENTRY does not indicate acceptable power combinations for the power pins. The
example below indicates VCC, VPP1 and VPP2 can be set to No Connect and that VPP1 and VPP2
can be set to 12 V. This table does not define any relationships between VPP1, VPP2, and VCC; for
example, implementations may fail requests to set VCC to 0 V and either VPP1 or VPP2 to 12 V. . It
is up to the Socket Services client to determine if a particular combination of power levels is valid for
the PC Card in the socket.
Example
AISTRUCT AdapterInfo = {
18, //Size of client-supplied buffer is 18 bytes
18, //Size of data returned is 18 bytes
{0, //Indicators, power and data bus width
//controlled at the socket
0, //No cache support on adapter
0xDEB8, //Status changes may be routed to IRQ levels
// 3, 4, 5, 7, 9, 10, 11, 12, 14, and 15
// as an active high signal
0}, //Status changes are not available on any
// level as an active low signal
3, //Number of PWRENTRY elements
((VCC | VPP1 | VPP2) << 8) | 0, // Vcc, Vpp1 and Vpp2 - No connect
((VCC | VPP1 | VPP2) << 8) | 50, // Vcc, Vpp1 and Vpp2 - 5.0 VDC
((VPP1 | VPP2) << 8) | 120 // Vpp1 and Vpp2 - 12.0 VDC
};
See Also GetAdapter, SetAdapter
© 1999 PCMCIA/JEIDA 45
PROGRAM INTERFACE
Member Description
AdpCaps Flags indicating whether certain characteristics are controlled at an adapter level or at a socket level. If
set, the characteristic is controlled at the adapter level. This member can be a combination of the
following values:
Value Meaning
AC_IND Indicators - If AC_IND is set, indicators for write-protect, card lock, battery
status, busy status and XIP status are shared for all sockets on the adapter.
If AC_IND is reset, there are individual indicators for each socket on the
adapter.
AC_PWR Power Level - If AC_PWR is set, even though the interface provides for
separate power level controls for each socket using the SetSocket service,
the adapter requires that all sockets be set to the same value.
Socket Services is responsible for resolving conflicts between settings for
individual sockets. When the AC_PWR flag is set, setting VPP[2::1] to 12 V
results in 12 V being applied to all of the sockets on the adapter. Socket
Services does not remove 12 V from the VPP[2::1] lines until all sockets set
VPP[2::1] back to the VCC level.
If AC_PWR is reset, power levels may be individually set for each socket on
the adapter.
AC_DBW Data Bus Width - If AC_DBW is set, all windows on the adapter must use the
same data bus width.
If AC_DBW is reset, the data bus width is set individually for each window on
the adapter.
AC_CARDBUS CardBus PC Card capable. If set, all sockets are CardBus PC Card-capable.
If reset, then all sockets are not CardBus PC Card-capable.
CacheLineSize Host system cache line size in units of 32-bit words. CardBus PC Cards participating in caching protocol
need this information to know when to retry burst accesses at cache line boundaries. If bridge windows
on the adapter do not support caching or there are no bridge windows on the adapter, this field is reset to
zero. This field is also reset to zero if the adapter does not support CardBus PC Cards.
ActiveHigh Bit-map of IRQ levels the Status Change interrupt may be routed with an active high state when an
unmasked event occurs.
ActiveLow Bit-map of IRQ levels the Status Change interrupt may be routed with an active low state when an
unmasked event occurs.
46 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
Member Description
PowerLevel DC voltage level in tenth of a volt increments. The power level ranges from zero (meaning No Connect)
to 25.5 V DC in tenth of a volt increments.
ValidSignals Flags indicating whether voltage is valid for specific signals. This member can be a combination of the
following values:
Value Meaning
VCC Voltage level is valid for VCC signal.
VPP1 Voltage level is valid for VPP1 signal.
VPP2 Voltage level is valid for VPP2 signal.
© 1999 PCMCIA/JEIDA 47
PROGRAM INTERFACE
The InquireBridgeWindow service returns information about the capabilities of the bridge window
specified by the input parameters.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
Window I Specifies a bridge window on the adapter.
pBuffer I Points to a client-supplied buffer to be filled with information about the bridge window. The
buffer has the following form:
typedef struct tagBWISTRUCT {
WORD wBufferLength;
WORD wDataLength;
BWINTBL WinTable[NUM_TYPES];
} BWISTRUCT;
The wBufferLength field is set by the client to the size in bytes of BWISTRUCT less the size of
the first two fields (4 bytes). The wDataLength field is set by Socket Services to the size of the
information it has to return. Only the information that fits in the buffer is copied. If the
wDataLength is greater than wBufferLength, the information is truncated.
A bridge window may support either I/O or memory accesses. Each window type has
associated characteristics described in tables returned in the client-supplied buffer.
Bridge window characteristics vary if the hardware is used as a memory or as an I/O window.
For that reason, this service provides two tables of information. The BMEMWINTBL
structure is defined on page 50. The BIOWINTBL structure is defined on page 52.
If a bridge window supports both memory and I/O access, both characteristics tables are
copied to the client-supplied buffer. When a bridge window supports both types of access, the
memory window characteristics table is first in the buffer, followed by the I/O window
characteristics table. If only one type of access is supported, only the appropriate
characteristics table is copied into the buffer by Socket Services.
WndCaps O This parameter indicates the capability of the specified window. It can be a combination of the
following values:
Value Meaning
WC_IO If set, bridge window may be used to route host system I/O
accesses to a PC Card socket.
WC_MEMORY If set, bridge window may be used to route host system memory
accesses to a PC Card socket.
Sockets O Depending on the hardware implementation, bridge windows may be dedicated to a particular
socket or may allow assignment to a given socket on an adapter.
If a bridge window may be assigned to a socket on the adapter, the corresponding bit in this
parameter is set. If a socket does not exist on an adapter its corresponding bit is reset.
The first socket on the adapter is represented by the least significant bit of this parameter.
Note: The size of this field constrains the number of sockets that may be supported by an
adapter.
48 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
Return Codes:
SUCCESS if Adapter and Window are valid
BAD_ADAPTER if Adapter is invalid
BAD_WINDOW if Window is invalid
© 1999 PCMCIA/JEIDA 49
PROGRAM INTERFACE
Member Description
MemWndCaps Flags indicating memory bridge window characteristics. This member can be a combination of the
following values.
Value Meaning
WC_BASE If set, the base address of the bridge window is programmable within the
range specified by the FirstByte and LastByte members.
If reset, the base address of the bridge window is fixed in system memory
space at the address specified in the FirstByte member. When reset, the
LastByte member is undefined.
WC_SIZE If set, the bridge window size is programmable within the range specified by
the MinSize and MaxSize members.
If reset, the bridge window size is fixed to the size indicated by the MinSize
member. When reset, both the MinSize and MaxSize members should be the
same value.
WC_WENABLE If set, the window may be disabled and enabled without reprogramming its
characteristics.
If reset, the client must preserve window state information before disabling the
window.
WC_BALIGN If set, the bridge window base address must be programmed to align with a
multiple of the bridge window size. For example, a bridge window 16 MBytes
in size needs to start on a 16 MByte boundary in the host system memory
address space.
If reset, the bridge window base address may be programmed anywhere in
the bridge window's valid range, subject to any constraint specified by
ReqBase.
WC_POW2 If set, a bridge window with WC_SIZE also set must be sized between the
MinSize and MaxSize members as a power of two of the ReqGran member.
If reset, a bridge window with WC_SIZE set may be any multiple of the
ReqGran member between the MinSize and MaxSize members.
WC_FETCHABLE If set, this bridge window supports prefetching CardBus PC Card memory.
If reset, this bridge window does not support prefetching CardBus PC Card
memory.
WC_CACHABLE If set, this bridge window supports caching CardBus PC Card memory.
If reset, this bridge windows does not support caching CardBus PC Card
memory.
50 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
FirstByte First byte addressable in host system memory address space by bridge window. If bridge window base
is not programmable, this is the fixed base address of the bridge window.
LastByte Last byte addressable in host system memory address space by bridge window. The last byte of the
bridge window (base address programmed plus bridge window size minus one) may not exceed this
value.
If bridge window base is not programmable, this member is undefined.
MinSize The minimum bridge window size. When a bridge window size is programmed with SetBridgeWindow
it must lie in the range of the MinSize and MaxSize members and meet all granularity and base
requirements.
MaxSize The maximum bridge window size. When bridge window size is programmed with SetBridgeWindow
it must lie in the range of the MinSize and MaxSize members and meet all granularity and base
requirements.
The bridge window size may be further limited by the base address of the bridge window. The base
address plus the bridge window size minus one must not exceed the LastByte member for bridge
windows with programmable sizes.
If MaxSize is zero, bridge window size is the largest value that may be represented by the SIZE data type
plus one.
ReqGran This member describes the required units for expressing bridge window size due to hardware
constraints. If the bridge window size is fixed (WC_SIZE is reset), this member will be the same as the
MinSize and MaxSize members.
ReqBase If WC_BALIGN is reset, this member describes any alignment boundary requirement for programming
the bridge window's base address with SetBridgeWindow.
If WC_BALIGN is set, this field is undefined.
Comments
Memory bridge windows are used to route host system memory accesses to a PC Card. Not all
adapters have bridge windows. For those that do, both a bridge window and the hardware used to
map PC Card memory address space into the host system must be enabled at overlapping
addresses. For 16-bit PC Cards, a mapping window on the adapter and one or more pages within
the window must be enabled. For CardBus PC Cards, a Base Address Register on the card must be
programmed. A single bridge window assigned to a socket may be used with multiple mapping
windows or Base Address Registers.
For CardBus PC Cards, a given bridge window may be capable of both prefetchable and cacheable
memory accesses. However, only one of these capabilities may be enabled at a time. The
characteristics of the PC Card memory accessed by programming a Base Address Register on the
card must match the bridge windowÕs characteristics.
© 1999 PCMCIA/JEIDA 51
PROGRAM INTERFACE
Member Description
IOWndCaps Flags indicating I/O bridge window characteristics. This member can be a combination of the following
values:
Value Meaning
WC_BASE If set, the base address of the bridge window is programmable within the
range specified by the FirstByte and LastByte members.
If reset, the base address of the bridge window is fixed in system I/O address
space at the address specified in the FirstByte member. When WC_BASE is
reset, the LastByte member is undefined.
WC_SIZE If set, the bridge window size is programmable within the range specified by
the MinSize and MaxSize members.
If reset, the bridge window size is fixed to the size indicated by the MinSize
member. When WC_SIZE is reset, both the MinSize and MaxSize members
shall be the same value.
WC_WENABLE If set, the bridge window may be disabled and enabled without reprogramming
its characteristics.
If reset, the client must preserve bridge window state information before
disabling the window.
WC_POW2 If set, a bridge window with WC_SIZE set must be sized between the MinSize
and MaxSize members as a power of two of the ReqGran member.
If reset, a bridge window with WC_SIZE set may be any multiple of the
ReqGran member between the MinSize and MaxSize members.
FirstByte First byte addressable in host system I/O address space by the bridge window. If the bridge window base
is not programmable, this is the fixed base address of the bridge window.
LastByte Last byte addressable in host system I/O address space by the bridge window. The last byte of the bridge
window (base address programmed plus window size minus one) may not exceed this value.
If the bridge window base is not programmable, this member is undefined.
If LastByte is expressed in units other than bytes, any address bits of lesser significance not directly
expressed are assumed to be set to one (1). For example, if LastByte is expressed in 4 KByte units, a
value of A3H indicates the last addressable byte within the window is at location A3FFFH in the host
systemÕs I/O address space.
MinSize The minimum bridge window size. When bridge window size is programmed with SetBridgeWindow it
must lie in the range of the MinSize and MaxSize members and meet all granularity and base
requirements.
MaxSize The maximum bridge window size. When bridge window size is programmed with SetBridgeWindow
it must lie in the range of the MinSize and MaxSize members and meet all granularity and base
requirements.
The bridge window size may be further limited by the base address of the bridge window. The base
address plus the bridge window size minus one must not exceed the LastByte member for bridge
windows with programmable sizes.
If MaxSize is zero, bridge window size is the largest value that may be represented by the SIZE data type
plus one.
ReqGran This member describes the required units for expressing bridge window size due to hardware
constraints. If the bridge window size is fixed (WC_SIZE is reset), this member will be the same as the
MinSize and MaxSize members.
52 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
I/O bridge windows are used to provide access to the host system I/O address space for PC Card
windows. Not all adapters have bridge windows. For those that do, both a bridge window and the
hardware used to map PC Card I/O address space into the host system must be enabled at
overlapping addresses.
© 1999 PCMCIA/JEIDA 53
PROGRAM INTERFACE
The InquireEDC service returns the capabilities of the EDC generator specified by the input
parameters.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
EDC I Specifies a physical EDC generator on the adapter.
Sockets O A bit-map of the sockets the EDC generator may be assigned.
Caps O Returns the capabilities of the EDC generator. This field may be combination of the following
values:
Value Meaning
EC_UNI If set, EDC generator supports unidirectional code generation.
If reset, EDC generator does not support unidirectional code
generation.
EC_BI If set, EDC generator supports bi-directional code generation.
If reset, EDC generator does not support bi-directional code
generation.
EC_REGISTER If set, EDC generation is supported through register-based access.
If reset, EDC generation is not supported through register-based
access.
EC_MEMORY If set, EDC generation is supported during window access.
If reset, EDC generation is not supported during window access.
EC_PAUSABLE If set, EDC generation can be paused.
If reset, EDC generation cannot be paused.
This value is set if the EDC generator may be paused during
computation. This allows algorithms which require multiple
accesses to a single location on a card from computing an
erroneous EDC value.
If this value is not set, the PauseEDC and ResumeEDC services
are not available.
Types O Returns types of EDC generation supported. This parameter may be a combination of the
following values:
Value Meaning
ET_CHECK8 If set, EDC generator supports 8-bit checksum code generation.
If reset, EDC generator does not support 8-bit checksum code
generation.
ET_SDLC16 If set, EDC generator supports 16-bit CRC-SDLC code generation.
If reset, EDC generator does not support 16-bit CRC-SDLC code
generation.
ET_SDLC32 If set, EDC generator supports 32-bit CRC-SDLC code generation.
If reset, EDC generator does not support 32-bit CRC-SDLC code
generation.
54 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
Return Codes
SUCCESS if Adapter and EDC are valid
BAD_ADAPTER if Adapter is invalid
BAD_EDC if EDC is invalid
Comments
A hardware implementation may or may not provide EDC generation. This service describes the
capability of a particular EDC generator. EDC generators may be shared between sockets. Higher-
level software must arbitrate the use of EDC generators.
If EDC generation is available, InquireAdapter returns the number of EDC generators available for
all the sockets supported by the adapter. The capabilities of each generator can be enumerated by
calling this service for each generator.
Socket Services supports two types of EDC generation: checksums for 8-bit transfers and CRC-SDLC
calculations for 16-bit and 32-bit transfers. EDC generation may be produced by read or write
accesses. Special programming algorithms which require a combination of reads and writes must be
aware of how EDC generation is performed to avoid erroneous computations. Bi-directional EDC
generation may not be usable with Flash programming algorithms since these algorithms typically
require a combination of reads and writes.
EDC generation may not be available with memory-mapped implementations. EDC generators
must be configured before use with the SetEDC service.
© 1999 PCMCIA/JEIDA 55
PROGRAM INTERFACE
The InquireSocket service returns information about the capabilities of the socket specified by the
input parameters.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
Socket I Specifies a physical socket on the adapter.
pBuffer I Points to a client-supplied buffer to be filled with information about the socket. The buffer has
the following form:
typedef struct tagSISTRUCT {
WORD wBufferLength;
WORD wDataLength;
SCHARTBL CharTable;
} SISTRUCT;
The wBufferLength field is set by the client to the size in bytes of SISTRUCT less the size of
the first two fields (4 bytes). The wDataLength field is set by Socket Services to the size of the
information it has to return. Only the information that fits in the buffer is copied. If the
wDataLength is greater than wBufferLength, the information is truncated.
The SCHARTBL structure is defined below.
SCIntCaps O Returns a bit-map of events which can trigger a Status Change interrupt. If an event can trigger
a status change interrupt, its value in this parameter is set. In order for the event to trigger a
status change event on a socket, the corresponding value in the SCIntMask parameter of
SetSocket must be set and status change interrupts must be enabled.
For 16-bit PC Cards the following values are implemented as signals.
For CardBus PC Cards several values are read from the Function Present State register on
the card, rather than being implemented as individual signals.
This parameter is a combination of the values described below:
Value Meaning
SBM_WP PC Card WP (write-protect).
SBM_LOCKED Externally generated indicating the state of a mechanical or
electrical card lock mechanism.
Not the same as SBM_LOCK which is used to control a card lock.
SBM_EJECT Externally generated indicating a request to eject a PC Card from
the socket has been made.
SBM_INSERT Externally generated indicating a request to insert a PC Card into
the socket has been made.
SBM_BVD1 PC Card BVD1. When set, this indicates the battery is no longer
serviceable.
SBM_BVD2 PC Card BVD2. When set, this indicates the battery is weak.
SBM_RDYBSY PC Card READY.
SBM_CD CD1# and CD2# (16-bit PC Card)
or CCD1# and CCD2# (CardBus PC Card).
56 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
SCRptCaps O Returns Status Change events that the socket is capable of reporting. This parameter is not the
same as SCIntCaps. Some events may be reportable by GetStatus, but not able to generate a
status change interrupt as indicated by SCIntCaps.
If an event is not reportable by GetStatus, its value in this parameter is reset. In this case,
corresponding values in the GetStatus CardStatus parameter are undefined.
This parameter is a combination of the SBM_x values described under the SCIntCaps
parameter.
CtlIndCaps O Returns control and indicator capabilities of the socket. If a value is set, the control or indicator
is supported. If a value is reset, the control or indicator is not supported. This parameter may
be a combination of the following values:
Value Meaning
SBM_WP Indicator for PC Card WP (write-protect) state.
SBM_LOCKED Indicator for externally generated event indicating the state of a
mechanical or electrical card lock mechanism
SBM_EJECT Control for motor to eject a PC Card from the socket.
SBM_INSERT Control for motor to insert a PC Card into the socket.
SBM_LOCK Control for card lock.
Not the same as SBM_LOCKED which reflects the state of an
externally generated card lock event.
SBM_BATT Indicator for BVD1 and BVD2 state.
SBM_BUSY Indicator for showing card is in-use.
SBM_XIP Indicator for eXecute-In-Place application in progress.
Return Codes
SUCCESS if Adapter and Socket are valid
BAD_ADAPTER if Adapter is invalid
BAD_SOCKET if Socket is invalid
Example
SISTRUCT SocketInfo = {
20, // Size of client-supplied buffer is 20 bytes
20, // Size of data returned is 20 bytes
{IF_MEMORY | IF_IO, // Socket supports Memory-Only and
// I/O and Memory interfaces
0xDEB8, // PC Card IREQ# signal may be routed to IRQ levels
// 3, 4, 5, 7, 9, 10, 11, 12, 14, and 15
// as an active high signal
0, // PC Card IREQ# routing not available on any
// level as an active low signal
2, // Number of custom interfaces supported
0x0141, // Custom Interface Number dCustomIF[0], index 0
0x0241}, // Custom Interface Number dCustomIF[1], index 1
};
© 1999 PCMCIA/JEIDA 57
PROGRAM INTERFACE
Member Description
SktCaps Flags indicating socket characteristics. If set, the characteristic is supported. This member can be a
combination of the following values:
Value Meaning
IF_MEMORY Socket supports Memory-Only interface. (See the Electrical Specification.)
IF_IO Socket supports I/O and Memory interface. (See the Electrical
Specification.)
IF_CB Socket supports CardBus PC Card interface. (See the Electrical
Specification.)
IF_33VCC Socket supports 3.3 V Interface.
IF_XXVCC Socket supports X.X V Interface.
IF_VSKEY Socket supports Low Voltage Key.
IF_DMA Socket supports 16-bit PC Card DMA transfers. (See the Electrical
Specification and the Card Services Specification.)
ActiveHigh Bit-map of IRQ levels available for routing an inverted PC Card IREQ# signal when an unmasked event
occurs.
ActiveLow Bit-map of IRQ levels available for routing the normal PC Card IREQ# signal when an unmasked event
occurs.
It is assumed that PC Card IREQ# signals may be shared in a host system.
DMAChannels Bit-map of DMA channels supported by this socket. Bit 0 through 15 correspond to DMA channel 0
through 15. If a bit is set to one, the corresponding DMA channel is supported by the socket. The DMA
width supported by any DMA channel Is host system specific and beyond the scope of Socket Services.
If a socket does not support DMA operations, this field may be omitted.
wNumCustomIF The number of custom interfaces supported by this socket. If this number is non-zero the socket supports
custom interfaces in addition to the interfaces indicated in the SktCaps field.
dCustomIF Array of custom interface ID numbers supported by this socket. (See the Electrical Specification and
see also the Metaformat Specification.)
58 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
The InquireWindow service returns information about the capabilities of the window specified by
the input parameters.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
Window I Window number. Specifies a physical window on the adapter
pBuffer I Points to a client-supplied buffer to be filled with information about the window. The buffer has
the following form:
typedef struct tagWISTRUCT {
WORD wBufferLength;
WORD wDataLength;
WINTBL WinTable[NUM_TYPES];
} WISTRUCT;
The wBufferLength field is set by the client to the size in bytes of WISTRUCT less the size of
the first two fields (4 bytes). The wDataLength field is set by Socket Services to the size of the
information it has to return. Only the information that fits in the buffer is copied. If the
wDataLength is greater than wBufferLength, the information is truncated.
A window may support two types of mapping: memory or I/O. Each window type has
associated characteristics described in tables returned in the client-supplied buffer.
Window characteristics vary if the hardware is used as a memory or as an I/O window. For
that reason, this service may provide multiple tables of information. The MEMWINTBL
structure is defined on page 61. The IOWINTBL structure is defined on page 65.
If a window supports both memory and I/O mapping, both characteristics tables are copied to
the client-supplied buffer. When a window supports both types of mapping, the memory
window characteristics table is first in the buffer, followed by the I/O window characteristics
table. If only one type of mapping is supported, only the appropriate characteristics table is
copied into the buffer by Socket Services.
EISA I/O and Memory windows may be selected, but the supported I/O map is not
programmable. Card enables are asserted based on the pre-defined address line settings
returned in the I/O window characteristics structure member EISASlot.
WndCaps O This parameter indicates the capability of the specified window. It can be a combination of the
following values:
Value Meaning
WC_COMMON If set, window may be used to map the common memory plane of a
16-bit PC Card into the host system memory address space.
WC_ATTRIBUTE If set, window may be used to map the attribute memory plane of a
16-bit PC Card into the host system memory address space.
WC_IO If set, window may be used to map I/O ports on a 16-bit PC Card
into the host system I/O address space.
WC_WAIT If set, window supports the use of the WAIT# signal from a 16-bit
PC Card to generate additional wait states.
© 1999 PCMCIA/JEIDA 59
PROGRAM INTERFACE
Sockets O Depending on the hardware implementation, windows may be dedicated to a particular socket
or may allow assignment to one or more sockets on an adapter.
If a window may be assigned to a socket, the corresponding bit in this parameter is set. If a
socket does not exist on an adapter its corresponding bit is reset.
The first socket on the adapter is represented by the least significant bit of this parameter.
Note: The size of this field constrains the number of sockets that may be supported by an
adapter.
Return Codes
SUCCESS if Adapter and Window are valid
BAD_ADAPTER if Adapter is invalid
BAD_WINDOW if Window is invalid
60 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
Member Description
MemWndCaps Flags indicating memory window characteristics. This member can be a combination of the following
values:
Value Meaning
WC_BASE If set, the base address of the window is programmable within the range
specified by the FirstByte and LastByte members.
If reset, the base address of the window is fixed in system memory address
space at the address specified in the FirstByte member. When reset, the
LastByte member is undefined.
WC_SIZE If set, the window size is programmable within the range specified by the
MinSize and MaxSize members.
If reset, the window size is fixed to the size indicated by the MinSize member.
When reset, both the MinSize and MaxSize members should be the same
value.
WC_WENABLE If set, the window may be disabled and enabled without reprogramming its
characteristics.
If reset, the client must preserve window state information before disabling the
window.
WC_8BIT If set, the window may be programmed for 8-bit data bus width.
If reset, the window may not be used for 8-bit data transfers.
WC_16BIT If set, the window may be programmed for 16-bit data bus width.
If reset, the window may not be used for 16-bit data transfers.
WC_BALIGN If set, the window base address must be programmed to align with a multiple
of the window size. For example, a window 16 KBytes in size needs to start on
a 16 KByte boundary in the host system memory address space.
If reset, the window base address may be programmed anywhere in the
windowÕs valid range, subject to any constraint specified by ReqBase.
WC_POW2 If set, a window with WC_SIZE also set must be sized between the MinSize
and MaxSize members as a power of two of the ReqGran member.
If reset, a window with WC_SIZE set may be any multiple of the ReqGran
member between the MinSize and MaxSize members.
For example, if ReqGran is 4 KBytes, MinSize is 4 KBytes, MaxSize is 64
KBytes and WC_POW2 is set, the possible window sizes are 4, 8, 16, 32 and
64 KBytes.
If WC_POW2 is reset, possible windows sizes include all sixteen multiples of
4 KBytes between 4 and 64 KBytes.
© 1999 PCMCIA/JEIDA 61
PROGRAM INTERFACE
62 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
ReqGran This member describes the required units for expressing window size due to hardware constraints. If the
window size is fixed (WC_SIZE is reset), this member will be the same as the MinSize and MaxSize
members.
ReqBase If WC_BALIGN is reset, this member describes any alignment boundary requirement for programming
the windowÕs base address with SetWindow.
If WC_BALIGN is set, this field is undefined.
ReqOffset If WC_CALIGN is reset, this member describes any alignment boundary requirement for programming
the PC Card offset address with SetPage.
If WC_CALIGN is set, this field is undefined.
Slowest This member represents the slowest access speed supported by the window.
Fastest This member represents the fastest access speed supported by the window.
Comments
The Slowest and Fastest members use the format of the Device Speed Code and Extended Device
Speed Codes of the Device Information Tuple. (See the Metaformat Specification.) For Socket
Services, Bit 7 of the Slowest and Fastest members is reserved and is reset to zero (0).
The Device Speed Code values are used when what would be the mantissa of an Extended Device
Speed Code is reset to zero (0). If the mantissa is non-zero, supported device speeds are coded
according to the Extended Device Speed Code. (See the Metaformat Specification.)
Memory windows map accesses to host system memory address space into accesses to memory
address space located on a PC Card. How the socket hardware performs this mapping determines
the memory characteristics table definition. While memory windows are described by a number of
characteristics, most window mapping hardware falls into one of two categories with each category
having a single set of characteristics.
Direct window mapping hardware selects a fixed combination of high order address lines (typically
via mask and match registers) on the PC Card whenever an access is made within the host system
memory address range assigned to the window. Low order address lines are routed directly to the
PC Card.
The window size determines how many low order address lines are routed directly to the PC Card.
The fixed combination used for the high order address lines is set by the SetPage service. This type
of window mapping hardware requires the window size be a power of two and that the base
address be aligned on a multiple of the window size since mapping is related to the number of low
order address lines routed directly to the PC Card.
Translating window mapping hardware uses additional logic to compute a PC Card address. When
an access is made to a location within the host system address range mapped by the window, the
hardware computes the offset of this location from the beginning of the mapped range (typically via
base and length registers) and adds it to the starting offset on the PC Card as set by the SetPage
service.
While high order address lines may still be set to a fixed combination and some number of low
order address lines may be directly routed to the PC Card, mid-order address lines are computed
by the window mapping hardware. This type of hardware does not require the window be sized as
a power of two or aligned on a boundary related to the window size. However, the window size
must be a multiple of the ReqGran field.
In summary, if direct window mapping hardware is used, the WC_BALIGN, WC_POW2 and
WC_CALIGN parameters are set and the ReqBase and ReqOffset members are not used. If
translating window hardware is used, the WC_BALIGN, WC_POW2 and WC_CALIGN parameters
are reset and the ReqBase and ReqOffset members are significant.
© 1999 PCMCIA/JEIDA 63
PROGRAM INTERFACE
The ReqBase, ReqOffset and ReqGran members are related to the number of low order address lines
which are routed directly to the PC Card. For example, if the twelve (12) least significant address
lines are routed directly to the PC Card, the ReqGran member will indicate the window must be
sized as a multiple of 4 KBytes. If translating window hardware is used, the ReqBase and ReqOffset
will also indicate the requirement to align the window base address and the PC Card offset on a 4
KByte boundary.
The following table illustrates the relationship of Memory Window Characteristics Table members
to the type of hardware used to implement the window:
Member/Parameter Direct Translating
WC_BALIGN Set reset
WC_POW2 Set reset
WC_CALIGN Set reset
ReqGran Significant Significant
ReqBase Not Used Significant
ReqOffset Not Used Significant
64 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
Member Description
IOWndCaps Flags indicating I/O window characteristics. This member can be a combination of the following values:
Value Meaning
WC_BASE If set, the base address of the window is programmable within the range
specified by the FirstByte and LastByte members.
If reset, the base address of the window is fixed in host system I/O address
space at the address specified in the FirstByte member. When WC_BASE is
reset, the LastByte member is undefined.
WC_SIZE If set, the window size is programmable within the range specified by the
MinSize and MaxSize members.
If reset, the window size is fixed to the size indicated by the MinSize member.
When WC_SIZE is reset, both the MinSize and MaxSize members should be
the same value.
WC_WENABLE If set, the window may be disabled and enabled without reprogramming its
characteristics.
If reset, the client must preserve window state information before disabling the
window.
WC_8BIT If set, the window may be programmed for 8-bit data bus width.
If reset, the window may not be used for 8-bit data transfers.
WC_16BIT If set, the window may be programmed for 16-bit data bus width.
If reset, the window may not be used for 16-bit data transfers.
WC_BALIGN If set, the window base address must be programmed to align with a multiple
of the window size. For example, an 8 byte window needs to start on an 8 byte
boundary in the host system I/O address space.
If reset, the window base address may be programmed anywhere in the
windowÕs valid range, subject to any constraint specified by ReqBase.
WC_POW2 If set, a window with WC_SIZE set must be sized between the MinSize and
MaxSize members as a power of two of the ReqGran member.
If reset, a window with WC_SIZE set may be any multiple of the ReqGran
member between the MinSize and MaxSize members.
For example, if ReqGran is 4 bytes, MinSize is 4 bytes, MaxSize is 64 bytes
and WC_POW2 is set, the possible window sizes are 4, 8, 16, 32 and 64
bytes.
If WC_POW2 is reset, possible windows sizes include all sixteen multiples of
4 bytes between 4 and 64 bytes.
© 1999 PCMCIA/JEIDA 65
PROGRAM INTERFACE
WC_INPACK If set, the window supports the INPACK# signal from a PC Card. This signal
allows I/O windows to overlap in the host systemÕs I/O address space.
If reset, the INPACK# signal from a PC Card is ignored by the window
hardware. In this case, I/O windows may not overlap in the host systemÕs I/O
address space.
WC_EISA If set, the window supports I/O mapping in a the same manner as host
systems with EISA buses. The EISASlot member describes the slot-specific
address decodes for this window.
If reset, the window does not support EISA-like I/O mapping.
WC_CENABLE If set, EISA-like common address space enables may be programmed to be
ignored.
If reset, if the window is programmed for EISA-like I/O mapping, the PC Card
will receive a card enable signal whenever an access is made to an EISA
common address.
This value is only valid if WC_EISA is set.
FirstByte First byte addressable in host system I/O address space by window. If window base is not
programmable, this is the fixed base address of the window.
LastByte Last byte addressable in host system I/O address space by window. The last byte of the window (base
address programmed plus window size minus one) may not exceed this value.
If window base is not programmable, this member is undefined.
If LastByte is expressed in units other than bytes, any address bits of lesser significance not directly
expressed are assumed to be set to one (1). For example, if LastByte is expressed in 4 KByte units, a
value of A3H indicates the last addressable byte within the window is at location A3FFFH in the host
systemÕs I/O address space.
MinSize The minimum window size. When window size is programmed with SetWindow it must lie in the range
of the MinSize and MaxSize members and meet all granularity and base requirements.
MaxSize The maximum window size. When window size is programmed with SetWindow it must lie in the
range of the MinSize and MaxSize members and meet all granularity and base requirements.
The window size may be further limited by the base address of the window. The base address plus the
window size minus one must not exceed the LastByte member for windows with programmable sizes.
If MaxSize is zero, window size is the largest value that may be represented by the SIZE data type plus
one.
ReqGran This member describes the required units for expressing window size due to hardware constraints. If the
window size is fixed (WC_SIZE is reset), this member will be the same as the MinSize and MaxSize
members.
AddrLines Number of address lines decoded by window. Typically ten (10) or sixteen (16). If a window only
decodes ten address lines, accesses to locations above 1 KByte will drive card enables to a PC Card
when the ten least significant address lines fall within the range defined by the base address and window
size.
EISASlot Upper byte used for window-specific EISA I/O address decoding. Describes the upper four address lines
used to determine EISA slot-specific addresses used to drive card enables.
This member is undefined if WC_EISA is reset.
66 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
The PauseEDC service pauses EDC generation on a configured and computing EDC generator
specified by the input parameters.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
EDC I Specifies a physical EDC generator on the adapter.
Return Codes
SUCCESS if Adapter and EDC are valid
BAD_ADAPTER if Adapter is invalid
BAD_EDC if EDC is invalid
Comments
This service is used to pause EDC generation so some accesses to a PC Card are not involved in the
computation of an EDC value. This service is only supported if EC_PAUSABLE is set in the
InquireEDC Caps parameter.
© 1999 PCMCIA/JEIDA 67
PROGRAM INTERFACE
The ReadEDC service reads the EDC value computed by the EDC generator specified by the input
parameters.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
EDC I Specifies a physical EDC generator on the adapter.
Value O Returns computed EDC value. If the generator was set to ET_CHECK8, only the low byte is
significant. If the generator was set to ET_SDLC16, only the low word is significant. If the
generator was set to ET_SDLC32, all 32-bits are significant.
Return Codes
SUCCESS if Adapter and EDC are valid
BAD_ADAPTER if Adapter is invalid
BAD_EDC if EDC is invalid
Comments
If the generator has been used inappropriately (generator not assigned a socket or a combination of
reads and writes were used), the computed Value may be erroneous.
68 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
The ResetSocket service resets the PC Card in the socket and returns socket hardware to its power-
on default state.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
Socket I Specifies a physical socket on the adapter.
Return Codes
SUCCESS if Adapter and Socket are valid and there is a PC Card in the socket
BAD_ADAPTER if Adapter is invalid
BAD_SOCKET if Socket is invalid
NO_CARD if there is no PC Card in the socket
Comments
This service toggles the RESET pin of the card in the specified socket on the specified adapter.
This service completes an entire RESET pulse, toggling the pin to the RESET state and back to the
normal state. It ensures the minimum RESET pulse width is observed. It does NOT wait after
returning the RESET pin to its normal state. The client must ensure that a card is not accessed
before it is READY after this service has returned.
All socket hardware is returned to its default power-on state:
• IFType set to IF_MEMORY if a 16-bit PC Card is in the socket or to IF_CARDBUS if a CardBus
PC Card is in the socket.
• IREQRouting disabled.
• VCC, VPP1 and VPP2 set to 5 V DC for a 5 volt only system, otherwise set to the voltage
specified by the VS1# and VS2# pins.
• All windows, pages and EDC generators disabled.
© 1999 PCMCIA/JEIDA 69
PROGRAM INTERFACE
The ResumeEDC service resumes EDC generation on a configured and paused EDC generator
specified by the input parameters.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
EDC I Specifies a physical EDC generator on the adapter.
Return Codes
SUCCESS if Adapter and EDC are valid
BAD_ADAPTER if Adapter is invalid
BAD_EDC if EDC is invalid
Comments
This service is used to resume EDC generation so accesses to a PC Card are involved in the
computation of an EDC value. This service is only supported if EC_PAUSABLE is set in the
InquireEDC Caps parameter.
70 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
Return Codes
SUCCESS if Adapter is valid
BAD_ADAPTER if Adapter is invalid
BAD_IRQ if StatusChange specifies an unsupported State or IRQ level
Comments
Preserving state information may not allow the same level of power reduction as not preserving
state information. The ability to reduce power consumption is vendor specific and reduced power
settings may not result in any power savings. For example, if an adapter supports a reduced power
consumption mode, but is unable to preserve state information in that mode, requests for reduced
power consumption and state preservation may be ignored and SUCCESS returned. The actual
adapter configuration is returned by the GetAdapter request.
© 1999 PCMCIA/JEIDA 71
PROGRAM INTERFACE
All parameters have been designed to map directly to the values returned by the GetAdapter
service. This is intended to allow clients of Socket Services to retrieve current configuration
information with GetAdapter, make changes and then use this service to modify the configuration
without having to create initial values for each parameter.
72 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
The SetBridgeWindow service sets the current configuration of the bridge window specified by the
input parameters. If present on the adapter, PC Card bridge windows are required to allow access to
devices on PC Cards.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
Window I Specifies a bridge window on the adapter.
Socket I Sets physical socket the bridge window is currently assigned.
Size I Sets the size of the bridge window in bytes.
State I Defined as below. Sets the state of the bridge window hardware. This parameter can be a
combination of the following values:
Value Meaning
WS_IO If set, this bridge window routes host system I/O accesses to the
PC Card socket.
If reset, this bridge window routes host system memory accesses
to the PC Card socket.
WS_ENABLED If set, the bridge window is enabled and routing host system
accesses to a PC Card socket.
If reset, the bridge window is disabled.
Base O Sets the base address of the specified bridge window. It is the first address within the host
system memory or I/O address space routed to the PC Card socket.
Return Codes:
SUCCESS if all parameters are valid
BAD_ADAPTER if Adapter is invalid
BAD_ATTRIBUTE if requested State does not match the window's capabilities
BAD_BASE if the Base is invalid
BAD_SIZE if Size is invalid
BAD_SOCKET if Socket is invalid for Window
BAD_TYPE if WS_IO setting is invalid
BAD_WINDOW if Window is invalid
Comments
All parameters have been designed to map directly to the values returned by the
GetBridgeWindow service. This is intended to allow clients of Socket Services to retrieve current
configuration information with this service, make changes and then use the SetBridgeWindow
service to modify the configuration without having to create initial values for each parameter.
© 1999 PCMCIA/JEIDA 73
PROGRAM INTERFACE
74 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
The SetEDC service sets the configuration of the EDC generator specified by the input parameters.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
EDC I Specifies a physical EDC generator on the adapter.
Socket I Specifies the physical socket on the adapter that the EDC generator is to be assigned.
State I Sets the current state of the EDC generator. This field may be combination of the following
values:
Value Meaning
EC_UNI If set, EDC generator is computes in only one direction.
EC_WRITE determines whether computation is on read or write
accesses.
If reset, EDC generator is computes on both read and write
accesses.
EC_WRITE If set, EDC generator is computes only on write accesses.
If reset, EDC generator is computes only on read accesses.
This value is only valid if EC_UNI is set.
Type I Sets type of EDC generated. This parameter may be one of the following values:
Value Meaning
ET_CHECK8 EDC generated is 8-bit checksum.
ET_SDLC16 EDC generated is 16-bit CRC-SDLC.
ET_SDLC32 EDC generated is 32-bit CRC-SDLC.
Return Codes
SUCCESS if Adapter, EDC, Socket, State and Type are valid
BAD_ADAPTER if Adapter is invalid
BAD_ATTRIBUTE if State or Type is invalid
BAD_EDC if EDC is invalid
BAD_SOCKET if Socket is invalid
Comments
All parameters have been designed to map directly to the values returned by the GetEDC service.
This is intended to allow clients of Socket Services to retrieve current configuration information with
GetEDC, make changes and then use this service to modify the configuration without having to
create initial values for each parameter.
© 1999 PCMCIA/JEIDA 75
PROGRAM INTERFACE
The SetPage service configures the page specified by the input parameters. It is only valid for
memory windows (WS_IO is reset for the Window). This service is unsupported by CardBus PC
Card.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
Window I Specifies a physical window on the adapter.
Page I Specifies the page within the Window.
State I Programs the state of the Page within the Window. This parameter can be a combination of the
following values:
Value Meaning
PS_ATTRIBUTE If set and Page is enabled, page is programmed to map PC Card
attribute memory into host system memory space.
If reset and Page is enabled, page is programmed to map PC Card
common memory into host system memory space.
PS_ENABLED If set, Page is enabled and maps PC Card memory into the host
system memory or I/O space.
If reset, Page is disabled.
Some hardware implementation may not allow individual pages to
be disabled, only entire windows. If there is only a single page in the
window, the window is disabled by this request.
This request returns BAD_ATTRIBUTE for multi-paged windows if
the pages cannot be individually disabled.
PS_WP If set, Page is write-protected by page mapping hardware in socket.
If reset, Page is not write-protected by socketÕs page-mapping
hardware. However, the PC Card memory may be write-protected
in other ways.
If set and the window does not support write-protection,
BAD_ATTRIBUTE is returned.
Offset I The offset of a PC CardÕs memory to be mapped into host system memory space by this
page. The following formula may be used to calculate the system memory address to access
the PC Card memory being mapped by the page:
Base + (Page * 16 KBytes)
Return Codes
SUCCESS if Adapter, Offset, Page, State and Window are valid
BAD_ADAPTER if Adapter is invalid
BAD_ATTRIBUTE if State is invalid
BAD_OFFSET if Offset is invalid
BAD_PAGE if Page is invalid
BAD_WINDOW if Window is invalid
76 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
Comments
All parameters have been designed to map directly to the values returned by the GetPage service.
This is intended to allow clients of Socket Services to retrieve current configuration information with
GetPage, make changes and then use this service to modify the configuration without having to
create initial values for each parameter.
All pages in windows which are subdivided into multiple pages are 16 KBytes in size. A window
with only a single page may be any size meeting the constraints returned by InquireWindow.
To map PC Card memory into system memory requires that both the WS_ENABLED value of the
State field used by Get/SetWindow be set and the PC_ENABLED value of the State field used by
Get/SetPage be set. For windows with WS_PAGED reset, the PS_ENABLED value is ignored by
SetPage. The window is enabled and disabled by the WS_ENABLED value of SetWindow. GetPage
for windows with WS_PAGED reset reports the value of WS_ENABLED for PS_ENABLED.
For windows with WS_PAGED set, WS_ENABLED acts as a global enable/disable for all pages
within the window. Once WS_ENABLED has been set using SetWindow, individual pages may be
enabled and disabled using SetPage and PS_ENABLED.
If WC_WENABLE is reported as set by InquireWindow, Socket Services preserves the state of
PS_ENABLED for each page in the window whenever WS_ENABLED is changed by SetWindow. If
WC_ENABLE is reported as reset by InquireWindow, the client must use SetPage to set the
PS_ENABLED state for each page within the window after WS_ENABLED is set with SetWindow.
© 1999 PCMCIA/JEIDA 77
PROGRAM INTERFACE
The SetSocket service sets the current configuration of the socket identified by the input parameters.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
Socket I Specifies a physical socket on the adapter.
SCIntMask I Sets mask for events that generate a status change interrupt when they occur on the socket. If
a value is set the event generates a status change interrupt if the following conditions are met:
The event is supported as indicated by the SCIntCaps parameter of InquireSocket and status
change interrupts have been enabled by SetAdapter.
This parameter is a combination of the SBM_x values defined in InquireSocket.
An attempt to set an event that is unsupported by SCIntCaps will not return an error.
GetSocket will only return values that are supported by SCIntCaps.
Vcontrol I This parameter takes on the following values:
Value Meaning
VCTL_CISREAD If reset, the VCC level and VPP[2::1] levels are controlled by the
VccLevel and VppLevels fields.
If set, the VCC level and VPP[2::1] levels are set to the value
indicated by the voltage sense signaling from the PC Card and the
VccLevel and VppLevels fields are ignored.
VCTL_OVERRIDE VCTL_OVERRIDE applies only to 16-bit PC Cards. The CardBus
PC Card interface requires the VCC level match the value indicated
by the voltage sense signaling from the PC Card or this service
returns an error.
If reset, the VCC level must match the value indicated by the voltage
sense signaling from the PC Card or this service returns an error.
If set, the VccLevel need not match the value indicated by the
voltage sense signaling from the PC Card.
If the VccLevel does match the voltage sense signaling from the PC
Card, VCTL_OVERRIDE is reset when returned by GetSocket.
Note: The VCTL_CISREAD and VCTL_OVERRIDE bits are mutually exclusive. If both
are set, BAD_ATTRIBUTE is returned. In addition, Socket Services will reset these
bits upon card removal.
Note: When initially powering a PC Card with SetSocket, if the VCTL_CISREAD value is
set, the PC Card is powered to the value indicated by the voltage sense signaling
from the card.
78 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
VccLevel I Sets current power level of VCC signal. This is an index into the array of PWRENTRY items
returned by InquireAdapter. Valid values range from zero to one less than the number of
levels returned by InquireAdapter.
On Low Voltage capable systems Socket Services must observe that state of the VS1# and
VS2# pins when requesting voltage changes on the VCC and VPP[2::1] pins to prevent
inappropriate voltages being applied to the card unless VCTL_OVERRIDE is set. The
VCTL_OVERRIDE is provided to protect the card from a Low Voltage unaware client. Proper
procedure must be used to determine appropriate voltage levels for the card, this includes
assuring that systems that are not X.X V capable must be X.X V aware to ensure that X.X V
cards are not damaged. (See the Electrical Specification.)
When changing from one non-zero VCC to another non-zero VCC, Socket Services is required
to observe a Power-up/Power-down timing sequence. (See the Electrical Specification.)
VppLevels I Sets current power level of VPP[2::1] signals. This is two indices into the array of
PWRENTRY items returned by InquireAdapter. Separate values are in this parameter for
the VPP1 and VPP2 signals. Valid values for each index range from zero to one less than the
number of levels returned by InquireAdapter.
Note: The VccLevel and VppLevels always return the actual levels currently applied to the
card.
State I Resets latched values representing state changes experienced by the socket hardware. Only
those values set in the InquireSocket SCRptCaps parameter are supported. Attempts to reset
unsupported values are ignored.
This parameter is a combination of the SBM_x values defined in InquireSocket for the
SCIntCaps and SCRptCaps parameters.
CtlInd I Sets socket controls and indicators. If a value is set, the corresponding control or indicator is
turned-on. If a value is reset, the corresponding control or indicator is turned-off. Values
supported by the socket are defined by the CtlIndCaps parameter returned by InquireSocket.
This parameter is a combination of the SBM_x values defined in InquireSocket for the
CtlIndCaps parameter.
IREQRouting I Sets PC Card IREQ# routing. This parameter is an IRQ data type.
This parameter is ignored if IFType is not IF_IO or IF_CARDBUS. If IFType is IF_IO or
IF_CARDBUS, routing level and inverter state are validated even if routing is being disabled.
This parameter is a combination of a binary value representing the IRQ level used for routing
the PC Card IREQ# signal and the following optional values:
Value Meaning
IRQ_INVALID If set, the binary value representing the IRQ level is invalid and
should be ignored. This bit may not be set with IRQ_HIGH.
If reset, the binary value representing the IRQ level is valid.
IRQ_HIGH If set, the PC Card IREQ# signal is inverted.
If reset, the PC Card IREQ# signal is routed without inversion.
IRQ_ENABLE If set, IREQ# routing is enabled.
If reset, IREQ# routing is not enabled and interrupts from a PC
Card in the socket are ignored.
IFType I Sets the current interface type. Uses the same definitions as the IFType parameter of
GetSocket.
When a CardBus PC Card is inserted in a socket, this field is ignored. Sockets automatically
configure to IF_CARDBUS when a CardBus PC Card is inserted.
IFIndex I Sets the Custom Interface setting when IFType is set to IF_CUSTOM. This is an index into the
array of dCustomIF items returned by InquireAdapter. Valid values range from zero to one
less than the number of interface numbers returned by InquireAdapter.
This field is ignored when IFType is not set to IF_CUSTOM.
© 1999 PCMCIA/JEIDA 79
PROGRAM INTERFACE
Return Codes
SUCCESS if Adapter and Socket are valid
BAD_ADAPTER if Adapter is invalid
BAD_IRQ if IREQRouting not supported
BAD_SOCKET if Socket is invalid
BAD_TYPE if IFType not supported
BAD_VCC if VCC level is invalid
BAD_VPP if VPP1 or VPP2 level is invalid
BAD_ATTRIBUTE if both CCTL_CISREAD and VCTL_OVERRIDE are set
Comments
All parameters have been designed to map directly to the values returned by the GetSocket
service. This is intended to allow clients of Socket Services to retrieve current configuration
information with GetSocket, make changes and then use this service to modify the configuration
without having to create initial values for each parameter.
80 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
The SetWindow service sets the configuration of the window specified by the input parameters.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
Window I Window number. Specifies a physical window on the adapter. May refer to either a hardware
or an adapter window.
Socket I Assigns the Window to the specified socket. Socket numbers range from zero to fifteen using
bits 0 to 3. The rest of the bits in this field are binding specific.
Size I Sets the windowÕs size. If Size is equal to zero (0), the window is the maximum size that may
be represented by the data type used for this parameter plus one. For example, if the data type
used for Size is a word and it is expressed in units of a byte, a value of zero represents a
window size of 65,536 bytes.
State I Sets the state of the window hardware as defined as below. This parameter can be a
combination of the following values:
Value Meaning
WS_IO If set, window maps registers on a 16-bit PC Card into the host
system's I/O address space.
If reset, window maps memory address space on a 16-bit PC Card
into the host system's memory address space.
WS_ENABLED If set, window is enabled and mapping a 16-bit PC Card into the
host system memory or I/O address space.
If reset, window is disabled.
WS_16BIT This value is only valid for 16-bit PC Cards.
If set, window is programmed for a 16-bit data bus width.
If reset, window is programmed for an 8-bit data bus width.
WS_PAGED If set, window is subdivided into multiple 16 KByte pages whose
card offset addresses may be set individually using SetPage.
If reset, window is a single page.
This value is only valid for memory windows (WS_IO reset) on 16-
bit PC Cards.
WS_EISA If set, window is using EISA I/O mapping.
If rest, window is using ISA I/O mapping.
This value is only valid for I/O windows (WS_IO set).
WS_CENABLE If set, accesses to I/O ports in EISA common I/O areas generate
card enables.
If reset, accesses to I/O ports in EISA common I/O areas are
ignored.
This value is only valid for I/O windows (WS_IO set) that have
WS_EISA set.
© 1999 PCMCIA/JEIDA 81
PROGRAM INTERFACE
Speed I This parameter is the access speed the client wishes to use for the window. It uses the format
of the Device Speed Code and Extended Device Speed Codes of the Device Information Tuple.
(See the Metaformat Specification and the Electrical Specification.)
If Socket Services does not support the speed requested, it uses the next slowest speed it
supports.
For Socket Services, Bit 7 of the Speed is reserved and is reset to zero (0).
This parameter is ignored for I/O windows (WS_IO set).
Base I Programs the base address of the specified window. It is the first address within the system
memory or I/O space to which the window responds.
Return Codes
SUCCESS if all parameters are valid
BAD_ADAPTER if Adapter is invalid
BAD_ATTRIBUTE if requested State does not match the windowÕs capabilities
BAD_BASE if the Base is invalid
BAD_SIZE if Size is invalid
BAD_SOCKET if Socket is invalid for Window
BAD_SPEED if Speed is too slow
BAD_TYPE if WS_IO setting is invalid
BAD_WINDOW if Window is invalid
Comments
All parameters have been designed to map directly to the values returned by the GetWindow
service. This is intended to allow clients of Socket Services to retrieve current configuration
information with GetWindow, make desired changes and then use this service to modify the
configuration without having to create initial values for each parameter.
The following comments apply to 16-bit PC Card only:
• For memory mapping windows, the area of the PC Card memory array mapped into the host
system memory space is managed by GetPage and SetPage requests.
• To map PC Card memory address space into host system memory address space requires that
both the WS_ENABLED value of the State parameter used by Get/SetWindow be set and the
PC_ENABLED value of the State parameter used by Get/SetPage be set. For windows with
WS_PAGED reset, the PS_ENABLED value is ignored by SetPage. The window is enabled and
disabled by the WS_ENABLED value of SetWindow. GetPage for windows with WS_PAGED
reset reports the value of WS_ENABLED for PS_ENABLED.
• For windows with WS_PAGED set, WS_ENABLED acts as a global enable/disable for all pages
within the window. Once WS_ENABLED has been set using SetWindow, individual pages may
be enabled and disabled using SetPage and PS_ENABLED.
• If WC_WENABLE is reported as set by InquireWindow, Socket Services preserves the state of
PS_ENABLED for each page in the window whenever WS_ENABLED is changed by
SetWindow. If WC_ENABLE is reported as reset by InquireWindow, the client must use
SetPage to set the PS_ENABLED state for each page within the window after WS_ENABLED is
set with SetWindow.
82 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
The StartEDC service starts a previously configured EDC generator specified by the input
parameters.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
EDC I Specifies a physical EDC generator on the adapter.
Return Codes
SUCCESS if Adapter and EDC are valid
BAD_ADAPTER if Adapter is invalid
BAD_EDC if EDC is invalid
Comments
This service loads the EDC generator with any required initialization value to properly compute the
configured type of EDC.
© 1999 PCMCIA/JEIDA 83
PROGRAM INTERFACE
The StopEDC service stops EDC generation on a configured and computing EDC generator
specified by the input parameters.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
EDC I Specifies a physical EDC generator on the adapter.
Return Codes
SUCCESS if Adapter and EDC are valid
BAD_ADAPTER if Adapter is invalid
BAD_EDC if EDC is invalid
84 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
This service is vendor specific. The service is reserved for vendors to add proprietary extensions to
the Socket Services interface. No guarantee is made that any mode-specific pointer conversion will
be handled correctly. Vendors should attempt to use the registers in a non-mode specific manner.
Parameter I/O Description
Adapter I Specifies a physical adapter on the host system.
Return Codes
SUCCESS if parameters are valid
Other return codes are specific to the Socket Services handler.
Comments
This service may have additional parameters that are specific to a particular vendorÕs handler.
Before using this service, a client should use the GetVendorInfo service to confirm the implementer
to validate whether the vendor specific services are available.
© 1999 PCMCIA/JEIDA 85
SOCKET SERVICES SPECIFICATION
6. US IN G SOC K E T SE R V IC E S
This section describes how various services within Socket Services are intended to be used. This
section has been included as an aid to understanding how Socket Services is intended to work. The
approaches outlined in this section are for clarification only and may not be required.
© 1999 PCMCIA/JEIDA 87
USING SOCKET SERVICES
The AcknowledgeInterrupt service returns a bit-map representing all of the sockets administered
by a particular adapter. If a bit is set, the corresponding socket has a condition that could have
caused the interrupt. This bit represents current socket status AND-ed with the socketÕs status
change enables.
The final act of the clientÕs status change interrupt handler is to complete interrupt processing by
resetting host hardware to prepare for future interrupts. The handler then returns to the interrupted
process concluding interrupt handling. Processing continues in the interrupted routine.
During background processing, outside of the hardware interrupt handler, the Socket Services client
polls each socket indicating a change with the GetStatus service. Returned values indicate the cause
of the interrupt.
88 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
AP P E N D IX - A
7. SE R V IC E COD E S
Table 7Ð1 Service CodesÐNumerical Order
Service Code Value Service Code Value
GetAdapterCount 80H SetEDC 97H
Reserved for historical purposes 81HÐ82H StartEDC 98H
GetSSInfo 83H PauseEDC 99H
InquireAdapter 84H ResumeEDC 9AH
GetAdapter 85H StopEDC 9BH
SetAdapter 86H ReadEDC 9CH
InquireWindow 87H GetVendorInfo 9DH
GetWindow 88H AcknowledgeInterrupt 9EH
SetWindow 89H GetSetPriorHandler 9FH
GetPage 8AH GetSetSSAddr A0H
SetPage 8BH GetAccessOffsets A1H
InquireSocket 8CH AccessConfigurationSpace A2H
GetSocket 8DH InquireBridgeWindow A3H
SetSocket 8EH GetBridgeWindow A4H
GetStatus 8FH SetBridgeWindow A5H
ResetSocket 90H Reserved for future use A6HÐADH
Reserved for historical purposes 91HÐ94H VendorSpecific AEH
InquireEDC 95H Reserved for Card Services AFH
GetEDC 96H
Note: Reserved entries should not be used. They are reserved for historical
purposes, Card Services use, or for future expansion.
© 1999 PCMCIA/JEIDA 89
SERVICE CODES
Note: Reserved entries should not be used. They are reserved for historical
purposes, Card Services use, or for future expansion.
90 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
AP P E N D IX - B
8. RE T U R N COD E S
Table 8Ð1 Return Codes Numerical Order
Return Code Value Description
SUCCESS 00H The request succeeded
BAD_ADAPTER 01H Specified adapter is invalid
BAD_ATTRIBUTE 02H Specified attribute is invalid
BAD_BASE 03H Specified base system memory address is invalid
BAD_EDC 04H Specified EDC generator is invalid
Reserved 05H Reserved for historical purposes
BAD_IRQ 06H Specified IRQ level is invalid
BAD_OFFSET 07H Specified PC Card offset is invalid
BAD_PAGE 08H Specified page is invalid
READ_FAILURE 09H Unable to complete read request
BAD_SIZE 0AH Specified size is invalid
BAD_SOCKET 0BH Specified socket is invalid
Reserved 0CH Reserved for historical purposes
BAD_TYPE 0DH Specified window or interface type is invalid
BAD_VCC 0EH Specified VCC power index is invalid
BAD_VPP 0FH Specified VPP1 or VPP2 power index is invalid
Reserved 10H Reserved for historical purposes
BAD_WINDOW 11H Specified window is invalid
WRITE_FAILURE 12H Unable to complete write request
Reserved 13H Reserved for historical purposes
NO_CARD 14H No PC Card in socket
BAD_SERVICE 15H Service not supported
BAD_MODE 16H Requested processor mode is not supported
BAD_SPEED 17H Specified speed is invalid/unavailable
BUSY 18H Unable to process request at this time - retry later
Reserved 19H - FFH Reserved for Card Services and future expansion
Note: Return Codes common to Card Services use the same values. Reserved
values should not be used. They are reserved for historical purposes, Card
Services use, or for future expansion.
© 1999 PCMCIA/JEIDA 91
RETURN CODES
Note: Return Codes common to Card Services use the same values. Reserved
values should not be used. They are reserved for historical purposes, Card
Services use, or for future expansion.
92 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
AP P E N D IX - C
9. SOC K E T SE R V IC E S BIN D IN GS
9.1 Overview
A Socket Services binding answers the following three questions for a specific host environment:
How is the presence of Socket Services determined?
How are Socket Services requests made?
How are arguments passed to and from Socket Services?
A specific host environment for a Socket Services client is defined by the operating system in use
and the host platformÕs architecture. Multi-mode processors may require separate bindings for each
mode used by an operating system. Operating systems that emulate other operating systems may
also implement more than one Socket Services binding.
© 1999 PCMCIA/JEIDA 93
SOCKET SERVICES BINDINGS
Many Socket Services interfaces do not use all of the arguments in every request. If an input
argument is not used for a service, but the binding provides for a consistent calling structure, the
argument is ignored.
Socket Services interfaces may modify arguments to return information. If Socket Services does not
use an argument to return information, it is returned unmodified.
All Socket Services interfaces return Status. This is a RETCODE as defined in a previous section. A
binding may use the same or an overlapping representation for the Service input argument and
Status.
9.6.1 Overview
This section describes the Socket Services bindings for x86-based computers using various system
bus architectures.
There are a number of members of the x86 processor family offering up to three modes of
operations: real, protect and virtual (also known as V86). The x86 family also varies in addressable
94 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
memory space (1, 16 or 4096 megabytes), register size (16 or 32-bit) and memory management
capabilities (paging).
A real mode client is limited to one megabyte of address space and 16-bit registers. In protect mode,
clients can address much larger amounts of memory with 16 or, on some processors, 32-bit registers.
In V86 mode, multiple real mode clients operate independently as if they were the only real mode
client. A control program running in protect mode remaps memory space so each client believes it
is operating in the first megabyte of address space, addressing physical memory.
Different operating systems exploit different features of these processors. Due to the differences
between the capabilities of x86 processors and the manner that x86 operating systems use the
processor, this section actually defines four separate types of clients that use Socket Services.
An environment must provide a binding for each type of client it supports. The four types of clients
defined by this section are:
DOS real mode clients
OS/2 16-bit protect mode clients
Windows 16-bit protect mode clients
Windows 32-bit protect mode VxD clients
© 1999 PCMCIA/JEIDA 95
SOCKET SERVICES BINDINGS
96 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
Exit:
[CF] Status Set = error
Reset = success
If [CF] set
[AH] Non SUCCESS Return Code
else
[AH] SUCCESS Return Code
Please note that these are guidelines used to develop the service interfaces and exceptions have
been made for specific services. See the individual service bindings for the x86 architecture.
Whenever possible, the interface preserves the contents of all registers unless they are used to
return information. For bit-mapped fields, bits within a field (or register) are numbered beginning
with zero. Bit 0 is the least significant bit within the register.
For all services, the [CF] indicates whether the service was successful. If the [CF] is reset on exit, the
service was successful. If the [CF] is set on exit, the service failed. The [AH] register always contains
a RETCODE on exit. The only exception to this convention is determining the presence of Socket
Services with the GetAdapterCount service. There is no guarantee of the state of the [CF] or the
[AH] register if no Socket Services handler is present.
9.6.5.2.1 Overview
The packet interface passes parameters via a packet that is pointed to by a pointer on the stack. In
c-style notation, the entry point for the packet interface is defined as:
void SSPacketEntryPoint (FAR *fpArgPacket)
Note: The usage of a C-style function definition provides processor and mode
independence in the definition. Implementers using the packet interface
must take care in utilizing the correct mode.
© 1999 PCMCIA/JEIDA 97
SOCKET SERVICES BINDINGS
For all packet entry point modes the parameters are passed in a packet that is generally structured
as shown below. Each entry mode binding (e.g. x86 real mode, OS/2, Win 16 and Win32) for
Socket Services has a separate section to illustrate the details of the packet for each. Where there are
differences, those are highlighted with shading.
Offset Size Description and Usage (RE: x86 register name)
0 2 Segment or Selector of Buffer (ES)
2 2 Segment or Selector of Data Pointer (DS)
4 4 Offset of Buffer ([E]DI)
8 4 Offset of Data Pointer ([E]SI)
12 4 Reserved (BP)
16 4 Reserved (SP)
20 1 Page or Socket (BL)
21 1 Window (BH)
22 2 Reserved (hi word EBX)
24 4 Attributes ([E]DX)
28 4 Count ([E]CX)
32 1 Adapter (AL)
33 1 Service Code and RETCODE (AH)
34 2 Reserved (hi word of EAX)
36 2 Reserved (IP)
38 2 Reserved (CS)
40 2 Status - bit 0 only, all others reserved (flags)
42 2 n = Additional Arguments Buffer Length
44 n Additional Arguments Buffer
The additional arguments are formatted where there is a control word before the data for the
argument and bit 0 of that control word is a Ôvalid/supportedÕ flag. This bit is set by Socket
Services to inform Card Services whether or not the feature is supported and that the data in the rest
of the argument is valid.
For example, lets imagine an additional argument named Foo that has two bytes of data. WeÕll use
offset of x for the start of this argument. Note that the actual purpose and data contents of 1 would
described in the functional portion of the Socket Services standard:
Offset Size Description and Usage
É É É
x 2 Control byte for Foo
Bit 0 = Supported/Valid
Bits 1-15 = Reserved
x+2 2 Foo
Please note that these are guidelines used to develop the service interfaces and exceptions have
been made for specific services. See the individual service bindings for the packet interface.
Whenever possible, the interface preserves the contents of all packet fields unless they are used to
return information. For bit-mapped fields, bits within a field are numbered beginning with zero.
Bit 0 is the least significant bit within the field.
For all services, bit 0 of the Status field (offset 40) indicates whether the service was successful. If this
bit is reset on exit, the service was successful. If this bit is set on exit, the service failed. The Return
Code field always contains a RETCODE on exit.
98 © 1999 PCMCIA/JEIDA
SOCKET SERVICES SPECIFICATION
© 1999 PCMCIA/JEIDA 99
SOCKET SERVICES BINDINGS
9.6.7.1.1 AccessConfigurationSpace
Entry:
[AH] ACCESS_CFG_SPACE
[AL] Adapter
[BH] Function 0⋅⋅7
[BL] Socket
[CH] Action Read = 00H
Write = 01H
[CL] Location On a four byte boundary
[EDX] Data
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
[EDX] Data
9.6.7.1.2 AcknowledgeInterrupt
Entry:
[AH] ACK_INTERRUPT
[AL] Adapter 0 .. Max_Adapter
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
[CX] Sockets
9.6.7.1.3 GetAccessOffsets
Entry:
[AH] ACCESS_OFFSETS
[AL] Adapter
[BH] Mode 00 = Real Mode
01 = 16:16 Protect
02 = 16:32 Protect
03 = 00:32 Protect
[CX] NumDesired
[ES]:[(E)DI] pBuffer
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
[DX] NumAvail
[ES]:[(E)DI] pBuffer
All modes return 16-bit offsets. These offsets need to be combined with information returned by
GetSSAddr describing the location of the code segment. Offsets returned by this service are relative
to the code segment.
For real-mode, 16:16 and 16:32, the routines at these offsets use FAR RET instructions to return to
the caller requiring they be invoked with a FAR CALL instruction. In 0:32 (flat) protect-mode, the
routines at the returned offsets use NEAR RET instructions and need to be invoked with a NEAR
CALL instruction.
9.6.7.1.4 GetAdapter
Entry:
[AH] GET_ADAPTER
[AL] Adapter
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
[DH] State Bit 0 = AS_POWERDOWN
Bit 1 = AS_MAINTAIN
[DI] SCRouting Bit 0⋅⋅4 = IRQ level
Bit 6 = IRQ_HIGH
Bit 7 = IRQ_ENABLED
9.6.7.1.5 GetAdapterCount
Entry:
[AH] GET_ADP_CNT
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
[AL] TotalAdapters If [CF] reset
[AH] is SUCCESS and Signature is 'SS'
[CX] Signature
9.6.7.1.6 GetBridgeWindow
Entry:
[AH] GET_BWINDOW
[AL] Adapter
[BH] Window
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
[BL] Socket
[ECX] Size (Bytes)
[DH] State Bit 0 WS_IO
Bit 1 WS_ENABLED
Bit 3 WS_PREFETCH
Bits 3&4 WS_CACHABLE
Bits 2, 5..7 Reserved (reset to zero)
[EDI] Base (Bytes)
9.6.7.1.7 GetEDC
Entry:
[AH] GET_EDC
[AL] Adapter
[BH] EDC
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
[BL] Socket
[DH] State Bit 0 = EC_UNI
Bit 1 = EC_WRITE
[DL] Type Bit 0 = ET_CHECK8
Bit 1 = ET_SDLC16
Bit 2 = ET_SDLC32
9.6.7.1.8 GetPage
Entry:
[AH] GET_PAGE
[AL] Adapter
[BH] Window
[BL] Page
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
[DL] State Bit 0 = PS_ATTRIBUTE
Bit 1 = PS_ENABLED
Bit 2 = PS_WP
[DI] Offset (4 KByte units)
9.6.7.1.9 GetSetPriorHandler
Entry:
[AH] PRIOR_HANDLER
[AL] Adapter
[BL] Mode 0 = Get
1 = Set
[CX]:[DX] pHandler
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
[CX]:[DX] pHandler
If this Socket Services handler is the first installed in the INT 1AH chain, the values returned by a
Get request should be the entry point of the Time of Day handler.
One reason a SetPriorHandler request would fail is the Socket Services it is addressing is in ROM
BIOS as the first extension to the Time of Day handler. In this case, the vector to the Time of Day
handler is probably hard-coded into the ROM BIOS and not in RAM prohibiting it from being
updated. This should not cause any difficulty to a client wishing to revise the chain, since this Socket
Services may be bypassed by registering the values returned from a GetPriorHandler request to
this Socket Services with a replacement Socket Services implementation.
9.6.7.1.10 GetSetSSAddr
Entry:
[AH] SS_ADDR
[AL] Adapter
[BH] Mode 00 = Real Mode
01 = 16:16 Protect
02 = 16:32 Protect
03 = 00:32 Protect
[BL] Subfunc
[CX] NumAddData
[ES]:[(E)DI] pBuffer
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
[CX] NumAddData
[ES]:[(E)DI] pBuffer
The entry points returned by this service must receive control from a CALL instruction. The real,
16:16 and 16:32 entry points require a FAR CALL instruction to be used. The 00:32 entry point
requires a NEAR CALL. When using an entry point returned by this service for any mode other
than real, the client must establish a pointer to the main data area in [DS]:[(E)SI].
Note: Subfunc 02 is invalid, if the desired processor mode is 00 indicating real-
mode.
WA R N IN G :
Mode specific comments have been added to the buffer entry descriptions in the tables below:
9.6.7.1.11 GetSocket
Entry:
[AH] GET_SOCKET
[AL] Adapter
[BL] Socket
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
[BH] SCIntMask (Uses the same bit masks as InquireSocket)
[CH] Lower Nibble = VccLevel
Upper Nibble = Vcontrol
Bit 4 = VCTL_CISREAD
Bit 5 = VCTL_OVERRIDE
Bit 6áá7 = Voltage Sense Signaling (read-only)
0 = VCTL_5V
1 = VCTL_33V
2 = VCTL_XXV
3 = Reserved (not used)
[CL] VppLevels Lower Nibble = VPP2
Upper Nibble = VPP1
[DH] State (Uses same bit masks as SCIntMask)
[DL] CtlInd (Uses same bit masks as InquireSocket)
[DI] Low Byte = IREQRouting
High Byte = IFType
Bit 0áá4 IRQ level
Bit 5 RESERVED
Bit 6 IRQ_HIGH
Bit 7 IRQ_ENABLE
Bit 8áá9 Interface type
0 = IF_CARDBUS,
1 = IF_MEMORY
2 = IF_IO
3 = IF_CUSTOM
Bits 10áá11 DREQ
0 = No DMA
1 = SPKR#
2 = IOIS16#
3 = INPACK#
Bits 12áá15 DMA Channel (0áá15)
[BP] IFIndex Index of custom interface when IFType = IF_CUSTOM
9.6.7.1.12 GetSSInfo
Entry:
[AH] GET_SS_INFO
[AL] Adapter
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
[AL] Zero (0) Insures backward compatibility with Release 1.01
[BX] Compliance
[CH] NumAdapters
[CL] FirstAdapter
9.6.7.1.13 GetStatus
Entry:
[AH] GET_STATUS
[AL] Adapter
[BL] Socket
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
[BH] CardState (same bit-masks as GetSocket SCIntMask)
[DH] SocketState (same as GetSocket)
[DL] CtlInd (same as GetSocket)
[DI] High Byte = IFType
Low Byte = IREQRouting
(same as GetSocket)
9.6.7.1.14 GetVendorInfo
Entry:
[AH] GET_VENDOR_INFO
[AL] Adapter
[BL] Type
[ES]:[(E)DI] pBuffer
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
[ES]:[(E)DI] pBuffer
[DX] Release
9.6.7.1.15 GetWindow
Entry:
[AH] GET_WINDOW
[AL] Adapter
[BH ] Window
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
[BL] Socket and parameter width
Bit 0áá3 = Socket Number
Bit 4 = Size and Base width
0 = 16 bits
1 = 32 bits
[(E)CX] Size If bit 4 of [BL] is reset, I/O windows are expressed in bytes, memory windows
are expressed in 4 KByte units and [CX] is used.
If bit 4 of [BL] is set, both I/O and memory windows are expressed in bytes and
[ECX] is used.
[DH] State Bit 0 = WS_IO
Bit 1 = WS_ENABLED
Bit 2 = WS_16BIT
Bit 3 = WS_PAGED (Memory window) or WS_EISA (I/O window)
Bit 4 = WS_CENABLE (I/O window with WS_EISA set)
[DL] Speed
[(E)DI] Base If bit 4 of [BL] is reset, I/O windows are expressed in bytes, memory windows
are expressed in 4 KByte units and [DI] is used.
If bit 4 of [BL] is set, both I/O and memory windows are expressed in bytes and
[EDI] is used.
9.6.7.1.16 InquireAdapter
Entry:
[AH] INQ_ADAPTER
[AL] Adapter
[ES]:[(E)DI] pBuffer for adapter characteristics and power levels
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
[BH] NumWindows
[BL] NumSockets
[CX] NumEDCs
[DX] NumBridgeWindows
[ES]:[(E)DI] pBuffer with adapter characteristics and power management tables
9.6.7.1.17 InquireBridgeWindow
Entry:
[AH] INQ_BWINDOW
[AL] Adapter
[BH] Window
[ES]:[(E)DI] pBuffer for window characteristics
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
[BL] WndCaps Bit 0 = WC_MEMORY
Bit 1 = Reserved (reset to zero)
Bit 2 = WC_IO
Bit 3áá7 = Reserved (reset to zero)
[CX] Sockets Bit 0áá15 = Bit-mask
Bit 0 is Socket 0
Bit 1 is Socket 1
etc.
[ES]:[(E)DI] pBuffer with window characteristics
Note: All BASE and SIZE values in the BIOWINTBL and BMEMWINTBL
structures returned by this service are 32-bits wide. That is, the BASE32 and
WSIZE32 data types are used for BASE and SIZE values.
9.6.7.1.18 InquireEDC
Entry:
[AH] INQ_EDC
[AL] Adapter
[BH] EDC
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
[CX] Sockets Bit 0áá15 = Bit-mask
Bit 0 is Socket 0
Bit 1 is Socket 1
etc.
[DH] Caps Bit 0 = EC_UNI
Bit 1 = EC_BI
Bit 2 = EC_REGISTER
Bit 3 = EC_MEMORY
Bit 4 = EC_PAUSABLE
[DL] Types Bit 0 = ET_CHECK8
Bit 1 = ET_SDLC16
Bit 2 = ET_SDLC32
9.6.7.1.19 InquireSocket
Entry:
[AH] INQ_SOCKET
[AL] Adapter
[BL] Socket
[ES]:[(E)DI] pBuffer for socket characteristics
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
[BH] SCIntCaps Bit 0 = SBM_WP
Bit 1 = SBM_LOCKED
Bit 2 = SBM_EJECT
Bit 3 = SBM_INSERT
Bit 4 = SBM_BVD1
Bit 5 = SBM_BVD2
Bit 6 = SBM_RDYBSY
Bit 7 = SBM_CD
[DH] SCRptCaps (same as SCIntCaps)
[DL] CtlIndCaps Bit 0 = SBM_WP
Bit 1 = SBM_LOCKED
Bit 2 = SBM_EJECT
Bit 3 = SBM_INSERT
Bit 4 = SBM_LOCK
Bit 5 = SBM_BATT
Bit 6 = SBM_BUSY
Bit 7 = SBM_XIP
[ES]:[(E)DI] pBuffer with socket characteristics
9.6.7.1.20 InquireWindow
Entry:
[AH] INQ_WINDOW
[AL] Adapter
[BH] Window if [BH] is 0FFH then Window is passed in [DH] and the window characteristics
returned in the Buffer use 32-bit wide values for BASE and SIZE
[DH] Window if [BH] is 0FFH, otherwise undefined
[ES]:[(E)DI] pBuffer for window characteristics
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
[BL] WndCaps Bit 0 = WC_COMMON
Bit 1 = WC_ATTRIBUTE
Bit 2 = WC_IO
Bit 7 = WC_WAIT
[CX] Sockets Bit 0áá15 = Bit-mask
Bit 0 is Socket 0
Bit 1 is Socket 1
etc.
[ES]:[(E)DI] pBuffer with window characteristics
Note: The data types used for the BASE and SIZE values in the IOWINTBL and
MEMWINTBL structures returned by this service vary depending on the
value passed in the [BH] register.
If [BH] is not FFH, the BASE and SIZE values are 16-bits wide using the
BASE16 and WSIZE16 data types. When [BH] is not FFH, BASE and SIZE
values in the IOWINTBL structure are expressed in bytes and BASE and
SIZE values in the MEMWINTBL structure are expressed in 4 KByte units.
If [BH] is FFH, the BASE and SIZE values are 32-bits wide using the BASE32
and WSIZE32 data types. When [BH] is FFH, BASE and SIZE values in both
the IOWINTBL and MEMWINTBL structures are expressed in bytes.
This encoding allows backward compatibility with prior releases of the
Socket Services binding for this service that only used 16-bit values for
BASE and SIZE.
9.6.7.1.21 PauseEDC
Entry:
[AH] PAUSE_EDC
[AL] Adapter
[BH] EDC
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
9.6.7.1.22 ReadEDC
Entry:
[AH] READ_EDC
[AL] Adapter
[BH] EDC
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
[DX] Value
9.6.7.1.23 ResetSocket
Entry:
[AH] RESET_SOCKET
[AL] Adapter
[BL] Socket
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
9.6.7.1.24 ResumeEDC
Entry:
[AH] RESUME_EDC
[AL] Adapter
[BH] EDC
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
9.6.7.1.25 SetAdapter
Entry:
[AH] SET_ADAPTER
[AL] Adapter
[DH] State (same as GetAdapter)
[DI] SCRouting (same as GetAdapter)
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
9.6.7.1.26 SetBridgeWindow
Entry:
[AH] GET_BWINDOW
[AL] Adapter
[BH] Window
[BL] Socket
[ECX] Size (Bytes)
[DH] State (Same as GetBridgeWindow)
[EDI] Base (Bytes)
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
9.6.7.1.27 SetEDC
Entry:
[AH] SET_EDC
[AL] Adapter
[BH] EDC
[BL] Socket
[DH] State (same as GetEDC)
[DL] Type (same as GetEDC)
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
9.6.7.1.28 SetPage
Entry:
[AH] SET_PAGE
[AL] Adapter
[BH] Window
[BL] Page
[DH] State (same as GetPage)
[DI] Offset (4 KByte units)
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
9.6.7.1.29 SetSocket
Entry:
[AH] SET_SOCKET
[AL] Adapter
[BL] Socket
[BH] SCIntMask (same as GetSocket)
[CH] Vcontrol (same as GetSocket)
[CL] VppLevels (same as GetSocket
[DH] State (same as GetSocket)
[DL] CtlInd (same as GetSocket)
[DI] High Byte = IFType
Low Byte = IREQRouting
(same as GetSocket), plus:
Bit 5 IRQ_INVALID
[BP] IFIndex Index of custom interface when IFType = IF_CUSTOM
(same as GetSocket)
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
9.6.7.1.30 SetWindow
Entry:
[AH] SET_WINDOW
[AL] Adapter
[BH] Window
[BL] Socket
[CX] Size (same as GetWindow)
[DH] State (same as GetWindow)
[DL] Speed
[DI] Base (same as GetWindow)
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
9.6.7.1.31 StartEDC
Entry:
[AH] START_EDC
[AL] Adapter
[BH] EDC
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
9.6.7.1.32 StopEDC
Entry:
[AH] STOP_EDC
[AL] Adapter
[BH] EDC
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
9.6.7.1.33 VendorSpecific
Entry:
[AH] VEND_SPECIFIC
[AL] Adapter
All other registers are vendor specific.
Exit:
[CF] Status set = error
reset = success
[AH] RETCODE
9.6.7.2.1 AccessConfigurationSpace
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 4 Reserved
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Socket
21 1 Function (0..7 only)
22 2 Reserved
24 4 Data
28 1 Location (on a four byte boundary)
29 1 Action (Read = 00h, Write = 01h)
30 2 Reserved
32 1 Adapter
33 1 ACCESS_CFG_SPACE and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.2 AcknowledgeInterrupt
Offset Size Description and Usage
0 2 Segment or Selector of Buffer
2 2 Segment or Selector of Data Pointer
4 4 Offset of Buffer
8 4 Offset of Data Pointer
12 4 Reserved
16 4 Reserved
20 1 Page or Socket
21 1 Window
22 2 Reserved
24 4 Attributes
28 4 Reserved / Sockets
32 1 Adapter
33 1 ACK_INTERRUPT and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.3 GetAccessOffsets
Offset Size Description and Usage (RE: x86 register name)
0 2 Segment or Selector of pBuffer (ES)
2 2 Reserved
4 4 Offset of pBuffer
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Reserved
21 1 Mode
00 = Real Mode
01 = 16:16 Protect
02 = 16:32 Protect
03 = 00:32 Protect
22 2 Reserved
24 4 Reserved
28 4 NumDesired
32 1 Adapter
33 1 ACCESS_OFFSETS and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
All modes return 16-bit offsets. These offsets need to be combined with information returned by
GetSSAddr describing the location of the code segment. Offsets returned by this service are relative
to the code segment.
For real-mode, 16:16 and 16:32, the routines at these offsets use FAR RET instructions to return to
the caller requiring they be invoked with a FAR CALL instruction. In 0:32 (flat) protect-mode, the
routines at the returned offsets use NEAR RET instructions and need to be invoked with a NEAR
CALL instruction.
9.6.7.2.4 GetAdapter
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 4 Reserved / SCRouting
Bit 0⋅⋅4 = IRQ level
Bit 6 = IRQ_HIGH
Bit 7 = IRQ_ENABLED
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Reserved
21 1 Reserved
22 2 Reserved
24 1 Reserved
25 1 Reserved / State:
Bit 0 = AS_POWERDOWN
Bit 1 = AS_MAINTAIN
26 2 Reserved
28 4 Reserved
32 1 Adapter
33 1 GET_ADAPTER and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.5 GetAdapterCount
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 4 Reserved
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Reserved
21 1 Reserved
22 2 Reserved
24 4 Reserved
28 4 Reserved / Signature
32 1 Reserved / TotalAdapters (if Status bit 0 reset then RETCODE=SUCCESS and Signature is
ÕSSÕ)
33 1 GET_ADP_CNT and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.6 GetBridgeWindow
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 4 Reserved / Base (Bytes)
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Reserved / Socket
21 1 Reserved / Window
22 2 Reserved
24 1 Reserved
25 1 Reserved / State:
Bit 0 WS_IO
Bit 1 WS_ENABLED
Bit 3 WS_PREFETCH
Bits 3&4 WS_CACHABLE
Bits 2, 5..7 Reserved (reset to zero)
26 2 Reserved
28 4 Reserved / Size
32 1 Adapter
33 1 GET_BWINDOW and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.7 GetEDC
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 4 Reserved
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Reserved / Socket
21 1 EDC
22 2 Reserved
24 1 Reserved / Type:
Bit 0 = ET_CHECK8
Bit 1 = ET_SDLC16
Bit 2 = ET_SDLC32
25 1 Reserved / State:
Bit 0 = EC_UNI
Bit 1 = EC_WRITE
24 4 Reserved
28 4 Reserved
32 1 Adapter
33 1 GET_EDC and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.8 GetPage
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 4 Reserved / Offset
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Page
21 1 Window
22 2 Reserved
24 1 Reserved / State:
Bit 0 = PS_ATTRIBUTE
Bit 1 = PS_ENABLED
Bit 2 = PS_WP
25 1 Reserved
26 2 Reserved
28 4 Reserved
32 1 Adapter
33 1 GET_PAGE and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.9 GetSetPriorHandler
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 4 Reserved
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Mode:
0 = Get
1 = Set
21 1 Reserved
22 2 Reserved
24 8 pHandler
32 1 Adapter
33 1 PRIOR_HANDLER and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
If this Socket Services handler is the first installed in the INT 1AH chain, the values returned by a
Get request should be the entry point of the Time of Day handler.
One reason a SetPriorHandler request would fail is the Socket Services it is addressing is in ROM
BIOS as the first extension to the Time of Day handler. In this case, the vector to the Time of Day
handler is probably hard-coded into the ROM BIOS and not in RAM prohibiting it from being
updated. This should not cause any difficulty to a client wishing to revise the chain, since this Socket
Services may be bypassed by registering the values returned from a GetPriorHandler request to
this Socket Services with a replacement Socket Services implementation.
9.6.7.2.10 GetSetSSAddr
Offset Size Description and Usage
0 2 Segment or Selector of pBuffer
2 2 Reserved
4 4 Offset of pBuffer
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Subfunc
21 1 Mode:
00 = Real Mode
01 = 16:16 Protect
02 = 16:32 Protect
03 = 00:32 Protect
22 2 Reserved
24 4 Reserved
28 4 NumAddData
32 1 Adapter
33 1 SS_ADDR and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
The entry points returned by this service must receive control from a CALL instruction. The real,
16:16 and 16:32 entry points require a FAR CALL instruction to be used. The 00:32 entry point
requires a NEAR CALL. When using an entry point returned by this service for any mode other
than real, the client must establish a pointer to the main data area in offsets 2 and 8.
Note: Subfunc 02 is invalid, if the desired processor mode is 00 indicating real-
mode.
WA R N IN G :
Mode specific comments have been added to the buffer entry descriptions in the tables below:
9.6.7.2.11 GetSocket
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 2 Reserved / Low Byte = IREQRouting
High Byte = IFType
Bit 0áá4 IRQ level
Bit 5 RESERVED
Bit 6 IRQ_HIGH
Bit 7 IRQ_ENABLE
Bit 8áá9 Interface type
0 = IF_CARDBUS,
1 = IF_MEMORY
2 = IF_IO
3 = IF_CUSTOM
Bits 10áá11 DREQ
0 = No DMA
1 = SPKR#
2 = IOIS16#
3 = INPACK#
Bits 12áá15 DMA Channel (0áá15)
6 2 Reserved
8 4 Reserved
12 4 Reserved / IFIndex (Index of custom interface when IFType = IF_CUSTOM)
16 4 Reserved
20 1 Socket
21 1 Reserved / SCIntMask (Uses the same bit masks as InquireSocket)
22 2 Reserved
24 1 Reserved / CtlInd (Uses same bit masks as InquireSocket)
25 1 Reserved / State (Uses same bit masks as InquireSocket)
26 2 Reserved
28 1 Reserved / Vpp Levels:
Lower Nibble = VPP2
Upper Nibble = VPP1
30 2 Reserved
32 1 Adapter
33 1 GET_SOCKET and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
9.6.7.2.12 GetSSInfo
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 4 Reserved
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 2 Reserved / Compliance
22 2 Reserved
24 4 Reserved
28 1 Reserved / FirstAdapter
29 1 Reserved / NumAdapters
30 2 Reserved
32 1 Adapter / Zero (0) (will be zero on return for compatibility)
33 1 GET_SS_INFO and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.13 GetStatus
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 2 Reserved / Interface and IREQ Routing
High Byte = IFType
Low Byte = IREQRouting
(same as GetSocket)
6 2 Reserved
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Socket
21 1 Reserved / CardState (same bit mask as GetSocket SCIntMask)
22 2 Reserved
24 1 Reserved / CtlInd (Same as GetSocket)
25 1 Reserved / SocketState (same as GetSocket)
26 2 Reserved
28 4 Reserved
32 1 Adapter
33 1 GET_STATUS and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.14 GetVendorInfo
Offset Size Description and Usage
0 2 Segment or Selector of pBuffer
2 2 Reserved
4 4 Offset of pBuffer
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Type
21 1 Reserved
22 2 Reserved
24 2 Reserved / Release
26 2 Reserved
28 4 Reserved
32 1 Adapter
33 1 GET_VENDOR_INFO and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.15 GetWindow
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 4 Reserved / Base: If bit 4 of the Socket field (offset 20) is reset, I/O windows are expressed in
bytes, memory windows are expressed in 4 Kbyte units and only the low 16-bits are used for
Base.
If bit 4 of the Socket field (offset 20) is set, both I/O and memory windows are expressed in
bytes and all 32-bits of Base is used.
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Reserved / Socket and parameter width
Bit 0áá3 = Socket Number
Bit 4 = Size and Base width
0 = 16 bits
1 = 32 bits
21 1 Window
22 2 Reserved
24 1 Reserved / Speed
25 1 Reserved / State:
Bit 0 = WS_IO
Bit 1 = WS_ENABLED
Bit 2 = WS_16BIT
Bit 3 = WS_PAGED (Memory window) or WS_EISA (I/O window)
Bit 4 = WS_CENABLE (I/O window with WS_EISA set)
24 2 Reserved
28 4 Reserved / Size: If bit 4 of the Socket field (offset 20) is reset, I/O windows are expressed in
bytes, memory windows are expressed in 4 Kbyte units and only 16 bits is used for Size.
If bit 4 of the Socket field (offset 20) is set, both I/O and memory windows are expressed in
bytes and 32 bits are used for Size.
32 1 Adapter
33 1 GET_WINDOW and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.16 InquireAdapter
Offset Size Description and Usage
0 2 Segment or Selector of pBuffer
2 2 Reserved
4 4 Offset of pBuffer
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Reserved / NumSockets
21 1 Reserved / NumWindows
22 2 Reserved
24 4 Reserved / NumBridgeWindows
28 4 Reserved / NumEDCs
32 1 Adapter
33 1 INQ_ADAPTER and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.17 InquireBridgeWindow
Offset Size Description and Usage
0 2 Segment or Selector of pBuffer
2 2 Reserved
4 4 Offset of pBuffer
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Reserved / WndCaps:
Bit 0 = WC_MEMORY
Bit 1 = Reserved (reset to zero)
Bit 2 = WC_IO
Bit 3áá7 = Reserved (reset to zero)
21 1 Window
22 2 Reserved
24 4 Reserved
28 4 Reserved / Sockets:
Bit 0áá15 = Bit-mask
Bit 0 is Socket 0
Bit 1 is Socket 1
etc.
32 1 Adapter
33 1 INQ_BWINDOW and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
Note: All BASE and SIZE values in the BIOWINTBL and BMEMWINTBL
structures returned by this service are 32-bits wide. That is, the BASE32 and
WSIZE32 data types are used for BASE and SIZE values.
9.6.7.2.18 InquireEDC
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 4 Reserved
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Reserved
21 1 EDC
22 2 Reserved
24 1 Reserved / Types:
Bit 0 = ET_CHECK8
Bit 1 = ET_SDLC16
Bit 2 = ET_SDLC32
25 1 Reserved / Caps:
Bit 0 = EC_UNI
Bit 1 = EC_BI
Bit 2 = EC_REGISTER
Bit 3 = EC_MEMORY
Bit 4 = EC_PAUSABLE
24 4 Reserved
28 4 Reserved / Sockets: Bit Mask
32 1 Adapter
33 1 INQ_EDC and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.19 InquireSocket
Offset Size Description and Usage
0 2 Segment or Selector of pBuffer
2 2 Reserved
4 4 Offset of pBuffer
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Socket
21 1 Reserved / SCIntCaps:
Bit 0 = SBM_WP
Bit 1 = SBM_LOCKED
Bit 2 = SBM_EJECT
Bit 3 = SBM_INSERT
Bit 4 = SBM_BVD1
Bit 5 = SBM_BVD2
Bit 6 = SBM_RDYBSY
Bit 7 = SBM_CD
22 2 Reserved
24 1 Reserved / CtlIndCaps:
Bit 0 = SBM_WP
Bit 1 = SBM_LOCKED
Bit 2 = SBM_EJECT
Bit 3 = SBM_INSERT
Bit 4 = SBM_LOCK
Bit 5 = SBM_BATT
Bit 6 = SBM_BUSY
Bit 7 = SBM_XIP
9.6.7.2.20 InquireWindow
Offset Size Description and Usage
0 2 Segment or Selector of pBuffer
2 2 Reserved
4 4 Offset of pBuffer
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Reserved / WndCaps:
Bit 0 = WC_COMMON
Bit 1 = WC_ATTRIBUTE
Bit 2 = WC_IO
Bit 7 = WC_WAIT
21 1 Window: if this field value is 0FFH then Window is passed in offset 25 and the window
characteristics returned in the Buffer use 32-bit wide values for BASE and SIZE
22 2 Reserved
24 1 Reserved
25 1 Window If offset 21 is 0FFH else Reserved
24 2 Reserved
28 4 Reserved / Sockets:
Bit 0áá15 = Bit-mask
Bit 0 is Socket 0
Bit 1 is Socket 1
etc.
32 1 Adapter
33 1 INQ_WINDOW and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
Note: The data types used for the BASE and SIZE values in the IOWINTBL and
MEMWINTBL structures returned by this service vary depending on the
value passed in the Window (offset 21) field.
If the Window (offset 21) field is not FFH, the BASE and SIZE values are 16-
bits wide using the BASE16 and WSIZE16 data types. When the Window
(offset 21) field is not FFH, BASE and SIZE values in the IOWINTBL
structure are expressed in bytes and BASE and SIZE values in the
MEMWINTBL structure are expressed in 4 KByte units.
If the Window (offset 21) field is FFH, the BASE and SIZE values are 32-bits
wide using the BASE32 and WSIZE32 data types. When the Window (offset
21) field is FFH, BASE and SIZE values in both the IOWINTBL and
MEMWINTBL structures are expressed in bytes.
This encoding allows backward compatibility with prior releases of the
Socket Services for this service that only used 16-bit values for BASE and
SIZE.
9.6.7.2.21 PauseEDC
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 4 Reserved
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Reserved
21 1 EDC
22 2 Reserved
24 4 Reserved
28 4 Reserved
32 1 Adapter
33 1 PAUSE_EDC and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.22 ReadEDC
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 4 Reserved
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Reserved
21 1 EDC
22 2 Reserved
24 4 Reserved / Value
28 4 Reserved
32 1 Adapter
33 1 READ_EDC and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.23 ResetSocket
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 4 Reserved
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Socket
21 1 Reserved
22 2 Reserved
24 4 Reserved
28 4 Reserved
32 1 Adapter
33 1 RESET_SOCKET and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.24 ResumeEDC
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 4 Reserved
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Reserved
21 1 EDC
22 2 Reserved
24 4 Value
28 4 Reserved
32 1 Adapter
33 1 RESUME_EDC and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.25 SetAdapter
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 4 SCRouting (same as GetAdapter)
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Reserved
21 1 Reserved
22 2 Reserved
24 1 State (same as in GetAdapter)
25 1 Reserved
26 2 Reserved
28 4 Reserved
32 1 Adapter
33 1 SET_ADAPTER and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.26 SetBridgeWindow
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 4 Base
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Socket
21 1 Window
22 2 Reserved
24 1 State (same as in GetBridgeWindow)
25 1 Reserved
26 2 Reserved
28 4 Size (bytes)
32 1 Adapter
33 1 SET_BWINDOW and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.27 SetEDC
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 4 Reserved
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Socket
21 1 Reserved
22 2 Reserved
24 1 Type (same as in GetEDC)
25 1 State (same as in GetEDC)
26 2 Reserved
28 4 Reserved
32 1 Adapter
33 1 SET_EDC and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.28 SetPage
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 4 Offset
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Page
21 1 Window
22 2 Reserved
24 1 State: (same as in GetPage)
25 1 Reserved
26 2 Reserved
28 4 Reserved
32 1 Adapter
33 1 SET_PAGE and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.29 SetSocket
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 2 High Byte = IFType
Low Byte = IREQRouting
(same as GetSocket), plus:
Bit 5 IRQ_INVALID
6 2 Reserved
8 4 Reserved
12 4 IFIndex (same as in GetSocket)
16 4 Reserved
20 1 Socket
21 1 SCIntMask (same as in GetSocket)
22 2 Reserved
24 1 CtlInd (same as in GetSocket)
25 1 State (same as in GetSocket)
26 2 Reserved
28 1 VppLevels: (same as in GetSocket)
29 1 VControl (same as in GetSocket)
30 2 Reserved
32 1 Adapter
33 1 SET_SOCKET and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.30 SetWindow
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 4 Base (same as in GetWindow)
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Socket (same as in GetWindow)
21 1 Window
22 2 Reserved
24 1 Speed
25 1 State (same as in GetWindow)
24 2 Reserved
28 4 Size (same as in GetWindow)
32 1 Adapter
33 1 SET_WINDOW and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.31 StartEDC
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 4 Reserved
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Reserved
21 1 EDC
22 2 Reserved
24 4 Reserved
28 4 Reserved
32 1 Adapter
33 1 START_EDC and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.32 StopEDC
Offset Size Description and Usage
0 2 Reserved
2 2 Reserved
4 4 Reserved
8 4 Reserved
12 4 Reserved
16 4 Reserved
20 1 Reserved
21 1 EDC
22 2 Reserved
24 4 Reserved
28 4 Reserved
32 1 Adapter
33 1 STOP_EDC and RETCODE
34 2 Reserved
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 0 = Additional Arguments Buffer Length
44 0 Additional Arguments Buffer
9.6.7.2.33 VendorSpecific
Offset Size Description and Usage
0 2 Vendor Specific
2 2 Vendor Specific
4 4 Vendor Specific
8 4 Vendor Specific
12 4 Reserved
16 4 Reserved
20 1 Vendor Specific
21 1 Vendor Specific
22 2 Vendor Specific
24 4 Vendor Specific
28 4 Vendor Specific
32 1 Adapter
33 1 VEND_SPECIFIC and RETCODE
34 2 Vendor Specific
36 2 Reserved
38 2 Reserved
40 2 Status - bit 0 only, all others reserved
42 2 n = Additional Arguments Buffer Length (vendor specific)
44 n Additional Arguments Buffer - Vendor Specific
; ----- Structures
Volume 7
Media Storage Formats Specification
PCMCIA
JEIDA
©1999, PCMCIA/JEIDA PCMCIA HAS BEEN NOTIFIED BY
All rights reserved. CERTAIN THIRD PARTIES THAT
THE IMPLEMENTATION OF THE
No part of this publication may be STANDARD WILL REQUIRE A
reproduced, stored in a retrieval LICENSE FROM THOSE THIRD
system, or transmitted, in any form or PARTIES TO AVOID
by any means, mechanical, INFRINGEMENT OF THEIR
electronic, photocopying, recording RIGHTS. PCMCIA HAS OBTAINED
or otherwise, without prior written FROM SOME, BUT NOT ALL, OF
permission of PCMCIA and JEIDA. THOSE PARTIES A GRANT OF
Printed in the United States of IMMUNITY THAT PCMCIA WILL
America. EXTEND TO YOU, CONTINGENT
PCMCIA (Personal Computer UPON YOUR ENTERING INTO
Memory Card International AND DELIVERING TO PCMCIA
Association) THE RECIPROCAL GRANT OF
2635 North First Street, Suite 209 IMMUNITY AGREEMENT
San Jose, CA 95134 USA CONTAINED ELSEWHERE IN
+1-408-433-2273 THIS STANDARD.
+1-408-433-9558 (Fax) IMPORTANT:
JEIDA (Japan Electronic Industry In order to receive the Grant of
Development Association) Immunity, the owner of this
Kikai Shinko Kaikan, 3-5-8, Shibakoen Standard must sign and return the
Minato-ku, Tokyo 105, JAPAN enclosed Registration Card to:
+81-3-3433-1923 PCMCIA
+81-3-3433-6350 (Fax) 2635 North First Street, Suite 209
San Jose, CA 95134 USA
The PC Card logo and PC Card are
trademarks of PCMCIA, registered in NEITHER PCMCIA NOR JEIDA
the United States. The PC Card logo MAKES ANY WARRANTY,
and design are trademarks of JEIDA, EXPRESS OR IMPLIED, WITH
registered in Japan. RESPECT TO THE STANDARD,
INCLUDING AS TO NON-
INFRINGEMENT,
MERCHANTABILITY OR FITNESS
FOR A PARTICULAR PURPOSE.
THIS STANDARD IS PROVIDED TO
YOU ÒAS IS.Ó
CONTENTS
1. Introduction ___________________________________________ 1
1.1 Purpose................................................................................................................................1
1.2 Scope....................................................................................................................................1
1.3 Related Documents .............................................................................................................1
2. Overview ______________________________________________ 3
2.1 Storing Data.........................................................................................................................3
2.2 Partitions..............................................................................................................................3
2.3 Files and File Systems..........................................................................................................3
2.4 Storage Media......................................................................................................................3
2.5 In Summary.........................................................................................................................4
3. Partitions ______________________________________________ 5
3.1 Card Information Structure (CIS) Partitioning ..................................................................6
3.1.1 Overview ......................................................................................................................................................................................6
3.1.2 Partition Operations.................................................................................................................................................................6
3.1.2.1 Creation..........................................................................................................................................................................6
3.1.2.2 Deletion ..........................................................................................................................................................................6
3.1.2.3 Extension .......................................................................................................................................................................7
3.1.2.4 Evaluation Order .......................................................................................................................................................7
3.1.3 Initial Program Load...............................................................................................................................................................7
3.1.4 Data Structures...........................................................................................................................................................................7
4. File Formats___________________________________________ 13
4.1 MS-DOS BPB/FAT Format ..............................................................................................13
4.1.1 Overview ....................................................................................................................................................................................1 3
4.1.2 Versions or Revisions ............................................................................................................................................................1 4
iv © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
© 1999 PCMCIA/JEIDA v
MEDIA STORAGE FORMATS SPECIFICATION
FIGURES
Figure 5-1: Erase Zones .................................................................................................................26
Figure 5-2: Read/Write Blocks......................................................................................................27
Figure 5-3: Erase Unit Layout.......................................................................................................28
Figure 5-4: Block Allocation Map .................................................................................................30
Figure 5-5: Virtual Block Map.......................................................................................................32
Figure 5-6: Page Mapping.............................................................................................................33
1. I N T R OD U C T ION
1.1 Purpose
This document describes how data is formatted on PC Cards used as storage devices to promote the
exchange of these cards among different host systems. These include memory cards using various
types of volatile and non-volatile devices and ATA disk drives, both silicon and rotating media.
Each of these storage technologies have unique characteristics which may benefit from different
storage techniques and handling. This has resulted in the development of different storage formats
and/or partitioning for PC Cards using these devices.
NOTE: The inclusion of a partition, file format, or media type information in this
document does not constitute an endorsement by PCMCIA or JEIDA.
PCMCIA and JEIDA are only acknowledging this information has been
used to record data on a PC Card and, in some cases, that PCMCIA/JEIDA
members have agreed that using the documented implementation may
reduce problems encountered when attempting to interchange data
between host systems.
1.2 Scope
This document is intended to provide enough information to allow software developers to use data
stored on PC Cards by other host systems using potentially different operating and file systems.
Unless required to understand the data structures used on the PC Card, algorithms for updating the
data on the PC Card are not specified, only the storage format.
© 1999 PCMCIA/JEIDA 1
MEDIA STORAGE FORMATS SPECIFICATION
2. O V E R V IE W
2.2 Partitions
Storage media may be divided into separately addressable areas known as partitions. Each partition
is addressed by a file system as if it were a separate storage device with its own directory and
allocation information.
To minimize the number of storage formats a file system needs to be able to recognize to avoid
erroneously assuming a partition or PC Card is unformatted, the Card Services Specification
provides two services which return partition information. They are GetFirstPartition and
GetNextPartition. A Card Services implementation determines partition information using the CIS
or by performing searches for file system specific data structures.
© 1999 PCMCIA/JEIDA 3
OVERVIEW
PC Card ATA drives are accessed in the same manner as traditional block devices requiring an
entire sector be read or written at one time. The actual storage media may be silicon or magnetic
oxide on a rotating disk.
2.5 In Summary
To access data on storage media requires a complete understanding of how the media is partitioned,
the file format used and whether a translation layer is used. Client device drivers first check the
Card Information Structure (CIS) to determine if a PC Card is partitioned. If the card is partitioned,
the tuples used to describe the partition also describe the storage format used on the media.
4 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
3 . PAR T IT ION S
PCMCIA/JEIDA recognize two methods for partitioning PC Cards. First, linear memory PC Cards
such as flash and S-RAM cards use tuples in the Card Information Structure (CIS) to describe how a
PC Card is partitioned. Second, PC Card ATA drives are partitioned using a Master Boot Record
with a partition table.
Each recognized partitioning method is described separately in the following sections. The following
information is provided about each recognized method:
Overview An overview of the partitioning method and where it is
used.
Partition Operations How partition operations are performed.
Initial Program Load How a host system boots using the partitioning method.
Data Structures The data structures used by the partitioning method.
All PC Cards used for data storage must provide partition information as described in this section.
PC Cards used for data storage that do not contain partition information described in this section
may be assumed to be unformatted.
© 1999 PCMCIA/JEIDA 5
PARTITIONS
3.1.1 Overview
The PC Card's CIS describes partitions using the following tuples:
Both tuples must be present. The Format Tuple describes where that partition is located on the
media and the Organization Tuple identifies the data storage format used within the partition. Data
storage within a partition is also affected by the following tuples, if they are present:
3.1.2.1 Creation
A partition is created by adding the tuples described above to a PC Card's Card Information
Structure (CIS). The ability to write to a PC Card's CIS is dependent on the card and potentially
installed device drivers. A PC Card may require that the entire CIS be erased and then re-written to
modify the CIS.
Some PC Cards use multiple tuple chains to describe physical characteristics of the card separately
from how the card is used. For example, a primary tuple chain in a PC Card's attribute memory
space might describe the physical characteristics of the card, such as the type and size of the
memory device used on the card. A secondary tuple chain, in the PC Card's common memory
space, might be used to describe the logical characteristics of the card, such as the partitioning. In
this manner, the PC Card might be manufactured with the physical information hard-coded into
read-only memory in attribute memory space and logical partitioning information would be added
by using writable memory in common memory space. (See the Metaformat Specification for more
information about how tuple chains are linked together within the CIS.)
3.1.2.2 Deletion
To delete a partition, all of the tuples describing the partition must be deleted from the Card
Information Structure (CIS). Depending on the PC Card, the CIS may have to be erased and then re-
written without the tuples that describe the partition.
6 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
3.1.2.3 Extension
Some PC Cards allow the Card Information Structure to be extended without erasing existing tuples.
These cards permit additional partitions to be defined by adding tuples to the end of the last tuple
chain on the PC Card.
© 1999 PCMCIA/JEIDA 7
PARTITIONS
3.2.1 Overview
PC Card ATA drives are partitioned using a Master Boot Record (MBR) with a Partition Table in the
first physical sector of the media.. Partition Table Entries describe the size, location and type of data
within a partition. A Partition Table Entry may also describe an Extended Partition which is further
divided into one or more partitions.
The MBR contains a word of 55AAH at offset 1FEH. The sector contains operating system
independent code to perform Initial Program Load on x86 architecture host systems. For system and
PC Card interoperability, all systems, including those that do not use the IPL code for booting, must
include such information when formatting the MBR. The MBR also contains a Partition Table with
four (4) Partition Table Entries at offset 1BEH. When booting from a device with an MBR on an x86
architecture system, code within the MBR evaluates the Partition Table for a partition marked as the
default boot partition. Only one partition may be marked as the default boot partition.
If the x86 bootstrap code locates a default boot partition in the MBR's Partition Table, the Partition
Boot Record (PBR), the first sector of the partition, is loaded into memory. If the word at offset 1FEH
of the PBR is 55AAH, control is passed to the next stage bootstrap loader in the PBR image in
memory.
During operating system initialization, MBRs on all fixed disk devices are evaluated by the file
system for partition definitions in reverse order starting with the entry at offset 1EEH. The host
system assigns unit designations (drive letters under MS-DOS), to each partition matching a type
supported by the file system.
3.2.2.1 Creation
A partition is created by setting the fields of a partition entry in the partition table of the Master
Boot Record (MBR) to describe the desired partition. A partitioning utility first reads the MBR into
host system memory. If the word at offset 1FEH of the MBR is not 55AAH, the device is not
formatted and the utility must create an initial MBR with an empty partition table before preceding.
If the word at offset 1FEH of the MBR is 55AAH, the partitioning utility searches the partition table
for an empty entry. An entry is considered empty if the NumSectors field is zero (0). If there are no
empty entries in the partition table, a partition cannot be created.
If there is an empty partition entry, the partitioning utility creates a new partition using contiguous
unallocated space on the media. The utility determines if there is any available space on the media
by subtracting the space allocated to other partitions from the total size of the media. The total size
of the media is determined in a host system dependent manner. For example, on x86 systems with
a PC-compatible ROM BIOS the Get Drive Parameters function (Int 13H Function 8) is typically
used.
If there is unallocated space on the media, the partitioning utility must also determine where the
space is located by comparing the Start and End of each allocated partition. How a partitioning
utility decides which space to use when multiple unallocated spaces are available is implementation
specific.
After a partition entry is created the partitioning utility needs to notify the host system of the
change to the MBR.
8 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
A partition table entry uses Cylinder, Head and Sector (CHS) addressing to describe the starting
and ending boundaries of a partition. Some PC Card ATA drives translate their physical CHS
information to logical values that are compliant with limits imposed by some host systems that are
unable to address cylinder, head or sector values that exceed system-specific limits. Once a partition
table entry has been created, all subsequent accesses to the media must use the same logical CHS
addressing.
The PC Card Standard requires that all partitions described in the partition table within the MBR
end on a logical cylinder boundary based on the logical CHS addressing in use when the first
partition was created. This allows a host system to validate the logical CHS addressing in use is
correct by confirming the maximum head and sector values used for media access are the same as
those used to indicate the ending head or sector of all partitions on the media.
3.2.2.2 Deletion
A partition is deleted by resetting all of the fields of a partition entry in the partition table of the
Master Boot Record to zero (0). After a partition entry is deleted the partitioning utility needs to
notify the host system of the change to the MBR.
3.2.2.3 Extension
Some partition types extend the partition table in a system-specific manner. For example, MS-DOS
defines a special partition type called the Extended MS-DOS partition. The space allocated to an
Extended MS-DOS partition is sub-divided into logical drives. The first sector of an Extended MS-
DOS Partition contains a partition table formatted in the same manner as the partition table in a
Master Boot Record (MBR). The extended partition table typically contains two entries, an MS-DOS
partition and another Extended MS-DOS partition entry.
The MS-DOS partition entry in an extended MS-DOS partition describes a logical drive. If an
Extended MS-DOS partition entry is also present in the partition table, another potential logical
drive may exist within the area described by the Extended MS-DOS partition entry. Extended MS-
DOS partition entries create a forward-linked list of logical drives within the Extended MS-DOS
partition in the MBR.
The one difference between partition entries in an MBR and partition entries in the partition table in
an Extended MS-DOS partition is the StartSector field of the partition entries. In the MBR this field is
relative to the beginning of the media. In an Extended MS-DOS partition this field is relative to the
beginning of the Extended MS-DOS partition described in the MBR.
© 1999 PCMCIA/JEIDA 9
PARTITIONS
physical fixed drive and it has an Extended MS-DOS partition, each logical drive described in the
chain of Extended MS-DOS partitions is added as a logical drive letter.
10 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
© 1999 PCMCIA/JEIDA 11
MEDIA STORAGE FORMATS SPECIFICATION
4 . F I L E F O R M AT S
To achieve backward compatibility and speed acceptance of PC Card technology, the formats used
by file systems for traditional storage devices are often used for PC Cards. This section describes the
data structures used by specific formats and how file operations using those structures are
performed. Each subsection provides the following information about a file format:
Overview An overview of the format and where it is used.
Versions or Revisions Variations of the file format in common use.
File Operations How common file operations are performed using the
defined data structures.
Initial Program Load How a host system boots using the file format.
Data Structures The data structures used by the file format.
4.1.1 Overview
In the MS-DOS environment, the native file system stores information in what is known as the
BPB/FAT format. Static RAM (SRAM) cards and PC Card ATA drives commonly use this format on
x86 architecture systems. Flash memory cards may also use this format if they are read-only or are
accessed using a Flash Translation Layer (FTL).
BPB/FAT media is accessed in blocks known as sectors. The number of bytes in a sector is described
in the BIOS Parameter Block (BPB) BytesPerSector field. The total number of sectors on the media is
described by the BPB 0 field if there are less than 65,536 sectors. If there are more than 65,535
sectors, the TotalSectors field is zero (0) and the number of sectors on the media is described by the
HugeSectors field.
BPB/FAT media may have hidden sectors. Hidden sectors are usually associated with partitioned
media. The BPB HiddenSectors field describes the number of hidden sectors on the media.
BPB/FAT media have one or more reserved sectors. The BPB ReservedSectors field describes the
number of reserved sectors on the media. The first reserved sector is known as the Boot Sector. This
sector contains the BIOS Parameter Block (BPB) describing the size and format of the media.
After any hidden and reserved sectors, BPB/FAT media have one or more File Allocation Tables
(FATs). If there is more than one FAT, the additional copies are maintained to allow data recovery
in case the first FAT is damaged. Most BPB/FAT media is formatted with two (2) FATs. The
number of FATs is described by the BPB NumFATs field.
The FAT tracks the allocation of the media's data space. Space on BPB/FAT media is allocated in
units of one or more contiguous sectors called clusters. If a cluster has more than one sector, the
number of sectors in the cluster must be a power of two (for example, two, four, eight, etceteras).
The BPB SectorsPerCluster field describes the number of sectors per cluster.
FAT entries may be 12 or 16-bits depending on the number of clusters on the media. Media with
more than 4085 clusters use 16-bit entries. Media with 4085 or less clusters use 12-bit entries. Each
entry in the FAT represents the allocation status of a cluster. The first two entries are reserved for
FAT ID information. The first data area tracked by the FAT is cluster number two (2).
© 1999 PCMCIA/JEIDA 13
FILE FORMATS
A FAT entry has the following meanings. The digit in parentheses represents the upper four bits
associated with 16-bit FAT entries.
Value Meaning
(0)000H Available or unallocated cluster
(0)001H Reserved, do not use this value
(0)002H - (F)FF6H Next cluster in file or directory
(F)FF7H Bad cluster, do not store data in this cluster
(F)FF8H - (F)FFFH Last cluster of file or directory
The number of sectors used to store each FAT is described in the BPB NumFATSectors field. The
next area on the media after the FAT(s) is the Root Directory. The Root Directory is an array of
Directory Entries. The number of directory entries in the Root Directory is described by the BPB
RootDirEntries field. The Directory Entry StartCluster field describes the first cluster used to store
data for the file or directory identified by the entry.
The space on the media immediately following the Root Directory is used for file and subdirectory
data storage. The Directory Entry Attributes field identify an entry as a subdirectory of a file.
Subdirectories are special file entries containing additional directory entries for files and further
subdirectories in the data area of the media.
14 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
other power of two. The ReservedSectors field must be at least one (1). The NumFATs field must be
one (1) or two (2).
© 1999 PCMCIA/JEIDA 15
FILE FORMATS
field determines the first cluster. The value in that entry of the FAT is the next cluster in the chain.
When a FAT entry is FF8H to FFFH, the end of the cluster chain has been reached. Attempts to read
past the end of the cluster chain are failed.
If an operation continues beyond the end of a cluster, the location of the next cluster is determined
from the contents of the current FAT entry. Write operations that continue past the end of the cluster
chain need to extend the chain.
A cluster chain is extended by overwriting the current FAT entry with the number of an
unallocated cluster. The unallocated cluster entry in the FAT is then marked as the end of the chain.
Attempts to extend cluster chains on full media are failed.
When a directory entry is extended, the FileSize field of the entry is increased. The FileSize field
represents the actual size of the file or directory, in bytes, and may be less than the space allocated.
This is due to the fact the file or directory may not fill the last cluster allocated.
16 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
© 1999 PCMCIA/JEIDA 17
FILE FORMATS
18 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
4.2.1 Overview
Define a partition type for storing files formatted in a PCMCIA/JEIDA-prescribed manner within
contiguous sections of PC Card memory. This Linear File Store (LFS) uses a well-defined header
record to allow directory functions and file access to be performed across a wide variety of operating
environments and host platforms.
Partitions on PC Cards are defined using the Data Recording Format Tuples in Layer 2 of
Metaformat Specification. A memory-like format tuple is used to describe the PC Card StandardÕs
LFS partition. (See the Metaformat Specification for more information about format tuples.)
Byte 7 6 5 4 3 2 1 0
The above tuple definition describes a partition which is formatted as a memory-like region with no
error detection and no requirement for direct mapping into a specific area of host system address
space. For the example an election has been made to shorten the tuple by omitting optional fields
which are not used.
The data organization of the PC Card StandardÕs LFS partition is defined by an Organization Tuple.
(See the Metaformat Specification for more information about data organization tuples.)
Byte 7 6 5 4 3 2 1 0
Within the partition, each file is preceded by a PC Card Standard-defined entry record. This
structure provides enough information for a simple bootstrap loader to select an appropriate file. If a
specific environment requires information beyond that defined by the PC Card Standard, the
organization responsible for that environment defines any additional fields required immediately
after the PC Card Standard-defined fields creating an extended header record.
For XIP files, a header record is also defined to provide information about the length of the root
segment of the file, whether the file uses paging and the entry point for execution within the file.
Because the header record is part of the file, the data in the record is available during file execution.
© 1999 PCMCIA/JEIDA 19
FILE FORMATS
The PC Card Standard-defined entry record is located at the base of the window that maps the root
section into host system address space.
Note:
XIP definition to be developed by XIP Working Group.
Files are stored consecutively within the partition using a forward-linked list managed by a field
which points to the next header record. If the file is the last in a partition, the pointer to the next
header record is set to all ones (-1 or FFFFFFFFH). This value allows files stored in partitions using
flash memory devices to be extended if sufficient space remains within the partition.
Each entry in the PC Card StandardÕs LFS Partition has the following structure:
typedef struct {
DWORD NextEntry;
DWORD EntrySize;
DWORD EntryType;
DWORD OffsetToHeader;
DWORD Flags;
DWORD OffsetToString;
DWORD UniqueID;
BYTE Reserved[4];
BYTE EntryInfo[];
} ENTRY;
20 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
Member Description
NextEntry This field points to the next entry within the partition, relative to the start of this entry on the
PC Card. The actual location of the next entry is determined by adding the value in this field
to the offset of this field on the PC Card. If all of the bits in this field match Bit D0 of the
Flags field, this is the last entry in the partition.
EntrySize This field contains the actual size of the entry, i.e. the number of bytes in this instance of the
ENTRY structure. EntrySize is less than the NextEntry when padding is added to align the
next entry on a boundary.
EntryType This field contains a PCMCIA assigned value that defines the interpretation of the data in
the EntryInfo byte array. EntryType values are assigned by PCMCIA. The definition of any
header structure within the EntryInfo area for a particular EntryType value must be
provided at the time the EntryType is assigned. If all of the bits in this field match Bit D0 of
the Flags field, this entry is not defined. For this reason, the EntryType values zero and
minus one are reserved.
OffsetToHeader This field contains the offset from the beginning of the ENTRY structure where additional
EntryType specific information is stored. The actual location of the specific information is
determined by adding the value in this field to the offset of the NextEntry field on the PC
Card. If this field is zero, there is no specific information and this field is ignored.
Flags This field is bit-mapped. The bytes of this field are stored in little-endian order. Bit D1
indicates the current state of the entry. If Bit D1 matches D0, this entry is active. If Bit D1
does not match Bit D0, this entry has been deleted. All of the remaining bits are reserved
and must be set to the value of Bit D0. Bit D0 is used in this manner to accommodate the
unique erase and write characteristics of some types of storage media such as flash
memory devices. Bit D0 is typically maintained in the natural erase state of the media.
OffsetToString The field contains the offset from the beginning of the ENTRY structure where an ASCIIZ
string describing the entry is stored. The actual location of the string is determined by
adding the value in this field to the offset of the NextEntry field on the PC Card. If this field is
zero, there is no ASCIIZ string and this field is ignored.
UniqueID This field contains a value that is unique for each file stored in the partition. It is intended to
be used to uniquely identify a file even if it is relocated within the partition. Formatting
software should attempt to prevent the reuse of UniqueID values previously assigned to
deleted entries. How this is accomplished is implementation specific.
Reserved These bytes are reserved for future use. They shall be set to match the value of bit D0 of
the Flags field.
EntryInfo The data for this entry.
© 1999 PCMCIA/JEIDA 21
MEDIA STORAGE FORMATS SPECIFICATION
5 . T R A N S L AT I O N L AY E R S
When sector remapping is performed by a translation layer, two storage formats are used. From the
host system perspective, the same block storage format used for other media is being recorded. With
the translation layer in place, the host system believes it is using traditionally formatted media.
However, the translation layer requires sector mapping information to be stored on the media and
what the host feels are contiguous sectors are actually placed on the media out of sequence. To allow
another system to recover the data stored on the media requires an understanding of how the
translation layer remaps sectors and the native storage format intended by the original file system.
Any file format used for block data storage may be used on top of a Flash Translation Layer (FTL).
To boot from a Flash Translation Layer (FTL) partition requires the FTL to translate host requests for
virtual blocks.
© 1999 PCMCIA/JEIDA 23
TRANSLATION LAYERS
5.1.2 Overview
Traditional block storage devices read and write data in small blocks sized in power-of-two
multiples beginning at 256 (i.e. 256, 512, 1024, 2048, etc. byte blocks). File systems and the data
structures they use are optimized for read/write units of this size. While flash media storage devices
may be able to perform read and write operations on similar size blocks, they usually require a
data area be erased before it may be written.
Adding an erase operation immediately before a write would appear to solve the problem and for
some flash devices, this is all that is required. Unfortunately, for many flash devices, erase
operations must often be applied to a contiguous area of the media known as an Erase Zone that is
larger (in some cases, much larger) than traditional storage devices use for read and write access.
This can make flash devices difficult to use with traditional file systems unprepared to relocate
adjacent data areas to prepare for erase operations.
Two approaches have been taken to deal with the unique characteristics of flash storage devices: the
development of new file systems customized for flash device characteristics and the introduction of a
translation layer between the file system and the storage media to mask any differences between
flash storage devices and traditional block storage devices. This section describes the later method,
known as a Flash Translation Layer (FTL).
24 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
erased state. However, single bits within a byte may be transitioned from the erased state to the
non-erased state without an erase operation. FTLs use this ability to modify updatable fields in
control structures. See the description of the ReversePolarityFlash bit of the Flags field in the Erase
Unit Header.
© 1999 PCMCIA/JEIDA 25
TRANSLATION LAYERS
Even Odd
Addresses Addresses
Flash IC Flash IC
Erase Zone
Flash IC Flash IC
Erase Zone
Flash IC Flash IC
When a flash IC does not require the entire device to be erased as a single unit, a single flash IC conta
multiple Erase Zones. When eight-bit flash devices are used, an Erase Zone spans two flash ICs.
26 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
Erase Unit
An Erase Unit is evenly divided into read/write blocks for allocation purposes. Each of these
read/write blocks is the same size as the virtual blocks presented to the higher level software
layers by the FTL.
Within each Erase Unit is an Erase Unit Header (EUH). The EUH includes specific information
about the Erase Unit and global information about the format of the FTL partition. Each Erase Unit
also contains allocation information for all of the Read/Write Blocks within the unit.
Some flash devices have a small number of bytes of storage adjacent to each Read/Write Block
which are not addressed through the linear address space of the media. Erase Units with these
"hidden" areas may place block allocation information for a Read/Write Block in the hidden area
adjacent to the block. If the Erase Unit does not have hidden areas or an FTL partition is not
formatted to use the hidden areas, block allocation information is stored in an array known as the
Block Allocation Map or BAM in the Erase Unit's linear address space. The Flags field of the EUH
indicates whether block allocation information is stored in hidden areas or a BAM.
© 1999 PCMCIA/JEIDA 27
TRANSLATION LAYERS
For data integrity purposes, two copies of the block allocation information may be stored in the
Erase Unit. The Flags field of the EUH indicates the number of copies of the block allocation
information that are present on the media. When BAMs are used to store block allocation
information, the second copy is stored in a separate BAM immediately following the first BAM in
the Erase Unit.
Optional Checksums, CRCs or ECCs may also be present for each Read/Write Block. If present,
these codes are stored immediately following the block allocation information, in either the BAM or
the media's hidden areas as indicated by the Flags field of the EUH. The length of these codes
varies depending on the type of code being used. See Figure 5-3: Erase Unit Layout.
Erase Unit
Block Allocation
In Hidden Areas
Information
Erase Unit
Erase Units with hidden areas may place Block Allocation Information in those areas rather than in the
linear address space of the media. Optional Checksums, CRCs or ECCs are not shown. If present, these
codes are stored immediately following the Block Allocation Information in either the Block Allocation Map
(BAM) or the media's hidden areas.
5.1.2.5 Block Allocation Information and the Block Allocation Map (BAM)
Each Erase Unit on the media contains allocation information for the Read/Write Blocks within the
unit. For each Read/Write Block, a four-byte value tracks the block's current state. At any point in
time, a Read/Write Block in an Erase Unit is free, deleted, bad, reserved for bad area management,
or allocated. For each Read/Write Block, a four (4) byte value tracks the block's current state. The
following table identifies the corresponding block allocation entry values for the state of a
Read/Write Block:
28 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
When allocated, Read/Write Blocks are used to store four types of data: FTL control structures,
Virtual Block data for higher level software layers, Virtual Block Map Pages and Replacement
Pages. When a Read/Write Block is allocated to an FTL control structure, the block's allocation
information entry is set to the following:
00000030H Control Read/Write Block contains one or more FTL control structures: an
Erase Unit Header, a Block Allocation Map (BAM), or an array of
Checksums, CRCs or ECCs.
The block allocation entries for Virtual Block data, Virtual Block Map Pages and Replacement Pages
have two parts. The least significant eight (8) bits indicate whether the Read/Write Block contains
Virtual Block data, a Virtual Block Map Page or a Replacement Page as indicated by the following
table:
xxxxxx40H Data or Map Page Read/Write Block contains Virtual Block data or a Virtual Map Page.
xxxxxx60H Replacement Read/Write Block contains a Replacement Page for a Virtual Map Page.
Page
The most significant twenty-four (24) bits of the block allocation entry for a Read/Write Block
containing Virtual Block data, a Virtual Block Map Page or a Replacement Page are the most
significant bits of the virtual address of the data. The least significant eight (8) bits of the virtual
address for these entries are assumed to be zero (0). To determine if the block is Data, Map, or
Replacement page, compare the least significant 8 bits to 40H and/or 60H.
The FTL assigns a virtual address to each Virtual Block in the contiguous array of blocks presented
to higher level software layers. The virtual address is computed by multiplying a Virtual Block's
sequence number (zero to n - 1) by the size of a Virtual Block. The first Virtual Block is always at
virtual address zero (0) as indicated by a block allocation entry of 00000040H. If the Virtual Block
size is 512 bytes, the second block's virtual address is 00000200 H and its block allocation entry is
00000240H. The third block's virtual address is 00000400H and its block allocation entry is
00000440H. See Figure 5-4: Block Allocation Map.
The Virtual Block Map (VBM) is built from the virtual addresses of Read/Write Blocks used to store
Virtual Block data. Read/Write Blocks containing Virtual Block data use positive virtual addresses.
If the VBM is maintained on the media, the Read/Write Blocks containing VBM Pages or
Replacements Pages use negative virtual addresses. The use of negative addresses is discussed
further in the sections that follow.
© 1999 PCMCIA/JEIDA 29
TRANSLATION LAYERS
Allocation information is maintained in one of two ways. First, allocation information for all of the
Read/Write Blocks in the Erase Unit may be stored together in an array in the unit known as the
Block Allocation Map (BAM). Second, allocation information may be stored in hidden areas next to
or related to the Read/Write Block to which it refers. The Flags field in the Erase Unit Header
describes how allocation information is stored on the media.
NOTE: For reverse polarity flash the block allocation information stored on the
media is inverted (for example, BAI entry 00000070H is FFFFFF8FH, etc.
when a reverse polarity flash device is used). See the ReversePolarityFlash
bit of the Flags field in the Erase Unit Header.
30 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
For example, if FormattedSize is 12 megabytes and BlockSize is 512 bytes, the media contains 24K
blocks. Each block has a four (4) byte entry in the VBM requiring 96 KBytes of the storage media to
store the VBM. Dividing the size of the VBM by the block size indicates NumVMPages is 192. Each
page of the VBM, in the example, is capable of recording the logical addresses used for 128 virtual
blocks or 64 KBytes of data storage.
Space is always reserved on the media to store a VBM large enough to track the allocation of all the
Virtual Blocks presented to higher level software layers by the FTL. However, when the media is
formatted, the FTL may indicate only a portion of the VBM is maintained on the media. The
FirstVMAddress field of the Erase Unit Header identifies the first virtual address on the media that
has an entry in the VBM maintained by the FTL.
If the FirstVMAddress is reset to zero (0), the FTL must maintain all of the VBM entries on the
media. If the FirstVMAddress exceeds the FormattedSize, none of the VBM entries are maintained
on the media by the FTL. If the FirstVMAddress is greater than zero (0), but less than the
FormattedSize, the FTL maintains VBM entries on the media for all virtual addresses greater than
or equal to the FirstVMAddress. The system should determine if it has adequate resources to mount
the media prior to mounting. All VBM entries stored on the media are in little-endian order.
When all or a portion of the VBM is not maintained on the media, the FTL must map requests for
Virtual Blocks in some other way. An FTL might create and maintain a VBM in host system RAM.
An FTL could also scan the media's block allocation information when each virtual block is
requested. The choice to maintain the VBM on the media is typically based on the availability of
system RAM and desired performance. Maintaining virtual to logical mapping information in
system RAM relieves the FTL of the overhead of updating the VBM on the media for frequently
updated Virtual Blocks.
If a VBM entry is all ones (FFFFFFFFH), the Virtual Block does not exist on the media. When asked
to read data from this Virtual Block, the FTL may return any combination of bytes, such as binary
0's, as long as this combination is consistently returned until the Virtual Block is written.
There are two possibilities if a VBM entry is all zeroes (00000000H). First, the logical address of the
Virtual Block is described on a Replacement Page. In this case, the FTL uses the logical address from
the Replacement Page to locate the block. Second, if there is no Replacement Page, the block does
not exist on the media. In the later case, when asked to read data from this Virtual Block, the FTL
may return any combination of bytes, such as binary 0's, as long as this combination is consistently
returned until the Virtual Block is written.
NOTE: For reverse polarity flash, the VBM entries stored on the media are inverted
(for example, VBM entry FFFFFFFFH is 00000000H, etc. when a reverse
polarity flash device is used). See the ReversePolarityFlash bit of the Flags
field in the Erase Unit Header.
© 1999 PCMCIA/JEIDA 31
TRANSLATION LAYERS
The 128th entry of the VBM contains the value A0600h. This
indicates the data corresponding to the 128th Virtual Block is
stored at offset A0600h of the media when the Erase Units are
accessed in logical order. This example assumes each Erase
Unit is 64 Kbytes, so this logical address further breaks down
to offset 0600h of LogicalEUN 10.
Erase
Unit Free Blocks, The entry for Virtual Block 130 has been updated and is stored
Superseded Blocks, in a Replacement Page. To locate the data for this block, the
Virtual Blocks, FTL must refer to the corresponding entry (in this case, the
Virtual Block Map Pages, third entry) on the Replacement Page for this Virtual Block Map
and Replacement Pages Page. If the Replacement Page entry for this block is also 0,
then the data no longer exists.
Logical Address of Virtual Block
128 000A0600 Offset 0600h of Logical EUN 10
129 000C0800 Offset 0800h of Logical EUN 12
VBM Index
130 00000000 Use Replacement Page Entry
131 0000CC00 Offset CC00h of Logical EUN 0
5.1.2.7 Virtual Page Map - Locating the Pages of the Virtual Block Map
When the Virtual Block Map (VBM) is maintained on the media, the FTL must track the storage of
the Pages of the VBM. In the same manner that VBM entries indicate the logical address of a Virtual
Block, the entries of the Virtual Page Map (VPM) indicate the logical address on the media where
the Pages of the VBM are stored. Unlike the VBM, the VPM is never stored on the media. Where
the FTL stores the VPM is implementation dependent. See Figure 5-6: Page Mapping.
The block allocation information entries describing Virtual Block Map Pages use negative values to
distinguish them from the Read/Write Blocks used to store Virtual Block data which use positive
values. In the example used in the previous section, the VBM requires 192 Pages. If the entire VBM
is maintained on the media (see the previous section), each page of the VBM requires a Read/Write
Block to store the VBM entries found on the page.
Virtual Block Map Pages are numbered using negative values, therefore their virtual addresses are
negative. As with Virtual Blocks, the virtual address stored as the block allocation information for
these pages is computed by multiplying the page number by the size of a Virtual Block (which is
the same size as the Read/Write Block used to store the page's data). Returning to the previous
example, the first page of the VBM (used to store the logical addresses of the first 128 Virtual Blocks)
is number -192. The second page of the VBM is number -191 and the last page of the VBM is -1.
With a block size of 512 bytes, the first VBM Page in the example is virtual address FFFE8000H. The
virtual address of the second VBM Page is FFFE8200H, and the last VBM Page would be virtual
address FFFFFE00H. To locate an address within a VBM Page, take the sector requested modulo
128. Multiply this result but the Virtual Block entry width and this yields the correct offset within
the VBM Page.
32 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
0
VBM 1
1
... ...
127
.
. VBM 2 0
.
1
.
... ... .
127 .
.
.
.
VBM n-1
0
127
© 1999 PCMCIA/JEIDA 33
TRANSLATION LAYERS
may be performed when the media is inserted in the host system or when a VBM entry of zero (0) is
encountered. Replacement Pages may NOT be replaced.
The block allocation information entry for a Replacement Page uses the same virtual address as the
original VBM Page. The FTL distinguishes between the two using the least significant eight (8) bits
of the block allocation information. VBM Pages have a value of 40H in the these bits while
Replacement Pages have a value of 60H.
34 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
© 1999 PCMCIA/JEIDA 35
TRANSLATION LAYERS
36 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
64 FTLRevisionTuple 114 This optional field contains an FTL Revision Tuple. The contents of
this field are the same for all Erase Units.
TPL_CODE vendor unique (80H)
TPL_LINK 10
FTL-VER 'FTL VER x.x' where x.x is the ASCII
equivalent version number of the FTL specification that the
software is compliant to. For example, FTL version 1.1 would
have entries 46H, 54H, 4CH, 20H, 56H, 45H, 52H, 31H, 2EH, 31H.
5.1.3.2 Flags
The bit-mapped Flags field of the Erase Unit Header describes how checksum and block allocation
information is stored on the media and identifies the media's erase state.
Bit Description
0 HiddenAreaFlag - This flag indicates whether checksum and allocation information are stored in the Block
Allocation Map (BAM) or the media has hidden, alternate storage areas for such information that do not appear in
the media's normal address space.
If this bit is set to one (1), checksum and/or allocation information are stored in hidden areas outside of the media's
normal address space.
If this bit is reset to zero (0), any checksum and/or allocation information are stored in the media's normal address
space. The Block Allocation Map (BAM), an array of all of the block allocation information, precedes an array of
the checksum information.
1 ReversePolarityFlash - This flag indicates whether the media's flash memory devices erase to all ones or to all
zeroes.
If this bit is set to one (1), the flash memory devices erase to all zeroes (0) and may be written to one. When this
bit is set, all block allocation information, Virtual Map entries and LogicalEUNs must be inverted before they are
written to the media and after they are read from the media.
If this bit is reset to zero (0), the flash memory devices erase to all ones (1) and may be written to zero. When this
bit is reset, all block allocation information, Virtual Map entries and LogicalEUNs are read and written without
inversion.
2 DoubleBAI - This flag indicates whether there are one or two copies of the block allocation information stored on
the media.
If this bit is set to one (1), two copies of the block allocation information are present on the media. If this
information is stored in BAMs, there are two complete BAMs on the media. In this case, the first BAM begins at
the location specified by the BAMOffset field and the second BAM begins immediately after the first. If the block
allocation information in stored in hidden areas, as indicated by the HiddenAreaFlag, the second entry for a
Read/Write Block follows the first. Both copies of the block allocation information precede any Checksum, CRC
or ECC codes.
If this bit is reset to zero (0), only one copy of the block allocation information is stored on the media.
3 .. 7 Reserved for future use. All of these bits must be reset to zero (0).
Byte D7 D6 D5 D4 D3 D2 D1 D0
0 Tuple Code CISTPL_ORG, 46H
1 Tuple Link Link to next tuple (at least 07H)
2 TPLORG_TYPE TPLORGTYPE_FS, 00H
3 .. 9 TPLORG_DESC "FTL100\0" Null terminated string identifying FTL partition
© 1999 PCMCIA/JEIDA 37
TRANSLATION LAYERS
If the entire storage media is used by an FTL, the CIS is not required to contain partition
information. In this case, an FTL partition is recognized if an FTL Erase Unit Header (see 5.1.3 Data
Structures, above) is found in the first megabyte of the storage media and the information in the
Unit Header is valid. The procedure for recognizing and validating an FTL Erase Unit Header is
described in the following paragraphs.
The first step in recognizing an FTL partition is confirming the presence of the FTL Data
Organization Tuple described above at offset five (5) of the Erase Unit Header. Since Erase Unit
Headers always begin at offset zero (0) of an Erase Unit and an Erase Unit is always a multiple of a
flash device's erase zone size, the search is limited to the first fifteen bytes of each flash erase zone
in the first megabyte of the storage media. If the flash erase zone size is not known, the search for
an Erase Unit Header is made in four (4) KByte increments.
If the FTL Data Organization Tuple is not found within the first megabyte of the partition area, the
media is not an FTL data store. If the tuple is found, the rest of the Erase Unit Header must be
validated. All Erase Units should have identical EUHs with the exception of the Logical EUN and
reserved fields. One level of validation would be to check to see that all EUHs are the same. Further
validation could include verifying that the FormattedSize is a multiple of the BlockSize, that the
BlockSize is smaller than the EraseUnitSize, and that there is at least a 30H ID at the address that the
BAMOffset points to. The validation process may also be used to build a dynamic map of the logical
to physical translation performed by the FTL.
The FTL then reads every Erase Unit Header on the media, starting with the unit described by the
FirstPhysicalEUN field. If not found at offset zero, the FTL looks for the Erase Unit Header at the
location specified by the AltEUHOffset field of other Erase Units. If an Erase Unit Header is not
found at either location, the Erase Unit is considered an unformatted Transfer Unit. If two units are
found with the same value in the LogicalEUN field, either of the units may be assumed to be a
Transfer Unit. After all Erase Unit Headers have been read, the number of units with non-negative
and distinct LogicalEUN fields must equal the NumEraseUnits field less the NumTransferUnits
field.
The number of Virtual Blocks used to store the Virtual Block Map (VBM) on the media is indicated
by the NumVMPages field in the Erase Unit Header. During the block allocation scan, the FTL
locates VBM Pages and Replacement Pages. The number of VBM Pages located must match the
value in the NumVMPages field. If a VBM Page is missing and a Replacement Page exists, the
Replacement Page is used in place of the original VBM Page. If a VBM Page is missing and a
Replacement Page does not exist, implementation dependent recovery operations are required. If
duplicate VBM Pages are found, all but one is ignored.
The assignment of Replacement Pages is implementation specific. A Replacement Page is indicated
by allocation information having the same virtual address as an original VBM Page with the least
significant eight (8) bits set to 60H.
38 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
FirstVMAddress
NumVMPages
Flags
SerialNumber
AltEUHOffset
BAMOffset
For each Erase Unit on the media: Erase the unit and write out an Erase Unit Header with unit
specific data. Unit specific data includes the following field:
LogicalEUN
LogicalEUNs range from zero (0) to one less than the NumEraseUnits field less the
NumTransferUnits field. The order LogicalEUNs are assigned is not significant as long as each is
unique in the above range. The LogicalEUN of Transfer Units is left in the media's erased state (for
most flash devices this is all ones or FFFFH). See the ReversePolarityFlash bit of the Flags field.
For each Read/Write Block used to store Erase Unit Headers and the Block Allocation Map (if used)
set the allocation information to 30H to indicate the blocks contain formatting data.
Once the FTL has prepared the media, any block-oriented file system may store its data formats on
the media using the FTL to translate Virtual Block requests to the appropriate locations on the
media.
5.1.6.1 Read
Higher level software layers request a Virtual Block from the FTL. The FTL uses the number of the
Virtual Block as an index into the Virtual Block Map (VBM). The entry in the VBM is the logical
address where the Virtual Block data is stored. The FTL converts the logical address to a physical
address. The conversion from logical to physical is based on the relationship of the LogicalEUN
containing the logical address to the physical Erase Unit used for the logical Erase Unit. The FTL
transfers the data block at this location into the buffer provided by the host file system.
If an entry in the VBM is all ones (FFFFFFFFH), the block does not exist on the media. The FTL
may return any combination of bytes, such as binary 0's, as long as this combination is consistently
returned until the Virtual Block is written.
There are two possibilities if a VBM entry is all zeroes (00000000H). First, the logical address of the
Virtual Block is described on a Replacement Page. In this case, the FTL uses the logical address from
the Replacement Page to locate the block. Second, if there is no Replacement Page or the entry on
the Replacement Page is all zeroes or Fs (00000000 H or FFFFFFFFH), the block does not exist on the
media. In the later case, when asked to read data from this Virtual Block, the FTL may return any
combination of bytes, such as binary 0's, as long as this combination is consistently returned until
the Virtual Block is written.
Some mechanism should be employed to ensure proper handling if a power cycle is received while
accessing the flash device.
5.1.6.2 Write
When writing Virtual Block data to the media, the FTL must first locate a free Read/Write Block. If
a free block is not available, one is created using the Unit Recovery Procedure described below.
© 1999 PCMCIA/JEIDA 39
TRANSLATION LAYERS
Once a free block is located, block allocation information for the area is marked to indicate a write
operation is beginning by resetting the least significant bit (FFFFFFFEH). Once the write has been
successfully completed, the block allocation information in the Erase Unit is updated to reflect the
Virtual Block's virtual address.
Next, the Virtual Block Map is updated to reflect the new area assigned to the Virtual Block. Finally,
if the new block replaces an existing block, the Read/Write Block used to store the superseded data
is marked as deleted by resetting its block allocation information to zero (00000000H).
If the write process is interrupted at any point, the FTL is able to recover with minimal effort. If the
interruption occurs before the data write completes, the block allocation information (FFFFFFFEH)
indicates the block shall be treated as deleted and normal activity will recover the space when
required.
If an interruption occurs after the block allocation information is updated, but before the VBM is
updated, both Read/Write Blocks have the same block allocation information. This can also occur if
the update of the VBM entry completes, but the superseded Read/Write Block's allocation
information is not marked as deleted. In either case, the FTL selects the block pointed to by the
VBM and treats the other block as superseded. The system is allowed to use up to one (1)
Replacement Page during writes.
Some mechanism should be employed to ensure proper handling if a power cycle is received while
accessing the flash device.
40 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
© 1999 PCMCIA/JEIDA 41
MEDIA STORAGE FORMATS SPECIFICATION
6 . ST OR AGE DE V IC E S
PC Cards use a number of storage technologies with various read, write, erase and access
characteristics. The relative performance of a technology is often affected by the data storage format
used to record information on a PC Card. The characteristics of some technologies may dictate a
particular access method or may prohibit or severely limit the ability to use a particular file format.
© 1999 PCMCIA/JEIDA 43
MEDIA STORAGE FORMATS SPECIFICATION
© 1999 PCMCIA/JEIDA 45
P C C A R D S TA N D A R D
Volume 7
Media Storage Formats Specification
PCMCIA
JEIDA
©1999, PCMCIA/JEIDA PCMCIA HAS BEEN NOTIFIED BY
All rights reserved. CERTAIN THIRD PARTIES THAT
THE IMPLEMENTATION OF THE
No part of this publication may be STANDARD WILL REQUIRE A
reproduced, stored in a retrieval LICENSE FROM THOSE THIRD
system, or transmitted, in any form or PARTIES TO AVOID
by any means, mechanical, INFRINGEMENT OF THEIR
electronic, photocopying, recording RIGHTS. PCMCIA HAS OBTAINED
or otherwise, without prior written FROM SOME, BUT NOT ALL, OF
permission of PCMCIA and JEIDA. THOSE PARTIES A GRANT OF
Printed in the United States of IMMUNITY THAT PCMCIA WILL
America. EXTEND TO YOU, CONTINGENT
PCMCIA (Personal Computer UPON YOUR ENTERING INTO
Memory Card International AND DELIVERING TO PCMCIA
Association) THE RECIPROCAL GRANT OF
2635 North First Street, Suite 209 IMMUNITY AGREEMENT
San Jose, CA 95134 USA CONTAINED ELSEWHERE IN
+1-408-433-2273 THIS STANDARD.
+1-408-433-9558 (Fax) IMPORTANT:
JEIDA (Japan Electronic Industry In order to receive the Grant of
Development Association) Immunity, the owner of this
Kikai Shinko Kaikan, 3-5-8, Shibakoen Standard must sign and return the
Minato-ku, Tokyo 105, JAPAN enclosed Registration Card to:
+81-3-3433-1923 PCMCIA
+81-3-3433-6350 (Fax) 2635 North First Street, Suite 209
San Jose, CA 95134 USA
The PC Card logo and PC Card are
trademarks of PCMCIA, registered in NEITHER PCMCIA NOR JEIDA
the United States. The PC Card logo MAKES ANY WARRANTY,
and design are trademarks of JEIDA, EXPRESS OR IMPLIED, WITH
registered in Japan. RESPECT TO THE STANDARD,
INCLUDING AS TO NON-
INFRINGEMENT,
MERCHANTABILITY OR FITNESS
FOR A PARTICULAR PURPOSE.
THIS STANDARD IS PROVIDED TO
YOU ÒAS IS.Ó
CONTENTS
1. Introduction ___________________________________________ 1
1.1 Purpose................................................................................................................................1
1.2 Scope....................................................................................................................................1
1.3 Related Documents .............................................................................................................1
2. Overview ______________________________________________ 3
2.1 Storing Data.........................................................................................................................3
2.2 Partitions..............................................................................................................................3
2.3 Files and File Systems..........................................................................................................3
2.4 Storage Media......................................................................................................................3
2.5 In Summary.........................................................................................................................4
3. Partitions ______________________________________________ 5
3.1 Card Information Structure (CIS) Partitioning ..................................................................6
3.1.1 Overview ......................................................................................................................................................................................6
3.1.2 Partition Operations.................................................................................................................................................................6
3.1.2.1 Creation..........................................................................................................................................................................6
3.1.2.2 Deletion ..........................................................................................................................................................................6
3.1.2.3 Extension .......................................................................................................................................................................7
3.1.2.4 Evaluation Order .......................................................................................................................................................7
3.1.3 Initial Program Load...............................................................................................................................................................7
3.1.4 Data Structures...........................................................................................................................................................................7
4. File Formats___________________________________________ 13
4.1 MS-DOS BPB/FAT Format ..............................................................................................13
4.1.1 Overview ....................................................................................................................................................................................1 3
4.1.2 Versions or Revisions ............................................................................................................................................................1 4
iv © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
© 1999 PCMCIA/JEIDA v
MEDIA STORAGE FORMATS SPECIFICATION
FIGURES
Figure 5-1: Erase Zones .................................................................................................................26
Figure 5-2: Read/Write Blocks......................................................................................................27
Figure 5-3: Erase Unit Layout.......................................................................................................28
Figure 5-4: Block Allocation Map .................................................................................................30
Figure 5-5: Virtual Block Map.......................................................................................................32
Figure 5-6: Page Mapping.............................................................................................................33
1. I N T R OD U C T ION
1.1 Purpose
This document describes how data is formatted on PC Cards used as storage devices to promote the
exchange of these cards among different host systems. These include memory cards using various
types of volatile and non-volatile devices and ATA disk drives, both silicon and rotating media.
Each of these storage technologies have unique characteristics which may benefit from different
storage techniques and handling. This has resulted in the development of different storage formats
and/or partitioning for PC Cards using these devices.
NOTE: The inclusion of a partition, file format, or media type information in this
document does not constitute an endorsement by PCMCIA or JEIDA.
PCMCIA and JEIDA are only acknowledging this information has been
used to record data on a PC Card and, in some cases, that PCMCIA/JEIDA
members have agreed that using the documented implementation may
reduce problems encountered when attempting to interchange data
between host systems.
1.2 Scope
This document is intended to provide enough information to allow software developers to use data
stored on PC Cards by other host systems using potentially different operating and file systems.
Unless required to understand the data structures used on the PC Card, algorithms for updating the
data on the PC Card are not specified, only the storage format.
© 1999 PCMCIA/JEIDA 1
MEDIA STORAGE FORMATS SPECIFICATION
2. O V E R V IE W
2.2 Partitions
Storage media may be divided into separately addressable areas known as partitions. Each partition
is addressed by a file system as if it were a separate storage device with its own directory and
allocation information.
To minimize the number of storage formats a file system needs to be able to recognize to avoid
erroneously assuming a partition or PC Card is unformatted, the Card Services Specification
provides two services which return partition information. They are GetFirstPartition and
GetNextPartition. A Card Services implementation determines partition information using the CIS
or by performing searches for file system specific data structures.
© 1999 PCMCIA/JEIDA 3
OVERVIEW
PC Card ATA drives are accessed in the same manner as traditional block devices requiring an
entire sector be read or written at one time. The actual storage media may be silicon or magnetic
oxide on a rotating disk.
2.5 In Summary
To access data on storage media requires a complete understanding of how the media is partitioned,
the file format used and whether a translation layer is used. Client device drivers first check the
Card Information Structure (CIS) to determine if a PC Card is partitioned. If the card is partitioned,
the tuples used to describe the partition also describe the storage format used on the media.
4 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
3 . PAR T IT ION S
PCMCIA/JEIDA recognize two methods for partitioning PC Cards. First, linear memory PC Cards
such as flash and S-RAM cards use tuples in the Card Information Structure (CIS) to describe how a
PC Card is partitioned. Second, PC Card ATA drives are partitioned using a Master Boot Record
with a partition table.
Each recognized partitioning method is described separately in the following sections. The following
information is provided about each recognized method:
Overview An overview of the partitioning method and where it is
used.
Partition Operations How partition operations are performed.
Initial Program Load How a host system boots using the partitioning method.
Data Structures The data structures used by the partitioning method.
All PC Cards used for data storage must provide partition information as described in this section.
PC Cards used for data storage that do not contain partition information described in this section
may be assumed to be unformatted.
© 1999 PCMCIA/JEIDA 5
PARTITIONS
3.1.1 Overview
The PC Card's CIS describes partitions using the following tuples:
Both tuples must be present. The Format Tuple describes where that partition is located on the
media and the Organization Tuple identifies the data storage format used within the partition. Data
storage within a partition is also affected by the following tuples, if they are present:
3.1.2.1 Creation
A partition is created by adding the tuples described above to a PC Card's Card Information
Structure (CIS). The ability to write to a PC Card's CIS is dependent on the card and potentially
installed device drivers. A PC Card may require that the entire CIS be erased and then re-written to
modify the CIS.
Some PC Cards use multiple tuple chains to describe physical characteristics of the card separately
from how the card is used. For example, a primary tuple chain in a PC Card's attribute memory
space might describe the physical characteristics of the card, such as the type and size of the
memory device used on the card. A secondary tuple chain, in the PC Card's common memory
space, might be used to describe the logical characteristics of the card, such as the partitioning. In
this manner, the PC Card might be manufactured with the physical information hard-coded into
read-only memory in attribute memory space and logical partitioning information would be added
by using writable memory in common memory space. (See the Metaformat Specification for more
information about how tuple chains are linked together within the CIS.)
3.1.2.2 Deletion
To delete a partition, all of the tuples describing the partition must be deleted from the Card
Information Structure (CIS). Depending on the PC Card, the CIS may have to be erased and then re-
written without the tuples that describe the partition.
6 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
3.1.2.3 Extension
Some PC Cards allow the Card Information Structure to be extended without erasing existing tuples.
These cards permit additional partitions to be defined by adding tuples to the end of the last tuple
chain on the PC Card.
© 1999 PCMCIA/JEIDA 7
PARTITIONS
3.2.1 Overview
PC Card ATA drives are partitioned using a Master Boot Record (MBR) with a Partition Table in the
first physical sector of the media.. Partition Table Entries describe the size, location and type of data
within a partition. A Partition Table Entry may also describe an Extended Partition which is further
divided into one or more partitions.
The MBR contains a word of 55AAH at offset 1FEH. The sector contains operating system
independent code to perform Initial Program Load on x86 architecture host systems. For system and
PC Card interoperability, all systems, including those that do not use the IPL code for booting, must
include such information when formatting the MBR. The MBR also contains a Partition Table with
four (4) Partition Table Entries at offset 1BEH. When booting from a device with an MBR on an x86
architecture system, code within the MBR evaluates the Partition Table for a partition marked as the
default boot partition. Only one partition may be marked as the default boot partition.
If the x86 bootstrap code locates a default boot partition in the MBR's Partition Table, the Partition
Boot Record (PBR), the first sector of the partition, is loaded into memory. If the word at offset 1FEH
of the PBR is 55AAH, control is passed to the next stage bootstrap loader in the PBR image in
memory.
During operating system initialization, MBRs on all fixed disk devices are evaluated by the file
system for partition definitions in reverse order starting with the entry at offset 1EEH. The host
system assigns unit designations (drive letters under MS-DOS), to each partition matching a type
supported by the file system.
3.2.2.1 Creation
A partition is created by setting the fields of a partition entry in the partition table of the Master
Boot Record (MBR) to describe the desired partition. A partitioning utility first reads the MBR into
host system memory. If the word at offset 1FEH of the MBR is not 55AAH, the device is not
formatted and the utility must create an initial MBR with an empty partition table before preceding.
If the word at offset 1FEH of the MBR is 55AAH, the partitioning utility searches the partition table
for an empty entry. An entry is considered empty if the NumSectors field is zero (0). If there are no
empty entries in the partition table, a partition cannot be created.
If there is an empty partition entry, the partitioning utility creates a new partition using contiguous
unallocated space on the media. The utility determines if there is any available space on the media
by subtracting the space allocated to other partitions from the total size of the media. The total size
of the media is determined in a host system dependent manner. For example, on x86 systems with
a PC-compatible ROM BIOS the Get Drive Parameters function (Int 13H Function 8) is typically
used.
If there is unallocated space on the media, the partitioning utility must also determine where the
space is located by comparing the Start and End of each allocated partition. How a partitioning
utility decides which space to use when multiple unallocated spaces are available is implementation
specific.
After a partition entry is created the partitioning utility needs to notify the host system of the
change to the MBR.
8 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
A partition table entry uses Cylinder, Head and Sector (CHS) addressing to describe the starting
and ending boundaries of a partition. Some PC Card ATA drives translate their physical CHS
information to logical values that are compliant with limits imposed by some host systems that are
unable to address cylinder, head or sector values that exceed system-specific limits. Once a partition
table entry has been created, all subsequent accesses to the media must use the same logical CHS
addressing.
The PC Card Standard requires that all partitions described in the partition table within the MBR
end on a logical cylinder boundary based on the logical CHS addressing in use when the first
partition was created. This allows a host system to validate the logical CHS addressing in use is
correct by confirming the maximum head and sector values used for media access are the same as
those used to indicate the ending head or sector of all partitions on the media.
3.2.2.2 Deletion
A partition is deleted by resetting all of the fields of a partition entry in the partition table of the
Master Boot Record to zero (0). After a partition entry is deleted the partitioning utility needs to
notify the host system of the change to the MBR.
3.2.2.3 Extension
Some partition types extend the partition table in a system-specific manner. For example, MS-DOS
defines a special partition type called the Extended MS-DOS partition. The space allocated to an
Extended MS-DOS partition is sub-divided into logical drives. The first sector of an Extended MS-
DOS Partition contains a partition table formatted in the same manner as the partition table in a
Master Boot Record (MBR). The extended partition table typically contains two entries, an MS-DOS
partition and another Extended MS-DOS partition entry.
The MS-DOS partition entry in an extended MS-DOS partition describes a logical drive. If an
Extended MS-DOS partition entry is also present in the partition table, another potential logical
drive may exist within the area described by the Extended MS-DOS partition entry. Extended MS-
DOS partition entries create a forward-linked list of logical drives within the Extended MS-DOS
partition in the MBR.
The one difference between partition entries in an MBR and partition entries in the partition table in
an Extended MS-DOS partition is the StartSector field of the partition entries. In the MBR this field is
relative to the beginning of the media. In an Extended MS-DOS partition this field is relative to the
beginning of the Extended MS-DOS partition described in the MBR.
© 1999 PCMCIA/JEIDA 9
PARTITIONS
physical fixed drive and it has an Extended MS-DOS partition, each logical drive described in the
chain of Extended MS-DOS partitions is added as a logical drive letter.
10 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
© 1999 PCMCIA/JEIDA 11
MEDIA STORAGE FORMATS SPECIFICATION
4 . F I L E F O R M AT S
To achieve backward compatibility and speed acceptance of PC Card technology, the formats used
by file systems for traditional storage devices are often used for PC Cards. This section describes the
data structures used by specific formats and how file operations using those structures are
performed. Each subsection provides the following information about a file format:
Overview An overview of the format and where it is used.
Versions or Revisions Variations of the file format in common use.
File Operations How common file operations are performed using the
defined data structures.
Initial Program Load How a host system boots using the file format.
Data Structures The data structures used by the file format.
4.1.1 Overview
In the MS-DOS environment, the native file system stores information in what is known as the
BPB/FAT format. Static RAM (SRAM) cards and PC Card ATA drives commonly use this format on
x86 architecture systems. Flash memory cards may also use this format if they are read-only or are
accessed using a Flash Translation Layer (FTL).
BPB/FAT media is accessed in blocks known as sectors. The number of bytes in a sector is described
in the BIOS Parameter Block (BPB) BytesPerSector field. The total number of sectors on the media is
described by the BPB 0 field if there are less than 65,536 sectors. If there are more than 65,535
sectors, the TotalSectors field is zero (0) and the number of sectors on the media is described by the
HugeSectors field.
BPB/FAT media may have hidden sectors. Hidden sectors are usually associated with partitioned
media. The BPB HiddenSectors field describes the number of hidden sectors on the media.
BPB/FAT media have one or more reserved sectors. The BPB ReservedSectors field describes the
number of reserved sectors on the media. The first reserved sector is known as the Boot Sector. This
sector contains the BIOS Parameter Block (BPB) describing the size and format of the media.
After any hidden and reserved sectors, BPB/FAT media have one or more File Allocation Tables
(FATs). If there is more than one FAT, the additional copies are maintained to allow data recovery
in case the first FAT is damaged. Most BPB/FAT media is formatted with two (2) FATs. The
number of FATs is described by the BPB NumFATs field.
The FAT tracks the allocation of the media's data space. Space on BPB/FAT media is allocated in
units of one or more contiguous sectors called clusters. If a cluster has more than one sector, the
number of sectors in the cluster must be a power of two (for example, two, four, eight, etceteras).
The BPB SectorsPerCluster field describes the number of sectors per cluster.
FAT entries may be 12 or 16-bits depending on the number of clusters on the media. Media with
more than 4085 clusters use 16-bit entries. Media with 4085 or less clusters use 12-bit entries. Each
entry in the FAT represents the allocation status of a cluster. The first two entries are reserved for
FAT ID information. The first data area tracked by the FAT is cluster number two (2).
© 1999 PCMCIA/JEIDA 13
FILE FORMATS
A FAT entry has the following meanings. The digit in parentheses represents the upper four bits
associated with 16-bit FAT entries.
Value Meaning
(0)000H Available or unallocated cluster
(0)001H Reserved, do not use this value
(0)002H - (F)FF6H Next cluster in file or directory
(F)FF7H Bad cluster, do not store data in this cluster
(F)FF8H - (F)FFFH Last cluster of file or directory
The number of sectors used to store each FAT is described in the BPB NumFATSectors field. The
next area on the media after the FAT(s) is the Root Directory. The Root Directory is an array of
Directory Entries. The number of directory entries in the Root Directory is described by the BPB
RootDirEntries field. The Directory Entry StartCluster field describes the first cluster used to store
data for the file or directory identified by the entry.
The space on the media immediately following the Root Directory is used for file and subdirectory
data storage. The Directory Entry Attributes field identify an entry as a subdirectory of a file.
Subdirectories are special file entries containing additional directory entries for files and further
subdirectories in the data area of the media.
14 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
other power of two. The ReservedSectors field must be at least one (1). The NumFATs field must be
one (1) or two (2).
© 1999 PCMCIA/JEIDA 15
FILE FORMATS
field determines the first cluster. The value in that entry of the FAT is the next cluster in the chain.
When a FAT entry is FF8H to FFFH, the end of the cluster chain has been reached. Attempts to read
past the end of the cluster chain are failed.
If an operation continues beyond the end of a cluster, the location of the next cluster is determined
from the contents of the current FAT entry. Write operations that continue past the end of the cluster
chain need to extend the chain.
A cluster chain is extended by overwriting the current FAT entry with the number of an
unallocated cluster. The unallocated cluster entry in the FAT is then marked as the end of the chain.
Attempts to extend cluster chains on full media are failed.
When a directory entry is extended, the FileSize field of the entry is increased. The FileSize field
represents the actual size of the file or directory, in bytes, and may be less than the space allocated.
This is due to the fact the file or directory may not fill the last cluster allocated.
16 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
© 1999 PCMCIA/JEIDA 17
FILE FORMATS
18 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
4.2.1 Overview
Define a partition type for storing files formatted in a PCMCIA/JEIDA-prescribed manner within
contiguous sections of PC Card memory. This Linear File Store (LFS) uses a well-defined header
record to allow directory functions and file access to be performed across a wide variety of operating
environments and host platforms.
Partitions on PC Cards are defined using the Data Recording Format Tuples in Layer 2 of
Metaformat Specification. A memory-like format tuple is used to describe the PC Card StandardÕs
LFS partition. (See the Metaformat Specification for more information about format tuples.)
Byte 7 6 5 4 3 2 1 0
The above tuple definition describes a partition which is formatted as a memory-like region with no
error detection and no requirement for direct mapping into a specific area of host system address
space. For the example an election has been made to shorten the tuple by omitting optional fields
which are not used.
The data organization of the PC Card StandardÕs LFS partition is defined by an Organization Tuple.
(See the Metaformat Specification for more information about data organization tuples.)
Byte 7 6 5 4 3 2 1 0
Within the partition, each file is preceded by a PC Card Standard-defined entry record. This
structure provides enough information for a simple bootstrap loader to select an appropriate file. If a
specific environment requires information beyond that defined by the PC Card Standard, the
organization responsible for that environment defines any additional fields required immediately
after the PC Card Standard-defined fields creating an extended header record.
For XIP files, a header record is also defined to provide information about the length of the root
segment of the file, whether the file uses paging and the entry point for execution within the file.
Because the header record is part of the file, the data in the record is available during file execution.
© 1999 PCMCIA/JEIDA 19
FILE FORMATS
The PC Card Standard-defined entry record is located at the base of the window that maps the root
section into host system address space.
Note:
XIP definition to be developed by XIP Working Group.
Files are stored consecutively within the partition using a forward-linked list managed by a field
which points to the next header record. If the file is the last in a partition, the pointer to the next
header record is set to all ones (-1 or FFFFFFFFH). This value allows files stored in partitions using
flash memory devices to be extended if sufficient space remains within the partition.
Each entry in the PC Card StandardÕs LFS Partition has the following structure:
typedef struct {
DWORD NextEntry;
DWORD EntrySize;
DWORD EntryType;
DWORD OffsetToHeader;
DWORD Flags;
DWORD OffsetToString;
DWORD UniqueID;
BYTE Reserved[4];
BYTE EntryInfo[];
} ENTRY;
20 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
Member Description
NextEntry This field points to the next entry within the partition, relative to the start of this entry on the
PC Card. The actual location of the next entry is determined by adding the value in this field
to the offset of this field on the PC Card. If all of the bits in this field match Bit D0 of the
Flags field, this is the last entry in the partition.
EntrySize This field contains the actual size of the entry, i.e. the number of bytes in this instance of the
ENTRY structure. EntrySize is less than the NextEntry when padding is added to align the
next entry on a boundary.
EntryType This field contains a PCMCIA assigned value that defines the interpretation of the data in
the EntryInfo byte array. EntryType values are assigned by PCMCIA. The definition of any
header structure within the EntryInfo area for a particular EntryType value must be
provided at the time the EntryType is assigned. If all of the bits in this field match Bit D0 of
the Flags field, this entry is not defined. For this reason, the EntryType values zero and
minus one are reserved.
OffsetToHeader This field contains the offset from the beginning of the ENTRY structure where additional
EntryType specific information is stored. The actual location of the specific information is
determined by adding the value in this field to the offset of the NextEntry field on the PC
Card. If this field is zero, there is no specific information and this field is ignored.
Flags This field is bit-mapped. The bytes of this field are stored in little-endian order. Bit D1
indicates the current state of the entry. If Bit D1 matches D0, this entry is active. If Bit D1
does not match Bit D0, this entry has been deleted. All of the remaining bits are reserved
and must be set to the value of Bit D0. Bit D0 is used in this manner to accommodate the
unique erase and write characteristics of some types of storage media such as flash
memory devices. Bit D0 is typically maintained in the natural erase state of the media.
OffsetToString The field contains the offset from the beginning of the ENTRY structure where an ASCIIZ
string describing the entry is stored. The actual location of the string is determined by
adding the value in this field to the offset of the NextEntry field on the PC Card. If this field is
zero, there is no ASCIIZ string and this field is ignored.
UniqueID This field contains a value that is unique for each file stored in the partition. It is intended to
be used to uniquely identify a file even if it is relocated within the partition. Formatting
software should attempt to prevent the reuse of UniqueID values previously assigned to
deleted entries. How this is accomplished is implementation specific.
Reserved These bytes are reserved for future use. They shall be set to match the value of bit D0 of
the Flags field.
EntryInfo The data for this entry.
© 1999 PCMCIA/JEIDA 21
MEDIA STORAGE FORMATS SPECIFICATION
5 . T R A N S L AT I O N L AY E R S
When sector remapping is performed by a translation layer, two storage formats are used. From the
host system perspective, the same block storage format used for other media is being recorded. With
the translation layer in place, the host system believes it is using traditionally formatted media.
However, the translation layer requires sector mapping information to be stored on the media and
what the host feels are contiguous sectors are actually placed on the media out of sequence. To allow
another system to recover the data stored on the media requires an understanding of how the
translation layer remaps sectors and the native storage format intended by the original file system.
Any file format used for block data storage may be used on top of a Flash Translation Layer (FTL).
To boot from a Flash Translation Layer (FTL) partition requires the FTL to translate host requests for
virtual blocks.
© 1999 PCMCIA/JEIDA 23
TRANSLATION LAYERS
5.1.2 Overview
Traditional block storage devices read and write data in small blocks sized in power-of-two
multiples beginning at 256 (i.e. 256, 512, 1024, 2048, etc. byte blocks). File systems and the data
structures they use are optimized for read/write units of this size. While flash media storage devices
may be able to perform read and write operations on similar size blocks, they usually require a
data area be erased before it may be written.
Adding an erase operation immediately before a write would appear to solve the problem and for
some flash devices, this is all that is required. Unfortunately, for many flash devices, erase
operations must often be applied to a contiguous area of the media known as an Erase Zone that is
larger (in some cases, much larger) than traditional storage devices use for read and write access.
This can make flash devices difficult to use with traditional file systems unprepared to relocate
adjacent data areas to prepare for erase operations.
Two approaches have been taken to deal with the unique characteristics of flash storage devices: the
development of new file systems customized for flash device characteristics and the introduction of a
translation layer between the file system and the storage media to mask any differences between
flash storage devices and traditional block storage devices. This section describes the later method,
known as a Flash Translation Layer (FTL).
24 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
erased state. However, single bits within a byte may be transitioned from the erased state to the
non-erased state without an erase operation. FTLs use this ability to modify updatable fields in
control structures. See the description of the ReversePolarityFlash bit of the Flags field in the Erase
Unit Header.
© 1999 PCMCIA/JEIDA 25
TRANSLATION LAYERS
Even Odd
Addresses Addresses
Flash IC Flash IC
Erase Zone
Flash IC Flash IC
Erase Zone
Flash IC Flash IC
When a flash IC does not require the entire device to be erased as a single unit, a single flash IC conta
multiple Erase Zones. When eight-bit flash devices are used, an Erase Zone spans two flash ICs.
26 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
Erase Unit
An Erase Unit is evenly divided into read/write blocks for allocation purposes. Each of these
read/write blocks is the same size as the virtual blocks presented to the higher level software
layers by the FTL.
Within each Erase Unit is an Erase Unit Header (EUH). The EUH includes specific information
about the Erase Unit and global information about the format of the FTL partition. Each Erase Unit
also contains allocation information for all of the Read/Write Blocks within the unit.
Some flash devices have a small number of bytes of storage adjacent to each Read/Write Block
which are not addressed through the linear address space of the media. Erase Units with these
"hidden" areas may place block allocation information for a Read/Write Block in the hidden area
adjacent to the block. If the Erase Unit does not have hidden areas or an FTL partition is not
formatted to use the hidden areas, block allocation information is stored in an array known as the
Block Allocation Map or BAM in the Erase Unit's linear address space. The Flags field of the EUH
indicates whether block allocation information is stored in hidden areas or a BAM.
© 1999 PCMCIA/JEIDA 27
TRANSLATION LAYERS
For data integrity purposes, two copies of the block allocation information may be stored in the
Erase Unit. The Flags field of the EUH indicates the number of copies of the block allocation
information that are present on the media. When BAMs are used to store block allocation
information, the second copy is stored in a separate BAM immediately following the first BAM in
the Erase Unit.
Optional Checksums, CRCs or ECCs may also be present for each Read/Write Block. If present,
these codes are stored immediately following the block allocation information, in either the BAM or
the media's hidden areas as indicated by the Flags field of the EUH. The length of these codes
varies depending on the type of code being used. See Figure 5-3: Erase Unit Layout.
Erase Unit
Block Allocation
In Hidden Areas
Information
Erase Unit
Erase Units with hidden areas may place Block Allocation Information in those areas rather than in the
linear address space of the media. Optional Checksums, CRCs or ECCs are not shown. If present, these
codes are stored immediately following the Block Allocation Information in either the Block Allocation Map
(BAM) or the media's hidden areas.
5.1.2.5 Block Allocation Information and the Block Allocation Map (BAM)
Each Erase Unit on the media contains allocation information for the Read/Write Blocks within the
unit. For each Read/Write Block, a four-byte value tracks the block's current state. At any point in
time, a Read/Write Block in an Erase Unit is free, deleted, bad, reserved for bad area management,
or allocated. For each Read/Write Block, a four (4) byte value tracks the block's current state. The
following table identifies the corresponding block allocation entry values for the state of a
Read/Write Block:
28 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
When allocated, Read/Write Blocks are used to store four types of data: FTL control structures,
Virtual Block data for higher level software layers, Virtual Block Map Pages and Replacement
Pages. When a Read/Write Block is allocated to an FTL control structure, the block's allocation
information entry is set to the following:
00000030H Control Read/Write Block contains one or more FTL control structures: an
Erase Unit Header, a Block Allocation Map (BAM), or an array of
Checksums, CRCs or ECCs.
The block allocation entries for Virtual Block data, Virtual Block Map Pages and Replacement Pages
have two parts. The least significant eight (8) bits indicate whether the Read/Write Block contains
Virtual Block data, a Virtual Block Map Page or a Replacement Page as indicated by the following
table:
xxxxxx40H Data or Map Page Read/Write Block contains Virtual Block data or a Virtual Map Page.
xxxxxx60H Replacement Read/Write Block contains a Replacement Page for a Virtual Map Page.
Page
The most significant twenty-four (24) bits of the block allocation entry for a Read/Write Block
containing Virtual Block data, a Virtual Block Map Page or a Replacement Page are the most
significant bits of the virtual address of the data. The least significant eight (8) bits of the virtual
address for these entries are assumed to be zero (0). To determine if the block is Data, Map, or
Replacement page, compare the least significant 8 bits to 40H and/or 60H.
The FTL assigns a virtual address to each Virtual Block in the contiguous array of blocks presented
to higher level software layers. The virtual address is computed by multiplying a Virtual Block's
sequence number (zero to n - 1) by the size of a Virtual Block. The first Virtual Block is always at
virtual address zero (0) as indicated by a block allocation entry of 00000040H. If the Virtual Block
size is 512 bytes, the second block's virtual address is 00000200 H and its block allocation entry is
00000240H. The third block's virtual address is 00000400H and its block allocation entry is
00000440H. See Figure 5-4: Block Allocation Map.
The Virtual Block Map (VBM) is built from the virtual addresses of Read/Write Blocks used to store
Virtual Block data. Read/Write Blocks containing Virtual Block data use positive virtual addresses.
If the VBM is maintained on the media, the Read/Write Blocks containing VBM Pages or
Replacements Pages use negative virtual addresses. The use of negative addresses is discussed
further in the sections that follow.
© 1999 PCMCIA/JEIDA 29
TRANSLATION LAYERS
Allocation information is maintained in one of two ways. First, allocation information for all of the
Read/Write Blocks in the Erase Unit may be stored together in an array in the unit known as the
Block Allocation Map (BAM). Second, allocation information may be stored in hidden areas next to
or related to the Read/Write Block to which it refers. The Flags field in the Erase Unit Header
describes how allocation information is stored on the media.
NOTE: For reverse polarity flash the block allocation information stored on the
media is inverted (for example, BAI entry 00000070H is FFFFFF8FH, etc.
when a reverse polarity flash device is used). See the ReversePolarityFlash
bit of the Flags field in the Erase Unit Header.
30 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
For example, if FormattedSize is 12 megabytes and BlockSize is 512 bytes, the media contains 24K
blocks. Each block has a four (4) byte entry in the VBM requiring 96 KBytes of the storage media to
store the VBM. Dividing the size of the VBM by the block size indicates NumVMPages is 192. Each
page of the VBM, in the example, is capable of recording the logical addresses used for 128 virtual
blocks or 64 KBytes of data storage.
Space is always reserved on the media to store a VBM large enough to track the allocation of all the
Virtual Blocks presented to higher level software layers by the FTL. However, when the media is
formatted, the FTL may indicate only a portion of the VBM is maintained on the media. The
FirstVMAddress field of the Erase Unit Header identifies the first virtual address on the media that
has an entry in the VBM maintained by the FTL.
If the FirstVMAddress is reset to zero (0), the FTL must maintain all of the VBM entries on the
media. If the FirstVMAddress exceeds the FormattedSize, none of the VBM entries are maintained
on the media by the FTL. If the FirstVMAddress is greater than zero (0), but less than the
FormattedSize, the FTL maintains VBM entries on the media for all virtual addresses greater than
or equal to the FirstVMAddress. The system should determine if it has adequate resources to mount
the media prior to mounting. All VBM entries stored on the media are in little-endian order.
When all or a portion of the VBM is not maintained on the media, the FTL must map requests for
Virtual Blocks in some other way. An FTL might create and maintain a VBM in host system RAM.
An FTL could also scan the media's block allocation information when each virtual block is
requested. The choice to maintain the VBM on the media is typically based on the availability of
system RAM and desired performance. Maintaining virtual to logical mapping information in
system RAM relieves the FTL of the overhead of updating the VBM on the media for frequently
updated Virtual Blocks.
If a VBM entry is all ones (FFFFFFFFH), the Virtual Block does not exist on the media. When asked
to read data from this Virtual Block, the FTL may return any combination of bytes, such as binary
0's, as long as this combination is consistently returned until the Virtual Block is written.
There are two possibilities if a VBM entry is all zeroes (00000000H). First, the logical address of the
Virtual Block is described on a Replacement Page. In this case, the FTL uses the logical address from
the Replacement Page to locate the block. Second, if there is no Replacement Page, the block does
not exist on the media. In the later case, when asked to read data from this Virtual Block, the FTL
may return any combination of bytes, such as binary 0's, as long as this combination is consistently
returned until the Virtual Block is written.
NOTE: For reverse polarity flash, the VBM entries stored on the media are inverted
(for example, VBM entry FFFFFFFFH is 00000000H, etc. when a reverse
polarity flash device is used). See the ReversePolarityFlash bit of the Flags
field in the Erase Unit Header.
© 1999 PCMCIA/JEIDA 31
TRANSLATION LAYERS
The 128th entry of the VBM contains the value A0600h. This
indicates the data corresponding to the 128th Virtual Block is
stored at offset A0600h of the media when the Erase Units are
accessed in logical order. This example assumes each Erase
Unit is 64 Kbytes, so this logical address further breaks down
to offset 0600h of LogicalEUN 10.
Erase
Unit Free Blocks, The entry for Virtual Block 130 has been updated and is stored
Superseded Blocks, in a Replacement Page. To locate the data for this block, the
Virtual Blocks, FTL must refer to the corresponding entry (in this case, the
Virtual Block Map Pages, third entry) on the Replacement Page for this Virtual Block Map
and Replacement Pages Page. If the Replacement Page entry for this block is also 0,
then the data no longer exists.
Logical Address of Virtual Block
128 000A0600 Offset 0600h of Logical EUN 10
129 000C0800 Offset 0800h of Logical EUN 12
VBM Index
130 00000000 Use Replacement Page Entry
131 0000CC00 Offset CC00h of Logical EUN 0
5.1.2.7 Virtual Page Map - Locating the Pages of the Virtual Block Map
When the Virtual Block Map (VBM) is maintained on the media, the FTL must track the storage of
the Pages of the VBM. In the same manner that VBM entries indicate the logical address of a Virtual
Block, the entries of the Virtual Page Map (VPM) indicate the logical address on the media where
the Pages of the VBM are stored. Unlike the VBM, the VPM is never stored on the media. Where
the FTL stores the VPM is implementation dependent. See Figure 5-6: Page Mapping.
The block allocation information entries describing Virtual Block Map Pages use negative values to
distinguish them from the Read/Write Blocks used to store Virtual Block data which use positive
values. In the example used in the previous section, the VBM requires 192 Pages. If the entire VBM
is maintained on the media (see the previous section), each page of the VBM requires a Read/Write
Block to store the VBM entries found on the page.
Virtual Block Map Pages are numbered using negative values, therefore their virtual addresses are
negative. As with Virtual Blocks, the virtual address stored as the block allocation information for
these pages is computed by multiplying the page number by the size of a Virtual Block (which is
the same size as the Read/Write Block used to store the page's data). Returning to the previous
example, the first page of the VBM (used to store the logical addresses of the first 128 Virtual Blocks)
is number -192. The second page of the VBM is number -191 and the last page of the VBM is -1.
With a block size of 512 bytes, the first VBM Page in the example is virtual address FFFE8000H. The
virtual address of the second VBM Page is FFFE8200H, and the last VBM Page would be virtual
address FFFFFE00H. To locate an address within a VBM Page, take the sector requested modulo
128. Multiply this result but the Virtual Block entry width and this yields the correct offset within
the VBM Page.
32 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
0
VBM 1
1
... ...
127
.
. VBM 2 0
.
1
.
... ... .
127 .
.
.
.
VBM n-1
0
127
© 1999 PCMCIA/JEIDA 33
TRANSLATION LAYERS
may be performed when the media is inserted in the host system or when a VBM entry of zero (0) is
encountered. Replacement Pages may NOT be replaced.
The block allocation information entry for a Replacement Page uses the same virtual address as the
original VBM Page. The FTL distinguishes between the two using the least significant eight (8) bits
of the block allocation information. VBM Pages have a value of 40H in the these bits while
Replacement Pages have a value of 60H.
34 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
© 1999 PCMCIA/JEIDA 35
TRANSLATION LAYERS
36 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
64 FTLRevisionTuple 114 This optional field contains an FTL Revision Tuple. The contents of
this field are the same for all Erase Units.
TPL_CODE vendor unique (80H)
TPL_LINK 10
FTL-VER 'FTL VER x.x' where x.x is the ASCII
equivalent version number of the FTL specification that the
software is compliant to. For example, FTL version 1.1 would
have entries 46H, 54H, 4CH, 20H, 56H, 45H, 52H, 31H, 2EH, 31H.
5.1.3.2 Flags
The bit-mapped Flags field of the Erase Unit Header describes how checksum and block allocation
information is stored on the media and identifies the media's erase state.
Bit Description
0 HiddenAreaFlag - This flag indicates whether checksum and allocation information are stored in the Block
Allocation Map (BAM) or the media has hidden, alternate storage areas for such information that do not appear in
the media's normal address space.
If this bit is set to one (1), checksum and/or allocation information are stored in hidden areas outside of the media's
normal address space.
If this bit is reset to zero (0), any checksum and/or allocation information are stored in the media's normal address
space. The Block Allocation Map (BAM), an array of all of the block allocation information, precedes an array of
the checksum information.
1 ReversePolarityFlash - This flag indicates whether the media's flash memory devices erase to all ones or to all
zeroes.
If this bit is set to one (1), the flash memory devices erase to all zeroes (0) and may be written to one. When this
bit is set, all block allocation information, Virtual Map entries and LogicalEUNs must be inverted before they are
written to the media and after they are read from the media.
If this bit is reset to zero (0), the flash memory devices erase to all ones (1) and may be written to zero. When this
bit is reset, all block allocation information, Virtual Map entries and LogicalEUNs are read and written without
inversion.
2 DoubleBAI - This flag indicates whether there are one or two copies of the block allocation information stored on
the media.
If this bit is set to one (1), two copies of the block allocation information are present on the media. If this
information is stored in BAMs, there are two complete BAMs on the media. In this case, the first BAM begins at
the location specified by the BAMOffset field and the second BAM begins immediately after the first. If the block
allocation information in stored in hidden areas, as indicated by the HiddenAreaFlag, the second entry for a
Read/Write Block follows the first. Both copies of the block allocation information precede any Checksum, CRC
or ECC codes.
If this bit is reset to zero (0), only one copy of the block allocation information is stored on the media.
3 .. 7 Reserved for future use. All of these bits must be reset to zero (0).
Byte D7 D6 D5 D4 D3 D2 D1 D0
0 Tuple Code CISTPL_ORG, 46H
1 Tuple Link Link to next tuple (at least 07H)
2 TPLORG_TYPE TPLORGTYPE_FS, 00H
3 .. 9 TPLORG_DESC "FTL100\0" Null terminated string identifying FTL partition
© 1999 PCMCIA/JEIDA 37
TRANSLATION LAYERS
If the entire storage media is used by an FTL, the CIS is not required to contain partition
information. In this case, an FTL partition is recognized if an FTL Erase Unit Header (see 5.1.3 Data
Structures, above) is found in the first megabyte of the storage media and the information in the
Unit Header is valid. The procedure for recognizing and validating an FTL Erase Unit Header is
described in the following paragraphs.
The first step in recognizing an FTL partition is confirming the presence of the FTL Data
Organization Tuple described above at offset five (5) of the Erase Unit Header. Since Erase Unit
Headers always begin at offset zero (0) of an Erase Unit and an Erase Unit is always a multiple of a
flash device's erase zone size, the search is limited to the first fifteen bytes of each flash erase zone
in the first megabyte of the storage media. If the flash erase zone size is not known, the search for
an Erase Unit Header is made in four (4) KByte increments.
If the FTL Data Organization Tuple is not found within the first megabyte of the partition area, the
media is not an FTL data store. If the tuple is found, the rest of the Erase Unit Header must be
validated. All Erase Units should have identical EUHs with the exception of the Logical EUN and
reserved fields. One level of validation would be to check to see that all EUHs are the same. Further
validation could include verifying that the FormattedSize is a multiple of the BlockSize, that the
BlockSize is smaller than the EraseUnitSize, and that there is at least a 30H ID at the address that the
BAMOffset points to. The validation process may also be used to build a dynamic map of the logical
to physical translation performed by the FTL.
The FTL then reads every Erase Unit Header on the media, starting with the unit described by the
FirstPhysicalEUN field. If not found at offset zero, the FTL looks for the Erase Unit Header at the
location specified by the AltEUHOffset field of other Erase Units. If an Erase Unit Header is not
found at either location, the Erase Unit is considered an unformatted Transfer Unit. If two units are
found with the same value in the LogicalEUN field, either of the units may be assumed to be a
Transfer Unit. After all Erase Unit Headers have been read, the number of units with non-negative
and distinct LogicalEUN fields must equal the NumEraseUnits field less the NumTransferUnits
field.
The number of Virtual Blocks used to store the Virtual Block Map (VBM) on the media is indicated
by the NumVMPages field in the Erase Unit Header. During the block allocation scan, the FTL
locates VBM Pages and Replacement Pages. The number of VBM Pages located must match the
value in the NumVMPages field. If a VBM Page is missing and a Replacement Page exists, the
Replacement Page is used in place of the original VBM Page. If a VBM Page is missing and a
Replacement Page does not exist, implementation dependent recovery operations are required. If
duplicate VBM Pages are found, all but one is ignored.
The assignment of Replacement Pages is implementation specific. A Replacement Page is indicated
by allocation information having the same virtual address as an original VBM Page with the least
significant eight (8) bits set to 60H.
38 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
FirstVMAddress
NumVMPages
Flags
SerialNumber
AltEUHOffset
BAMOffset
For each Erase Unit on the media: Erase the unit and write out an Erase Unit Header with unit
specific data. Unit specific data includes the following field:
LogicalEUN
LogicalEUNs range from zero (0) to one less than the NumEraseUnits field less the
NumTransferUnits field. The order LogicalEUNs are assigned is not significant as long as each is
unique in the above range. The LogicalEUN of Transfer Units is left in the media's erased state (for
most flash devices this is all ones or FFFFH). See the ReversePolarityFlash bit of the Flags field.
For each Read/Write Block used to store Erase Unit Headers and the Block Allocation Map (if used)
set the allocation information to 30H to indicate the blocks contain formatting data.
Once the FTL has prepared the media, any block-oriented file system may store its data formats on
the media using the FTL to translate Virtual Block requests to the appropriate locations on the
media.
5.1.6.1 Read
Higher level software layers request a Virtual Block from the FTL. The FTL uses the number of the
Virtual Block as an index into the Virtual Block Map (VBM). The entry in the VBM is the logical
address where the Virtual Block data is stored. The FTL converts the logical address to a physical
address. The conversion from logical to physical is based on the relationship of the LogicalEUN
containing the logical address to the physical Erase Unit used for the logical Erase Unit. The FTL
transfers the data block at this location into the buffer provided by the host file system.
If an entry in the VBM is all ones (FFFFFFFFH), the block does not exist on the media. The FTL
may return any combination of bytes, such as binary 0's, as long as this combination is consistently
returned until the Virtual Block is written.
There are two possibilities if a VBM entry is all zeroes (00000000H). First, the logical address of the
Virtual Block is described on a Replacement Page. In this case, the FTL uses the logical address from
the Replacement Page to locate the block. Second, if there is no Replacement Page or the entry on
the Replacement Page is all zeroes or Fs (00000000 H or FFFFFFFFH), the block does not exist on the
media. In the later case, when asked to read data from this Virtual Block, the FTL may return any
combination of bytes, such as binary 0's, as long as this combination is consistently returned until
the Virtual Block is written.
Some mechanism should be employed to ensure proper handling if a power cycle is received while
accessing the flash device.
5.1.6.2 Write
When writing Virtual Block data to the media, the FTL must first locate a free Read/Write Block. If
a free block is not available, one is created using the Unit Recovery Procedure described below.
© 1999 PCMCIA/JEIDA 39
TRANSLATION LAYERS
Once a free block is located, block allocation information for the area is marked to indicate a write
operation is beginning by resetting the least significant bit (FFFFFFFEH). Once the write has been
successfully completed, the block allocation information in the Erase Unit is updated to reflect the
Virtual Block's virtual address.
Next, the Virtual Block Map is updated to reflect the new area assigned to the Virtual Block. Finally,
if the new block replaces an existing block, the Read/Write Block used to store the superseded data
is marked as deleted by resetting its block allocation information to zero (00000000H).
If the write process is interrupted at any point, the FTL is able to recover with minimal effort. If the
interruption occurs before the data write completes, the block allocation information (FFFFFFFEH)
indicates the block shall be treated as deleted and normal activity will recover the space when
required.
If an interruption occurs after the block allocation information is updated, but before the VBM is
updated, both Read/Write Blocks have the same block allocation information. This can also occur if
the update of the VBM entry completes, but the superseded Read/Write Block's allocation
information is not marked as deleted. In either case, the FTL selects the block pointed to by the
VBM and treats the other block as superseded. The system is allowed to use up to one (1)
Replacement Page during writes.
Some mechanism should be employed to ensure proper handling if a power cycle is received while
accessing the flash device.
40 © 1999 PCMCIA/JEIDA
MEDIA STORAGE FORMATS SPECIFICATION
© 1999 PCMCIA/JEIDA 41
MEDIA STORAGE FORMATS SPECIFICATION
6 . ST OR AGE DE V IC E S
PC Cards use a number of storage technologies with various read, write, erase and access
characteristics. The relative performance of a technology is often affected by the data storage format
used to record information on a PC Card. The characteristics of some technologies may dictate a
particular access method or may prohibit or severely limit the ability to use a particular file format.
© 1999 PCMCIA/JEIDA 43
MEDIA STORAGE FORMATS SPECIFICATION
© 1999 PCMCIA/JEIDA 45
P C C A R D S TA N D A R D
Volume 8
PC Card ATA Specification
PCMCIA
JEIDA
©1999, PCMCIA/JEIDA PCMCIA HAS BEEN NOTIFIED BY
All rights reserved. CERTAIN THIRD PARTIES THAT
THE IMPLEMENTATION OF THE
No part of this publication may be STANDARD WILL REQUIRE A
reproduced, stored in a retrieval LICENSE FROM THOSE THIRD
system, or transmitted, in any form or PARTIES TO AVOID
by any means, mechanical, INFRINGEMENT OF THEIR
electronic, photocopying, recording RIGHTS. PCMCIA HAS OBTAINED
or otherwise, without prior written FROM SOME, BUT NOT ALL, OF
permission of PCMCIA and JEIDA. THOSE PARTIES A GRANT OF
Printed in the United States of IMMUNITY THAT PCMCIA WILL
America. EXTEND TO YOU, CONTINGENT
PCMCIA (Personal Computer UPON YOUR ENTERING INTO
Memory Card International AND DELIVERING TO PCMCIA
Association) THE RECIPROCAL GRANT OF
2635 North First Street, Suite 209 IMMUNITY AGREEMENT
San Jose, CA 95134 USA CONTAINED ELSEWHERE IN
+1-408-433-2273 THIS STANDARD.
+1-408-433-9558 (Fax) IMPORTANT:
JEIDA (Japan Electronic Industry In order to receive the Grant of
Development Association) Immunity, the owner of this
Kikai Shinko Kaikan, 3-5-8, Shibakoen Standard must sign and return the
Minato-ku, Tokyo 105, JAPAN enclosed Registration Card to:
+81-3-3433-1923 PCMCIA
+81-3-3433-6350 (Fax) 2635 North First Street, Suite 209
San Jose, CA 95134 USA
The PC Card logo and PC Card are
trademarks of PCMCIA, registered in NEITHER PCMCIA NOR JEIDA
the United States. The PC Card logo MAKES ANY WARRANTY,
and PC Card are trademarks of EXPRESS OR IMPLIED, WITH
JEIDA, registered in Japan. RESPECT TO THE STANDARD,
INCLUDING AS TO NON-
INFRINGEMENT,
MERCHANTABILITY OR FITNESS
FOR A PARTICULAR PURPOSE.
THIS STANDARD IS PROVIDED TO
YOU ÒAS IS.Ó
CONTENTS
1. Introduction ___________________________________________ 1
1.1 Purpose................................................................................................................................1
1.2 Scope....................................................................................................................................1
1.3 Related Documents .............................................................................................................1
1.4 Conventions .........................................................................................................................2
1.4.1 Signal Naming............................................................................................................................................................................2
1.4.2 Numeric Representation..........................................................................................................................................................2
1.4.3 Bit Action Representation.......................................................................................................................................................2
2. Overview ______________________________________________ 3
2.1 Feature Summary................................................................................................................3
2.2 Differences Between PC Card ATA and ATA ...................................................................3
5. Software Interface_____________________________________ 21
5.1 ATA Command Block.......................................................................................................21
5.1.1 ATA Command Block for Cylinder-Head-Sector Addressing..............................................................................2 1
5.1.2 ATA Command Block for Logical Block Addressing ..............................................................................................2 2
iv © 1999 PCMCIA/JEIDA
PC CARD ATA SPECIFICATION
TABLES
Table 3-1: PC Card ATA Signal Names and Pin Assignment.......................................................5
Table 4-1: Standard Configurations ............................................................................................11
Table 4-2: Data Register...............................................................................................................12
Table 4-3: Error Register...............................................................................................................12
Table 4-4: Feature Register...........................................................................................................13
Table 4-5: Sector Count Register..................................................................................................13
Table 4-6: Sector Number Register...............................................................................................13
Table 4-7: Cylinder Low Register .................................................................................................14
Table 4-8: Cylinder High Register ................................................................................................14
Table 4-9: Drive/Head Register...................................................................................................14
Table 4-10: Status and Alternate Status Registers......................................................................15
Table 4-11: Device Control Register.............................................................................................16
Table 4-12: Drive Address Register .............................................................................................16
Table 4-13: Duplicate Data Register............................................................................................17
Table 4-14: Access to Data, Error and Feature Registers Including Duplicate Registers..........17
Table 4-15: I/O Mapped Addressing..........................................................................................18
Table 4-16: Memory Mapped Address Map...............................................................................19
Table 5-1: Commands with Cylinder-Head-Sector Encoding.....................................................21
Table 5-2: Commands with Logical Block Address Encoding ...................................................22
Table 6-1: Soft Reset Timing Diagram.........................................................................................25
© 1999 PCMCIA/JEIDA v
PC CARD ATA SPECIFICATION
1. I N T R OD U C T ION
1.1 Purpose
This specification defines the standard method for incorporating an ATA mass storage protocol
peripheral on a 16-bit PC Card. This specification supplements the definitions of an ATA mass
storage peripheral found in the ANSI ATA Standard and the definition of a PC Card found in the
PC Card Standard.
The PC Card ATA protocol described in this document is compatible with existing PC Card defined
socket hardware without any changes or additional pins. PC Card ATA mass storage cards shall be
implemented to operate as I/O devices in conformance with PCMCIA 2.0/JEIDA 4.1 or later. The
cards are also permitted to provide a memory mapped configuration compatible with socket
hardware defined in PCMCIA 1.0/JEIDA 4.0.
This document describes the electrical and software interfaces for a PC Card ATA mass storage card.
The standard address mappings for a PC Card ATA mass storage card are also described.
1.2 Scope
This document is intended to be used together with the PC Card Standard and the ANSI ATA
Standard. It is intended to highlight those areas of implementation in which the PC Card
Standard and the ANSI ATA Standard conflict. In addition, an indication is made of areas within
the ANSI ATA Standard which are modified for operation in a PC Card environment. Both
mandatory and optional specifications are presented.
In the event of a conflict between one of the base documents (PC Card Standard or ANSI ATA
Standard) and this document, the interpretation of this document shall prevail if and only if this
document specifies that a conflict exists between the documents.
© 1999 PCMCIA/JEIDA 1
INTRODUCTION
1.4 Conventions
This section is intended to give general descriptions of notational conventions used in this
document.
See the Overview and Glossary volume for an extensive set of definitions of terms found in the PC
Card ATA Specification. In many cases, more detailed information about these terms may be found
in the PC Card Standard or the ANSI ATA Standard. These two documents should be consulted
for more detailed and precise definitions of terms.
2 © 1999 PCMCIA/JEIDA
PC CARD ATA SPECIFICATION
2. O V E R V IE W
This document details the requirements and considerations in implementing an ATA protocol mass
storage peripheral within the PC Card environment.
The ATA protocol is followed except where the PC Card interface imposes conflicting constraints to
traditional ATA host bus adapters. This document describes how the ATA protocol maps onto the
PC Card interface. It resolves and clarifies the enhancements and restrictions which result from the
use of the PC Card interface with the ATA protocol.
Mandatory support is provided for the AT BIOS ATA Control Block and Command Block registers
at 1F0H-1F7H, 3F6H-3F7H or 170H-177H, 376H-377H typically using IRQ14. These I/O register
assignments are usable with pre-existing AT BIOS Device Drivers. Mandatory support is also
provided for locating the I/O ports in a contiguous I/O window of at least 16 bytes which is
decoded for the PC Card by the socket. PC Cards can also be built that may be placed by the
system in a 2 KB host memory space by a dedicated driver.
The use of a well known, dominant, standard interface in mobile computers guarantees system
vendors an interface which remains stable over the coming generations of silicon and rotating mass
storage devices.
© 1999 PCMCIA/JEIDA 3
OVERVIEW
used while a card is configured in the memory mapped mode to provide a socket generated
host interrupt on the transition to ready.
d) The PC Card ATA Specification provides an ATA Soft Reset protocol described in Section 6.1,
ATA Soft Reset.
e) The implementation of the Index bit, IDX, in the Status register and the Alternate Status register
is optional. If implemented, it shall be implemented as defined in the ANSI ATA Standard.
f) I/O ports 3F7H and 377H in the Primary and Secondary I/O mapped modes have a potential
conflict with a floppy disk controller installed in the host. There is a potential problem with the
protocol described in the ANSI ATA Standard for sharing the Drive Address register with a
floppy disk controller when either the ATA peripheral or the floppy disk controller are accessed
through the PC Card interface.
Refer to Appendix B for possible methods to avoid this problem.
g) The PC Card interface permits the host to access the ATA registers in more alternative ways
than the traditional ATA host bus adapter allows. These alternatives arise from the presence of
two card enable signals, CE[2::1]#, in addition to address line A0.
The PC Card interface allows access to registers at odd addresses with two different methods.
a) When address line A0 is 1 (logic high), if CE1# is asserted and CE2# is negated during the
read or write cycle, then the byte of data at the odd address is transferred on signals D[7::0] of
the Data Bus.
b) Regardless of the state of address line A0 and of the state of CE1#, if CE2# is asserted the
byte of data at the odd address is transferred on signals D[15::8] of the Data Bus. If CE1# is also
asserted, then a 16-bit word is accessed. If CE1# is negated, then only the byte at the odd
address is accessed.
A sixteen bit word of data is accessed when both CE[2::1]# are active, regardless of the state of
A0.
h) I/O accesses are constrained at the PC Card interface as follows:
a) The host shall perform all word (16-bit) I/O accesses with A0 = 0.
b) During a host's word access attempt, if a card asserts IOIS16# in response to the address on
the bus then the host system is permitted to transfer 16 bits of data to the card in a single cycle,
otherwise, the host system shall perform two 8-bit cycles: even byte then odd byte.
i) The ANSI ATA Standard specifies that the Data register is two bytes wide and is located at
offset, or relative address zero while the Error and Feature registers are one byte wide and are
located at offset one within the ATA registers. This results in an overlap of the address spaces
between the Data register and Error-Feature register combination.
Some host architectures do not permit word and byte registers to overlap. To permit those hosts
to access all the registers of the PC Card ATA mass storage card, the PC Card ATA Specification
provides a non-overlapping duplicate copy of each of these registers in the Memory Mapped
and Contiguous I/O mapped configurations. Within the 16 byte space occupied by the ATA
registers in these configurations, the duplicate data register is located at offset 8H while the
duplicate Error and Feature registers are located at offset 0DH.
Refer to Section 4.2.13, Duplicate Data, Error and Feature Registers, for more information about
the duplicate copies of these registers.
j) Implementation of the Identify Drive Command is mandatory in the PC Card Standard, but
optional in the ANSI ATA Standard.
4 © 1999 PCMCIA/JEIDA
PC CARD ATA SPECIFICATION
3 . EL E C T R IC AL I N T E R F AC E
A PC Card ATA mass storage card uses the PC Card electrical interface. A subset of the entire PC
Card interface is sufficient for PC Card ATA implementation. Both mandatory and optional signals
are given in this section. Special consideration is given to some signals whose definition is expanded
when used in the PC Card ATA mass storage card.
© 1999 PCMCIA/JEIDA 5
ELECTRICAL INTERFACE
6 © 1999 PCMCIA/JEIDA
PC CARD ATA SPECIFICATION
NOTES:
Signal names in the PC Card ATA columns indicate dual function signals by listing the Memory Interfaced
function, followed by a colon (:), and then the I/O Interfaced function of the signal. Signals in the PC Card ATA
Optional column may be mandatory for particular features which the card vendor may choose to implement.
The use of optional signals is described in the following numbered notes.
1. Address line A10 is mandatory if Memory Mapped addressing is supported. Otherwise, A10 is
permitted to be implemented at the discretion of the card vendor.
2. Address lines A[25::11] are permitted to be implemented at the discretion of the card vendor.
3. The use of the Vpp[2::1] supplies is optional. If they are used, it is recommended that the card vendor
select +12 V as the Vpp value. A card which does not require any Vpp supply, shall leave both Vpp
pins unconnected at the card.
The Vpp[2::1] supplies shall not be connected to each other on the card.
When only one supply is required, it is recommended that Vpp1 be used.
At power up, the host shall provide at least minimal current at Vcc Volts on both Vpp[2::1].
4. The I/O signal SPKR# is optional. If the function is not implemented, this pin shall be held at logic high
(negated) by the card. The memory signal BVD2 shall be held high unless it is indicating the state of a
battery on the card.
5. The I/O signal STSCHG# is optional, however it shall be implemented if both the Function
Configuration and Status register and the Pin Replacement register are implemented. If the function is
not implemented, this pin shall be held high (negated) by the card. The memory signal BVD1 shall be
held high unless it is indicating the state of a battery on the card.
6. The negated state of the READY signal shall be interpreted to be the Busy state of the signal. See 3.3
READY Signal and RREADY Bit, for additional information on the READY signal.
7. All signals shown in the PC Card ATA mandatory column shall be implemented by all PC Card ATA
mass storage cards.
© 1999 PCMCIA/JEIDA 7
ELECTRICAL INTERFACE
8 © 1999 PCMCIA/JEIDA
PC CARD ATA SPECIFICATION
© 1999 PCMCIA/JEIDA 9
PC CARD ATA SPECIFICATION
4 . AT A S P E C I F I C R E G I S T E R D E F I N I T I O N S
The host selects the card's register mapping configuration by writing the Function Configuration
Index value to the least significant 6 bits of the card's Configuration Option register. The actual
configuration index values used by a card are vendor specific and are reported to the host using the
Configuration Table Entry tuples. However, configuration 0 H shall always select the PC Card
Memory-Only interface.
© 1999 PCMCIA/JEIDA 11
ATA SPECIFIC REGISTER DEFINITIONS
Refer to the ANSI ATA Standard for detailed information about this register. Refer also to Section
4.2.13, Duplicate Data, Error and Feature Registers, for additional information about the Data
register, the Duplicate Data registers, and the interactions between the Data register and the Error
or Feature register.
All bits in this register are defined in the ANSI ATA Standard. Refer to the ANSI ATA Standard
for a detailed description of this register. Refer also to Section 4.2.13, Duplicate Data, Error and
Feature Registers, for additional information about the Error register, the Duplicate Error register,
and the interactions between the Data register and the Error register.
12 © 1999 PCMCIA/JEIDA
PC CARD ATA SPECIFICATION
When reading from the address of the Feature register, the Error register is read. This register may
be ignored by some drives.
Refer to the ANSI ATA Standard for a detailed description of this register. Refer also to Section
4.2.13: Duplicate Data, Error and Feature Registers, for additional information about the Feature
register, the Duplicate Feature register, and the interactions between the Data registers and the
Feature register.
Refer to the ANSI ATA Standard for a detailed description of this register.
Refer to the ANSI ATA Standard for a detailed description of this register.
© 1999 PCMCIA/JEIDA 13
ATA SPECIFIC REGISTER DEFINITIONS
Refer to the ANSI ATA Standard for a detailed description of this register.
Refer to the ANSI ATA Standard for a detailed description of this register.
14 © 1999 PCMCIA/JEIDA
PC CARD ATA SPECIFICATION
Refer to the ANSI ATA Standard for a description of the bits which are described in this register
except where the ANSI ATA Standard conflicts with the descriptions below.
Bit 1 IDX This bit is optional. If implemented it shall be implemented as described in the ANSI
ATA Standard.
Bit 5 DWF This bit is used to indicate a drive write failure. Drives which require Vpp for write
operations should use this bit to signal if the Vpp voltage is out of tolerance when a
write is attempted.
D7 D6 D5 D4 D3 D2 D1 D0
Command
© 1999 PCMCIA/JEIDA 15
ATA SPECIFIC REGISTER DEFINITIONS
X X X X 1 SRST nIEN 0
Refer to the ANSI ATA Standard for the general description of the bits which are described in this
register except where it conflicts with the descriptions noted below:
Bit 1 nIEN While the card is operating in the memory mapped mode this bit is permitted to be
ignored; but see additional requirements in Section 7.1, Card Configuration Registers,
for cards which implement the Function Configuration and Status register.
While this bit is cleared, interrupts shall operate as described in the PC Card
Standard in response to the events described in the ANSI ATA Standard.
While this bit is set, the interrupts on the card shall be disabled. The IREQ# signal in
the PC Card I/O interface shall be negated unless the nIEN bit is cleared and an
interrupt has been requested.
Bit 2 SRST The Software Reset bit shall operate generally as described in the ANSI ATA
Standard with the following exceptions:
Sections of ANSI ATA Standard which refer to the PDIAG- and the DASP- signals
are not applicable to PC Card implementations. Section 6.1, ATA Soft Reset, of this
document shall define the Soft Reset Function and protocol.
Bit 7 X This bit shall be ignored by the host. Please see Appendix B: Card Information Structure of
this document for a discussion of the considerations involving this bit.
Bit 6 nWTG This bit is cleared while a write operation is in progress, otherwise, it is set.
When the bit is cleared the host should not alter the Vpp or Vcc supply voltages to the card.
Refer to the ANSI ATA Standard for description of the bits which are described in this register
except where the ANSI ATA Standard conflicts with the descriptions provided above.
16 © 1999 PCMCIA/JEIDA
PC CARD ATA SPECIFICATION
Because of the overlapped registers, access to the Error or Feature registers at 1F1 H, 171H and offset
1H are not possible when word accesses are performed, i.e., with CE1# and CE2# both asserted. The
Duplicate Registers at relative addresses 8H, 9H and 0DH have no restrictions on the operations
which can be performed by the socket.
Table 4-14: Access to Data, Error and Feature Registers Including Duplicate Registers
Data Register CE2# CE1# A0 Offset Data Bus
NOTES:
1. The Data register at 0H is accessed with both CE1# and CE2# asserted as a word register on the
combined Odd Data Bus and Even Data Bus (D[15::0]). This register may also be accessed by a pair
of byte accesses to the offset 0H with CE1# asserted and CE2# negated. Word accesses at odd
address N+1 is the same as a word access at address N, however, word accesses at odd addresses
are illegal for I/O accesses. Note that the address space of this word register overlaps the address
space of the Error and Feature byte-wide registers which are located at offset 1H. When accessed
twice as byte register with CE1# asserted, the first byte to be accessed is the Even byte of the Word
and the second byte accessed is the Odd byte of the equivalent Word access.
A byte access to address 0H with CE1# negated and CE2# asserted accesses the Error (read) or
Feature (write) register.
2. The registers located at offsets 8H, 9H and 0DH are non-overlapping duplicates of the registers at
offsets 0 and 1.
Register 8H is equivalent to register 0H, while register 9H accesses only the Odd byte of the Data
register. Therefore, if the registers are byte accessed in the order 9H then 8H the data will be
transferred Odd byte then Even byte. Repeated byte accesses to register 8H or 0H will access
consecutive (even then odd) bytes from the data buffer. Repeated word accesses to register 8H, 9H or
0H will access consecutive words from the data buffer. Repeated byte accesses to register 9H are not
supported. However, repeated alternating byte accesses to registers 8H then 9H will access
consecutive (even then odd) bytes from the data buffer. Byte accesses to register 9H access only the
odd byte of the data word.
3. Memory accesses to even addresses at offsets between 400H and 7FFH access register 8H.
Accesses to odd addresses at offsets between 400H and 7FFH access register 9H. This 1 Kbyte
memory window to the Data register is provided so that hosts can perform memory to memory block
moves to the Data register when the register lies in memory space. This entire window accesses the
Data register FIFO and does not directly address the data buffer within the card.
Some hosts, such as the 80x86 processors, increment both the source and destination addresses when
executing the memory to memory block move instruction. Some PC Card socket adapters also have
auto incrementing address logic embedded within them. This address window allows these hosts and
adapters to function efficiently.
© 1999 PCMCIA/JEIDA 17
ATA SPECIFIC REGISTER DEFINITIONS
NOTES:
1. This register supports word or byte accesses. See note 1 for Table 4-14: Access to Data, Error and
Feature Registers Including Duplicate Registers.
2. This register overlaps the address space of the Data register. See note 1 for Table 4-14: Access to
Data, Error and Feature Registers Including Duplicate Registers.
3. This register address is a duplicate address assignment for another register. A duplicate address is not
available in the Primary I/O and Secondary I/O decodings. See note 2 for Table 4-14: Access to
Data, Error and Feature Registers Including Duplicate Registers.
Address lines which are not indicated in the decoding above are ignored by the card for accessing
these registers. The primary and secondary modes decode 10 address lines while the contiguous
decoding decodes only 4 address lines on the card.
18 © 1999 PCMCIA/JEIDA
PC CARD ATA SPECIFICATION
NOTES:
1. This register supports word or byte accesses. See note 1 for Table 4-14: Access to Data, Error and
Feature Registers Including Duplicate Registers.
2. This register overlaps the address space of the Data register. See note 1 Table 4-14: Access to Data,
Error and Feature Registers Including Duplicate Registers.
3. This register address is a duplicate address assignment for another register. A duplicate address is not
available in the Primary I/O and Secondary I/O decodings. See note 2 for Table 4-14: Access to Data,
Error and Feature Registers Including Duplicate Registers.
4. Memory accesses to even addresses at offsets between 400H and 7FFH access register 8H.
Accesses to odd addresses at offsets between 400H and 7FFH access register 9H. This 1 KB memory
window to the Data register is provided so that hosts can perform memory to memory block moves to
the Data register when the register lies in memory space. Note that this entire window accesses the
Data register FIFO and does not directly address the data buffer within the card.
Some hosts, such as the 80x86 processors, increment both the source and destination addresses when
executing the memory to memory block move instruction. Some PC Card socket adapters also have
auto incrementing address logic embedded within them. This address window allows these hosts and
adapters to function efficiently.
If memory mapped mode is supported, the card shall be implemented so that the card will respond
at the addresses indicated within the ranges of 0H-0FH and 400H-7FFH from the start of the address
space allocated to the PC Card ATA memory mapped registers as indicated by the CIS Device ID
and JEDEC ID tuples. Additional decoding is permitted to be provided at the discretion of the card
manufacturer.
© 1999 PCMCIA/JEIDA 19
PC CARD ATA SPECIFICATION
5 . S O F T WA R E I N T E R F A C E
This section defines the software requirements and the commands the host sends to the card. The
controller executes the commands and reports the results to the host using the Status register.
(Byte offset)
1 Feature
2 Sector Count
3 Sector Number
4 Cylinder Low
5 Cylinder High
6 1 LBA=0 1 DRV Head
7 Command
© 1999 PCMCIA/JEIDA 21
SOFTWARE INTERFACE
(Byte offset)
1 Feature
2 Sector Count
3 Logical Block Number A7-A0
4 Logical Block Number A15-A8
5 Logical Block Number A23-A16
6 1 LBA=1 1 DRV Logical Block Number A27-A24
7 Command
22 © 1999 PCMCIA/JEIDA
PC CARD ATA SPECIFICATION
6 . I N T E R F AC E PR OT OC OL
Refer to the Logical Interface section of the ANSI ATA Standard for Logical Interface descriptions
with the following exceptions:
a. All references to the PDIAG- and the DASP- signals shall be ignored.
b. Port addressing given in the ANSI ATA Standard I/O Port Functions/Selection Addresses is
replaced by Sections 4.2.3, Feature Register, and 4.3.1, I/O Mapped Addressing, of this
document.
c. The high impedance state of INTRQ is replaced by the interrupts disabled state as described in
Section 3.4, Interrupt Request: IREQ#, of this document.
d. Support for the Index bit (IDX) in the status registers is optional.
e. The host provides drive number configuration of each card by writing bit 4 of the Card's Socket
and Copy register with the value 0 for drive 0 or with the value 1 for drive 1.
f. DMA is not supported by PC Card ATA.
g. PC Card Standard bus timing applies for PC Card ATA.
© 1999 PCMCIA/JEIDA 23
INTERFACE PROTOCOL
24 © 1999 PCMCIA/JEIDA
PC CARD ATA SPECIFICATION
SRST
BSY
Drive 0
tN tB Drive 0
DRDY
Result Drive 0
tU
BSY
Drive 1
tN tB Drive 1
DRDY
Result Drive 1
tU
© 1999 PCMCIA/JEIDA 25
PC CARD ATA SPECIFICATION
7 . P C C A R D S P E C I F I C C O N S I D E R AT I O N S
© 1999 PCMCIA/JEIDA 27
PC CARD ATA SPECIFICATION
8 . A P P E N D I X A : I M P L E M E N T AT I O N N O T E S
© 1999 PCMCIA/JEIDA 29
APPENDIX A: IMPLEMENTATION NOTES
a) If byte granularity of I/O port address decoding is supported by the socket, the socket would
be programmed to enable the PC Card ATA mass storage card only for I/O addresses 1F0
through 1F7H and 3F6H for a Primary address conflict. For a Secondary address conflict, the
socket would be programmed to enable only I/O addresses 170 H through 177H and 376H to the
card.
b) If the PC Card ATA mass storage card provides an additional Primary or Secondary
configuration of the card which does not respond to accesses to I/O locations 3F7H or 377H, that
configuration should be selected in preference to the configuration which also includes 3F7H or
377H.
This method requires that either the socket or the PC Card ATA mass storage card have the
ability to selectively disable port 3F7H or 377H while keeping the other addresses in the
Primary or Secondary address range active. This method also requires that the host software
shall not attempt to use information in the Drive Address register.
4. If socket hardware in the system is designed specifically to avoid this conflict then it shall be
able to selectively force the socket's system data bus signal D7 to be in high impedance and the
PC Card's IOIS16# signal (IOCS16# on the host ISA or EISA bus) to treated as negated during
accesses to I/O address 3F7H or 377H. This feature would be used when PC Card ATA mass
storage card is installed. If a floppy disk controller PC Card is permitted to be installed in the
system, then each socket must also have the ability to force the socket's system data bus signal
lines D6 through D0 to be in high impedance and the card's IOIS16# signal to treated as
negated during accesses to I/O address 3F7H or 377H.
This method requires special socket hardware. This method does not require any special
treatment or modifications to existing software accessing the drive at the primary addresses.
30 © 1999 PCMCIA/JEIDA
PC CARD ATA SPECIFICATION
9 . A P P E N D I X B : C A R D I N F O R M AT I O N
ST R U C T U R E
© 1999 PCMCIA/JEIDA 31
APPENDIX B: CARD INFORMATION STRUCTURE
card are also permitted. For details on the tuple structure please refer to the Metaformat
Specification.
32 © 1999 PCMCIA/JEIDA
PC CARD ATA SPECIFICATION
© 1999 PCMCIA/JEIDA 33
P C C A R D S TA N D A R D
Volume 9
XIP Specification
PCMCIA
JEIDA
©1999, PCMCIA/JEIDA PCMCIA HAS BEEN NOTIFIED BY
All rights reserved. CERTAIN THIRD PARTIES THAT
THE IMPLEMENTATION OF THE
No part of this publication may be STANDARD WILL REQUIRE A
reproduced, stored in a retrieval LICENSE FROM THOSE THIRD
system, or transmitted, in any form or PARTIES TO AVOID
by any means, mechanical, INFRINGEMENT OF THEIR
electronic, photocopying, recording RIGHTS. PCMCIA HAS OBTAINED
or otherwise, without prior written FROM SOME, BUT NOT ALL, OF
permission of PCMCIA and JEIDA. THOSE PARTIES A GRANT OF
Printed in the United States of IMMUNITY THAT PCMCIA WILL
America. EXTEND TO YOU, CONTINGENT
PCMCIA (Personal Computer UPON YOUR ENTERING INTO
Memory Card International AND DELIVERING TO PCMCIA
Association) THE RECIPROCAL GRANT OF
2635 North First Street, Suite 209 IMMUNITY AGREEMENT
San Jose, CA 95134 USA CONTAINED ELSEWHERE IN
+1-408-433-2273 THIS STANDARD.
+1-408-433-9558 (Fax) IMPORTANT:
JEIDA (Japan Electronic Industry In order to receive the Grant of
Development Association) Immunity, the owner of this
Kikai Shinko Kaikan, 3-5-8, Shibakoen Standard must sign and return the
Minato-ku, Tokyo 105, JAPAN enclosed Registration Card to:
+81-3-3433-1923 PCMCIA
+81-3-3433-6350 (Fax) 2635 North First Street, Suite 209
San Jose, CA 95134 USA
The PC Card logo and PC Card are
trademarks of PCMCIA, registered in NEITHER PCMCIA NOR JEIDA
the United States. The PC Card logo MAKES ANY WARRANTY,
and design are trademarks of JEIDA, EXPRESS OR IMPLIED, WITH
registered in Japan. RESPECT TO THE STANDARD,
INCLUDING AS TO NON-
INFRINGEMENT,
MERCHANTABILITY OR FITNESS
FOR A PARTICULAR PURPOSE.
THIS STANDARD IS PROVIDED TO
YOU ÒAS IS.Ó
CONTENTS
1. Introduction ___________________________________________ 1
1.1 Purpose................................................................................................................................1
1.2 Scope....................................................................................................................................1
1.3 Related Documents .............................................................................................................1
1.4 Data Sizes............................................................................................................................2
2. Overview ______________________________________________ 3
2.1 SXIP, LXIP and EXIP...........................................................................................................3
2.1.1 Hardware support for EXIP ..................................................................................................................................................3
2.1.2 Hardware support for LXIP ..................................................................................................................................................3
2.1.3 Hardware support for SXIP...................................................................................................................................................3
6. Appendices __________________________________________ 39
6.1 XIP Equate Values.............................................................................................................39
6.1.1 Summary of XIP Function Codes .......................................................................................................................................3 9
6.1.2 Summary of XIP Status Codes ............................................................................................................................................4 0
iv © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
© 1999 PCMCIA/JEIDA v
XIP SPECIFICATION
TABLES
Table 6-1: XIP API Functions............................................................................................39
Table 6-2: XIP Status Codes .............................................................................................40
1. I N T R OD U C T ION
1.1 Purpose
In order to achieve savings of both RAM and ROM1, it is beneficial to directly execute applications
from ROM, without loading the image of the application into RAM prior to execution. A number of
machines currently offer this capability; however, there is no application-level portability between
these machines. This specification outlines a standard method, hereinafter referred to as eXecute In
Place, or XIP, of achieving this.
This document shall describe the Metaformat tuples, data structures, driver architecture, and the
Application Programming Interface (API) for eXecute In Place (XIP), as well as the architecture and
load format of an XIP-compliant application.
1.2 Scope
This document is intended to provide enough information for software developers to design and
implement XIP applications. It is also intended to provide sufficient information to allow an
implementor to create an XIP implementation.
Ê1 It will be seen that the physical media an XIP application is built into generally has little impact upon the application.
Thus, for the purposes ofthis document, unless otherwise noted, the term ROM will apply also to Flash memory, EEP ROM,
etc.
© 1999 PCMCIA/JEIDA 1
INTRODUCTION
Data sizes for passed parameters within API calls are functions of the particular Operating System
Binding. In general, they tend to follow those in the above table.
2 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
2. O V E R V IE W
Unlike other sections of the PC Card Standard, this specification is, to a very large extent
dependent upon the host processor class, and upon the host operating system. Thus, much of the
detail to be expected in a document such as this must be relegated to application notes within
appendices, each specific to a particular operating system and processor chip class.
© 1999 PCMCIA/JEIDA 3
XIP SPECIFICATION
3 . XI P PAR T IT ION S
XIP applications are stored, by definition, on XIP partitions. XIP partitions are used only to store XIP
applications, and are entirely distinct from any other partitions, such as FAT or Flash file-system
partitions. In order to ensure that XIP applications may be properly mapped into system memory,
any XIP partition must begin on a 16K boundary, relative to the start of the card. An XIP partition is
required to be an integral number of pages long, and each page of an XIP partition is also required
to be 16K in length. If an XIP partition is not aligned on erase block or device boundaries, data
outside of the XIP partition may be destroyed if the XIP_ERASE_PARTITION function is invoked.
© 1999 PCMCIA/JEIDA 5
XIP PARTITIONS
The XIP_serial_number shall be set on creation of an XIP partition only. It is analogous to a DOS
volume serial number.
The data_structure_version_number field shall be set to 0002H for this release.
All bytes within the xip_header_reserved array shall be set to 0FFH.
The total length of the directory for an XIP partition can be determined by:
directory length = (max_directory_entries) * 32 bytes.
The XIP partition is divided into an integer multiple of 16K fixed-length pages, where each 16K
page is aligned on 16K boundaries. Each 16K region is assigned a page number. The relationship
between page n and the byte offsets, relative to the beginning of an n-byte-long XIP partition, is
illustrated below.
6 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
cannot support adding new XIP applications; Flash or EEPROM XIP partitions could support this
functionality.
Byte Name
0...7 XIP_NAME
8...10 XIP_EXT
11 XIP_STATUS
12...13 XIP_APP_BEGIN
14...15 XIP_APP_OFFSET
16 XIP_APP_TYPE
17 XIP_VERSION_REQD
18..20 XIP_RESERVED
21 XIP_HEADER_CKSUM
22...23 XIP_CREATION_TIME
24...25 XIP_CREATION_DATE
26...27 XIP_FIRST_APP_PAGE
28...31 XIP_SIZE
© 1999 PCMCIA/JEIDA 7
XIP PARTITIONS
If bits 0...2 of the XIP_STATUS are set to 001, than bits 3 and 4 will indicate the structure of the
application. A value of 10 within bits 3 and 4 is invalid.
Bit Definition
0...2 XIP Allocation Status:
111 XIP Directory entry is free to be used to store the next XIP directory entry. The previous XIP
directory entry is the last valid entry in they XIP directory.
011 XIP directory entry and the contents of its associated XIP application are in the process of being
created. Since this XIP directory entry has not yet been completely processed, the application may not
be loaded, as the XIP application code has not been completely copied. However, the
XIP_FIRST_APP_PAGE and XIP_SIZE fields are valid for this directory entry. An XIP utility program
must "close" the XIP directory entry before the application may be loaded.
001 XIP directory entry is allocated and contains a valid XIP application.
000 XIP directory entry had been allocated, but is now deleted. It no longer contains a valid XIP
application. The fields XIP_FIRST_APP_PAGE and XIP_SIZE contain valid data that must be sued when
searching for the next free page within the XIP partition.
8 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
Byte 17 (XIP_VERSION_REQD):
Specifies the version of XIP API Services required for execution.
Bytes 18-20 (XIP_RESERVED):
These bytes are reserved for future use. All reserved bytes must be set to a value of 0FFh.
Byte 21 (XIP_DIREC_CKSUM):
Specifies an 8-bit additive checksum of the 32 bytes of this XIP directory entry, exclusive of this
byte. Note that, in order to maintain compatibility with XIP Version 1.0, especially in cases where
bytes 16 or 17 are 0FFh, 0FFh must be considered a valid entry, even when a different value is
reached via calculation.
Bytes 22-23 (XIP_CREATION_TIME):
Specifies the time that this XIP directory entry was created, or added, to the XIP partition. For media
such as flash memory, it is not possible to "update" an XIP directory entry without first erasing the
entire XIP partition. Therefore, the time only refers to the time that the XIP application was added to
the XIP directory. The format of the create time is DOS compatible and is described in the following
table.
Bytes 24-25 (XIP_CREATION_DATE):
Specifies the date that this XIP directory entry was created, or added, to the XIP partition. For media
such as flash memory, it is not possible to "update" an XIP directory entry without first erasing the
entire XIP partition. Therefore, the date only refers to the time that the XIP application was added to
the XIP directory. The format of the create date is DOS compatible and is described in the following
table.
Bits Definition
0...4 Day of month (1-31)
5...8 Month (1-12)
9...15 Year (relative to 1980)
© 1999 PCMCIA/JEIDA 9
XIP SPECIFICATION
4. XI P DE V IC E DR IV E R AR C H IT E C T U R E
XIP functions are to be provided by a high-level device driver. The intent of this specification is that
this driver be reliant upon Card Services for lower level functionality. Card Services is in turn
dependent upon Socket Services. The XIP device driver simply manages the data in the XIP
partition, and provides the required services. Hardware-related services, such as those needed to
manipulate mapping hardware, are intended to be provided by Card Services. However, especially
for systems with limited resources, there is no intent to prohibit an XIP driver which does not rest
upon any underlying level of software.
XIP Device Drivers must be able to provide all functionality listed below as Common, and are
assured of being able to execute SXIP applications. Additionally, they may provide services listed
below as elements of the Write, LXIP, or EXIP functionality sets.
© 1999 PCMCIA/JEIDA 11
XIP DEVICE DRIVER ARCHITECTURE
For the XIP drivers, any Socket Services and Card Services drivers are to be loaded before the XIP
driver. During initialization of the XIP device driver, information about the system's mapping
capabilities, which can only be provided by these drivers, is required. There is no requirement that
Memory Technology Drivers be loaded before the XIP driver.
12 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
5 . X I P A P P L I C AT I O N S P R O G R A M M I N G
I N T E R F AC E
In order for an application to use the XIP device driver, the device driver must obviously be present
and installed, and the XIP application must be able to determine both the presence and entry point
of the driver. Furthermore, additional device drivers should be allowed to chain into the current
driver to provide functionality not granted by the original driver. The specific mechanics of
interacting with the XIP device driver are, of course, dependent on the Operating System Binding;
however, the following generalities should be observed.
© 1999 PCMCIA/JEIDA 13
XIP APPLICATIONS PROGRAMMING INTERFACE
The details of how the parameters map to the calling sequence (i.e., parameter order, register based
parameters, et. al.) is an Operating System Binding and implementation issue.
Each function implicitly returns it's result as a binary success(true)/fail(false) indicator. Other return
values, and the meanings thereof, hinge on the function result. If the function fails (returns FALSE),
the FUNCTION returns a status code, and the other variables are undefined, unless otherwise
noted. If the function is successful (return TRUE), the FUNCTION variable is undefined.
Also note that variables may "overlay" one another; i.e., a variable with one meaning on input may
have another meaning on output, or a variable may have different meanings or structure
dependent upon the contents of other variables.
14 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
Purpose:
This function returns the version of the XIP driver installed in the system, as well as a bit flag
indicating the capabilities of the system. An application uses this function to determine if the set of
XIP functions it requires are supported by this XIP driver.
Calling Parameters:
function XIP_GET_VERSION
Results if successful:
version Contains the XIP driver's version number in binary coded decimal (BCD)
format. The upper four bits contain the integer digit of the version number.
The lower four bits contain the fractional digit of version number. For
example, version 1.10 is represented as 010Ah.
When checking for a version number, an application should check for a
version number or greater. Vendors may use the fractional digit to indicate
enhancements or corrections to their XIP drivers. Therefore, to allow for
future versions of XIP drivers, an application shall not depend on an exact
version number.
functionality A bitfield indicating which XIP functionality set(s) are supported by this driver.
Values are as in the table below.
Bits Description
7...3 Reserved (Set to 0)
2 Supports Write functionality set (if 1)
1 Supports EXIP functionality set (if 1)
0 Supports LXIP functionality set (if 1)
Status Codes:
XIP_STAT_UNKNOWN_ERROR
© 1999 PCMCIA/JEIDA 15
XIP APPLICATIONS PROGRAMMING INTERFACE
Purpose:
This function returns an array of addresses for each mappable XIP page in a system. The array is
sorted in ascending segment order.
Calling Parameters:
function XIP_GET_MAP_SEGS
XIP_mappable_array An un-initialized array. The first element of the array gives the acceptable
length of the array, not including the first element (thus a first word of 0,
although legal, would cause no change to the contents of this array). The
remainder of the array will be filled in by the function.
Results if successful:
XIP_mappable_array The array will have been filled in with the segment address of each mappable
page in the system, up to the number of entries allowed in the array. The
array will be sorted in ascending order, with the length of the array first, the
lowest-valued page first, etc. SXIP environments will have only one entry in
the array.
mappable_array_length Actual number of mappable pages in the system. If an application wished to
be precise, it could call this function with *XIP_mappable_array set to 0,
allocate mappable_array_length+1 words of memory, then call this function
again with XIP_mappable_array set to the newly allocated memory, and
*XIP_mappable_array set to mappable_array_length.
Status codes
XIP_STAT_UNKNOWN_ERROR
16 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
Purpose:
This function returns an array of XIP partition IDs currently accessible in the system. XIP partition
IDs are tokens used to uniquely identify each XIP partition. Token values are implementation
specific, and are valid only after this function is called.
Partition IDs are assigned at initialization time by the XIP driver. These IDs are valid only during a
given system boot. Thus, the ID for a specific partition may change from boot to boot. Normally, IDs
will not be reassigned to a different partition once they have been assigned to a specific partition,
however, the Disable Partition ID function can be used to allow a partition ID to be reassigned.
This function will not return a partition ID that has been disabled. However, it may return new
partition IDs that correspond to XIP partitions on a newly inserted card.
Calling Parameters:
function XIP_GET_PARTITIONS
partition_ids_array An un-initialized array. The first element of the array gives the acceptable
length of the array, not including the first element (thus a first word of 0,
although legal, would cause no change to the contents of this array). The
remainder of the array will be filled in by the function.
Results if successful:
partition_ids_array The array will have been filled in with the partition IDs of each XIP partition
present in the system. No order to the resulting array may be assumed, other
than that the length of the array will be first.
partition_array_length Actual number of partitions in the system. If an application wished to be
precise, it could determine the length of the full array, and then allocate and fill
the array, analogous to the method given in Get XIP Mappable Segments.
Status codes
XIP_STAT_UNKNOWN_ERROR
© 1999 PCMCIA/JEIDA 17
XIP APPLICATIONS PROGRAMMING INTERFACE
Purpose:
This function returns the range of handle values that the XIP driver manages. The maximum range
of handle values is a detail of any particular XIP Operating System Binding.
The XIP driver assigns a unique handle value, in the specified range, to every XIP application
present in the XIP directory. An XIP application uses a handle as a parameter whenever it calls the
XIP driver to perform a map, unmap, or copy function.
Calling Parameters:
function XIP_GET_HANDLE_RANGE
Results if successful:
XIP_first_handle This is the value of the first handle managed by the XIP driver. Shall be in the
range 8000H through 8FFFh, inclusive.
XIP_last_handle This is the value of the last handle managed by the XIP driver. This value
must obviously be greater than that value returned as XIP_first_handle. Shall
be in the range 8000H through 8FFFH, inclusive.
total_handles The maximum number of handles that this XIP driver is capable of
supporting.
Status Codes:
XIP_STAT_UNKNOWN_ERROR
18 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
Purpose:
This function maps or unmaps one, several, all, or none of the logical pages associated with a
handle into as many mappable segments as the system supports. Both mapping and unmapping
pages may be done in the same invocation. Mapping or unmapping no pages is not considered an
error. If a request to map or unmap zero pages is made, nothing is done and no error is returned.
The segment map array passed to this function does not have to have any special order with respect
to mappable_segment elements.
The function should allow mapping a specific logical page at more than one mappable segment
address, provided that the hardware supports this. This same "feature" is also a part of the LIM
specification.
Calling Parameters:
function XIP_MAP_HANDLE
handle Handle of the XIP application owning the pages to be mapped in. This handle
is obtained through any of the search functions listed below.
partition Contains the ID of the partition containing the indicated XIP application
map_count Contains the number of entries in the seg_map_array. This argument is
ignored and assumed 1 in SXIP environments.
seg_map_array An array of seg_map structures, defined as:
struct seg_map_struct {
int log_page_number ;
int mappable_segment ;
};
log_page_number contains the number of the logical page to be mapped.
Logical pages are numbered zero relative with respect to the beginning of the
XIP application with which they are associated. Therefore, the number for a
logical page can range from zero to one less than the number of logical pages
allocated to the handle.
If the logical page number is set to -1, the associated mappable_segment is
unmapped. Unmapping a page makes it inaccessible.
mappable_segment contains the segment address within the system
memory address space at which the logical page is to be mapped. This
segment address must correspond exactly to a mappable segment address,
as returned via the XIP_GET_MAP_SEGS function.
Results:
map_count Contains the number of entries actually mapped, regardless of the function
status return. If the function fails, this number of pages has been mapped, and
may need to be unmapped by the application. The XIP driver will map the
pages sequentially, so if only n pages have been mapped, it may be assumed
that the first n pages have been mapped.
© 1999 PCMCIA/JEIDA 19
XIP APPLICATIONS PROGRAMMING INTERFACE
Status Codes:
XIP_STAT_HANDLE_NFOUND The specified XIP handle could not be found, and is probably corrupt. No
pages have been mapped.
XIP_STAT_BAD_PAGE One or more of the logical pages to be mapped is out of the range of logical
pages allocated to the given XIP handle.
XIP_STAT_BAD_SEGMENT One or more of the segment addresses is invalid, or, the map_count specified
exceeds the number of mappable segments in the system.
XIP_STAT_BAD_PARTITION The partition specified does not exist.
XIP_STAT_PAGE_MAPPED One or more of the logical pages specified is already mapped at a mappable
segment. The new logical page specified is not mapped.
XIP_STAT_CARD_CHANGED
XIP_STAT_UNKNOWN_ERROR
20 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
Purpose:
The Get XIP Mapping Context Size function returns the storage requirements for the array passed to
the XIP_GET_CONTEXT and XIP_SET_CONTEXT functions. The size returned is implementation-
dependent, but it is explicitly fixed (i.e., the return value of this function will never change).
Clearly, this implies that supplemental XIP device drivers should not intercept this function, or the
XIP_GET_CONTEXT and XIP_SET_CONTEXT functions.
Calling Parameters:
function XIP_GET_CONTEXT_SIZE
Results if Successful:
map_context_size Contains the size of the block that will be transferred to or from the memory
area which an application will supply to the XIP_SET_CONTEXT or
XIP_GET_CONTEXT functions.
Status Codes:
XIP_STAT_UNKNOWN_ERROR
© 1999 PCMCIA/JEIDA 21
XIP APPLICATIONS PROGRAMMING INTERFACE
Purpose:
This function saves the mapping context to the specified buffer. The format and content of the
resultant buffer is strictly implementation dependent.
Calling Parameters:
function XIP_GET_CONTEXT
xip_context A buffer of at least the size given by the XIP_GET_CONTEXT_SIZE function.
Results if successful:
xip_context The buffer contains the state of the XIP mapping hardware. It also contains
any additional information necessary to restore the XIP mapping hardware to
the current state when this function is invoked. The content and size of this
information is vendor specific.
Status Codes:
XIP_STAT_CARD_CHANGED
XIP_STAT_UNKNOWN_ERROR
22 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
Purpose:
This function restores the physical and logical mapping context for all XIP mappable regions to the
state it was in when the specified buffer was filled in via the XIP_GET_CONTEXT function. The
format and content of the buffer is strictly implementation dependent.
Calling Parameters:
function XIP_SET_CONTEXT
xip_context A buffer that has previously been passed to the XIP_GET_CONTEXT
function. The buffer is of at least the size given by the
XIP_GET_CONTEXT_SIZE function.
Results if successful:
none
Status Codes:
XIP_STAT_BAD_MAP_ARRAY The contents of the xip_context buffer have been corrupted, or an invalid
pointer has been passed to the function.
XIP_STAT_CARD_CHANGED
XIP_STAT_UNKNOWN_ERROR
© 1999 PCMCIA/JEIDA 23
XIP APPLICATIONS PROGRAMMING INTERFACE
Purpose:
This function searches the XIP directory for a specific XIP application. If the name is found, the
function returns only the handle associated with the name and the number of logical pages allocated
to it.
The XIP handle returned by the XIP driver always specifies the same XIP application within the XIP
partition. For example, if you searched the XIP directory six times for an existing XIP application
named "WORDPROC.XIP", the XIP driver would return the same handle value each time because
the position of the XIP application within the XIP directory structure had not changed.
An XIP handle is somewhat analogous to an index into an array of fixed length structures. The
handle returned may be used by as many processes as need access to the XIP application.
Calling Parameters:
function XIP_SEARCH
partition The partition ID of the XIP directory to be searched
application_name The name of the application to be searched for. The name must be in 8.3
format, i.e., an 8-letter name, followed by the 3 letter extension. If either the
name is shorter than 8 characters, or the extension is shorter than 3
characters, they must be padded with spaces on the right to the appropriate
size.
Results if successful:
handle The value of the handle assigned to the specified XIP application.
page_count The number of logical pages allocated to the XIP application. This value can
be zero.
Status Codes:
XIP_STAT_APP_NOT_FOUND
XIP_STAT_BAD_APP_NAME
XIP_STAT_BAD_PARTITION
XIP_STAT_CARD_CHANGED
XIP_STAT_UNKNOWN_ERROR
24 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
Purpose:
This function searches the XIP directory for a specific XIP application. If the name is found, the
function returns the full XIP directory information associated with the name, as well as the handle
and number of logical pages allocated to the application.
This function is very similar to the XIP_SEARCH function, save that it fills in the entire XIP
directory entry if the specified application is found.
Calling Parameters:
function XIP_SEARCH_FULL
partition The partition ID of the XIP directory to be searched
XIP_dir_entry A structure of the form:
struct xip_dir_entry_struct {
char xip_name[8];
char xip_ext[3];
short int xip_status;
int xip_app_begin;
int xip_app_offset;
short int xip_app_type;
short int xip_version_reqd;
char xip_reserved[3];
short int xip_header_cksum;
int xip_creation_time;
int xip_creation_date;
int xip_first_app_page;
long int xip_size;
}
The xip_name and xip_ext field must be filled in, and padded on the right with
spaces. All other fields will be ignored.
Results if successful:
XIP_dir_entry The entire structure will be filled in with the appropriate values, copied from
the XIP directory.
handle The value of the handle assigned to the specified XIP application.
page_count The number of logical pages allocated to the XIP application. This value may
be zero.
Status Codes:
XIP_STAT_APP_NOT_FOUND
XIP_STAT_BAD_PARTITION
XIP_STAT_CARD_CHANGED
XIP_STAT_UNKNOWN_ERRO
R
© 1999 PCMCIA/JEIDA 25
XIP APPLICATIONS PROGRAMMING INTERFACE
Purpose:
This function returns the full XIP directory information associated with the first active entry in the
XIP directory in the specified partition, as well as the handle and number of logical pages for that
XIP application.
Calling Parameters
function XIP_SEARCH_FIRST
partition Contains the ID of the partition containing the XIP directory
XIP_dir_entry An XIP_dir_entry_struct structure. The structure need not be initialized
Results if successful:
XIP_dir_entry The entire structure will be filled in with the appropriate values, copied from
the XIP directory.
handle The value of the handle assigned to the specified XIP application.
page_count The number of logical pages allocated to the XIP application. This value may
be zero.
Status Codes:
XIP_STAT_APP_NOT_FOUND
XIP_STAT_BAD_PARTITION
XIP_STAT_CARD_CHANGED
XIP_STAT_UNKNOWN_ERROR
26 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
Purpose:
This function returns the full XIP directory information associated with the next (relative to the
given handle) active entry in the XIP directory in the specified partition, as well as the handle and
number of logical pages for that XIP application.
Calling Parameters
function XIP_SEARCH_NEXT
partition Contains the ID of the partition containing the XIP directory.
XIP_dir_entry An XIP_dir_entry_struct structure. The structure need not be initialized.
handle Contains the value of the handle returned from a XIP_SEARCH_FIRST or
XIP_SEARCH_NEXT function call. The XIP driver uses this handle value to
begin the search for the next active entry in the XIP directory.
Results if successful:
XIP_dir_entry The entire structure will be filled in with the appropriate values, copied from
the XIP directory.
handle The value of the handle assigned to the specified XIP application
page_count The number of logical pages allocated to the XIP application. This value may
be zero.
Status Codes:
XIP_STAT_HANDLE_NFOUND The handle passed to the function is invalid. The application has probably
corrupted the XIP handle previously obtained.
XIP_STAT_APP_NOT_FOUND No more active entries were found in the XIP directory.
XIP_STAT_BAD_PARTITION
XIP_STAT_CARD_CHANGED
XIP_STAT_UNKNOWN_ERROR
© 1999 PCMCIA/JEIDA 27
XIP APPLICATIONS PROGRAMMING INTERFACE
Purpose:
This function allows one to create a new XIP directory entry, most probably in the process of adding
a new XIP application to the XIP partition. One would use this function to name the XIP application,
and allocate space for it within the XIP partition. One would subsequently map the allocated pages
into memory, and then copy the new XIP application into them.
Calling Parameters:
function XIP_ADD_ENTRY
partition Contains the ID of the partition containing the XIP directory.
XIP_dir_entry An XIP_dir_entry_struct structure. The structure must be initialized, with the
exception of the XIP_status field.
Results if successful:
handle The value of the handle assigned to the newly added XIP application.
Status:
XIP_STAT_NO_HANDLES
XIP_STAT_NO_PAGES
XIP_STAT_NO_FREE_PAGES
XIP_STAT_NAME_EXISTS
XIP_STAT_BAD_APP_NAME
XIP_STAT_NO_WRITE
XIP_STAT_BAD_PARTITION
XIP_STAT_NO_DIR_SPACE
XIP_STAT_CARD_CHANGED
XIP_STAT_COPY_ERROR
XIP_STAT_NO_WRITE_MEDIA
XIP_STAT_UNKNOWN_ERROR
28 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
Purpose:
This function allows an application to copy data from a buffer into one page allocated to an XIP
application. The XIP driver should do the copying because the type of programmable memory
which the XIP application is being copied into may not respond to simple memory writes issued by
an application program.
Updates to existing memory pages may be made if the card technology and system supports write
access.
Calling Parameters:
XIP (*function, partition, logical_page_number, write_count, handle,
*char_buffer)
function XIP_COPY_PAGE
partition Contains the ID of the partition which is to have a page copied into it.
logical_page_number The logical page number of the given XIP application to write. If logical page
zero is specified, the buffer is copied to the offset in the XIP page specified in
the XIP_OFFSET field of the directory entry for this application.
write_count Number of bytes to write to the XIP page.
handle The value of the handle assigned to the newly added XIP application. This is
the handle value returned by the "Add XIP Directory Entry" function.
char_buffer Contains a far pointer to an area of RAM memory which contains the XIP
application code or data to be copied into the logical page specified.
Results:
None
Status Codes:
XIP_STAT_HANDLE_NFOUND
XIP_STAT_BAD_PAGE
XIP_STAT_NO_WRITE
XIP_STAT_BAD_PARTITION
XIP_STAT_TOO_MANY_BYTES
XIP_STAT_CARD_CHANGED
XIP_STAT_COPY_ERROR The function failed due to an error in copying. The media supports this
function but the logical page to which the buffer is being copied to is not blank,
and the data cannot be correctly copied.
XIP_STAT_NO_WRITE_MEDIA
XIP_STAT_UNKNOWN_ERROR
© 1999 PCMCIA/JEIDA 29
XIP APPLICATIONS PROGRAMMING INTERFACE
Purpose:
This function deletes an XIP application from the XIP directory.
Calling Parameters:
function XIP_DELETE_ENTRY
partition Contains the ID of the partition containing the XIP application to be deleted.
application_name The name of the application to be searched for. The name must be in 8.3
format, i.e., an 8-letter name, followed by the 3 letter extension. If either the
name is shorter than 8 characters, or the extension is shorter than 3
characters, they must be padded on the right with spaces to the appropriate
size.
Results:
None
Status Codes:
XIP_STAT_APP_NOT_FOUND
XIP_STAT_BAD_APP_NAME
XIP_STAT_NO_WRITE
XIP_STAT_BAD_PARTITION
XIP_STAT_CARD_CHANGED
XIP_STAT_NO_WRITE_MEDIA
XIP_STAT_UNKNOWN_ERROR
30 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
Purpose:
This function allows an XIP utility to erase the entire contents of an XIP partition in preparation for
reuse. The entire XIP partition must be aligned on erase block or device boundaries for this function
to erase only the XIP partition, and nothing else.
Calling Parameters:
function XIP_ERASE_PARTITION
partition Contains the ID of the partition to be erased.
Results:
None
Status Codes:
XIP_NO_WRITE
XIP_STAT_BAD_PARTITION
XIP_STAT_CARD_CHANGED
XIP_STAT_NO_WRITE_MEDIA
XIP_STAT_UNKNOWN_ERROR
© 1999 PCMCIA/JEIDA 31
XIP APPLICATIONS PROGRAMMING INTERFACE
Purpose:
This function ends the process of creating a new XIP entry. Until this function is executed, a newly-
created XIP application cannot be executed. The function "activates" the newly added XIP
application by setting the status bits of the corresponding XIP directory entry to a value indicating
that it may be loaded and executed.
Calling Parameters:
function XIP_CLOSE_ENTRY
partition Contains the ID of the partition containing the XIP directory entry which is to
be closed.
handle The value of the handle assigned to the newly created XIP application.
Results:
None
Status Codes:
XIP_STAT_HANDLE_NFOUND
XIP_STAT_NO_WRITE
XIP_STAT_BAD_PARTITION
XIP_STAT_CARD_CHANGED
XIP_STAT_NO_WRITE_MEDIA
XIP_STAT_UNKNOWN_ERROR
32 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
Purpose:
This function causes the specified XIP application to be mapped in and executed.
Calling Parameters:
function XIP_EXEC
partition Contains the ID of the partition containing the XIP directory entry which is to
be mapped.
app_name The ASCIIZ name of the application to be executed.
Results if successful:
return_code Exit code set by the specified application.
Status Codes:
XIP_STAT_APP_NOT_EXEC
XIP_STAT_APP_NOT_FOUND
XIP_STAT_MAP_HWARE_BUSY
XIP_STAT_BAD_PARTITION
XIP_STAT_CARD_CHANGED
XIP_STAT_UNKNOWN_ERROR
© 1999 PCMCIA/JEIDA 33
XIP APPLICATIONS PROGRAMMING INTERFACE
Purpose:
This function maps memory PC Cards into the system's extended address space. The specified
application on the memory PC Card will appear at the address range returned by this function. A
system may support simultaneous mapping of multiple segments.
Calling Parameters:
function XIP_MAP_EXTENDED
partition Contains the ID of the partition containing the XIP directory entry which is to
be mapped.
handle The value of the handle assigned to the XIP application.
Results if successful:
system_address System memory address corresponding to the specified application.
map_count The size, in bytes, of the block mapped system memory.
Status Codes:
XIP_STAT_MAP_HWARE_BUSY
XIP_STAT_NO_EXIP_DRIVER
XIP_STAT_NO_EXIP
XIP_STAT_BAD_PARTITION
XIP_STAT_CARD_CHANGED
XIP_STAT_UNKNOWN_ERROR
34 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
Purpose:
This function removes the mapping of the specified application. The specified application will no
longer appear in the address space.
Calling Parameters:
function XIP_UNMAP_EXTENDED
partition Contains the ID of the partition containing the XIP directory entry which is to
be mapped.
handle The value of the handle assigned to the XIP application.
Results:
None
Status Codes:
XIP_STAT_HANDLE_NFOUND
XIP_STAT_NO_EXIP_DRIVER
XIP_STAT_NO_EXIP
XIP_STAT_BAD_PARTITION
XIP_STAT_CARD_CHANGED
XIP_STAT_UNKNOWN_ERROR
© 1999 PCMCIA/JEIDA 35
XIP APPLICATIONS PROGRAMMING INTERFACE
Purpose:
This function returns the ID of the partition onto which the specified system address is currently
mapped.
Calling Parameters:
function XIP_XLATE_PARTITION
system_address The system address to be translated to a partition ID.
Results if successful:
partition partition which is mapped to the specified system address.
Status Codes:
XIP_STAT_ADDR_NOT_MAPPED
XIP_STAT_CARD_CHANGED
XIP_STAT_UNKNOWN_ERROR
36 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
Purpose:
This function returns the number of the slot that contains the specified partition.
Calling Parameters:
function XIP_GET_SLOT
partition The ID of the partition to be investigated.
Results if successful:
slot The slot number that holds the specified partition. Note that the slot number is
vendor specific.
Status Codes:
XIP_STAT_BAD_PARTITION
XIP_STAT_CARD_CHANGED
XIP_STAT_UNKNOWN_ERROR
© 1999 PCMCIA/JEIDA 37
XIP APPLICATIONS PROGRAMMING INTERFACE
Purpose:
This function marks a partition ID as invalid and frees it for future reassignment to an XIP partition.
Calling Parameters:
function XIP_DISABLE_PARTITION
partition Partition ID of the partition to be disabled.
Results:
None
Status Codes:
XIP_STAT_BAD_PARTITION
XIP_STAT_UNKNOWN_ERROR
38 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
6. AP P E N D IC E S
© 1999 PCMCIA/JEIDA 39
APPENDICES
40 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
6.2.1 Introduction
This appendix gives details for implementation and utilization of a XIP Operating System Binding
(OSB) for DOS. The scope of this implementation is limited to SXIP and LXIP only.
In general, the XIP Operating System Binding for DOS is quite straightforward. One point of
confusion may arise with parameter passing; as the XIP OSB for DOS is a register-based API,
distinctions between passing by value and passing by reference may become somewhat blurred,
and there is naturally some overlaying of parameters within API functional definitions (i.e., a
particular register is used as one variable on entry to the API function, and another on exit). Context
should resolve the confusion.
© 1999 PCMCIA/JEIDA 41
APPENDICES
42 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
© 1999 PCMCIA/JEIDA 43
APPENDICES
44 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
© 1999 PCMCIA/JEIDA 45
APPENDICES
46 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
© 1999 PCMCIA/JEIDA 47
APPENDICES
48 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
© 1999 PCMCIA/JEIDA 49
APPENDICES
If DOS does not return an error status, one can assume that either a device with the name
"XIP$$$$$" is installed, or a file with this name is on the current disk drive. Proceed to step 4.1.4,
otherwise, proceed to the next step.
1. If DOS returned a "too many open files" status, one can modify one's application so that it opens
the XIP device before it opens any other files. The XIP handle is not used after the entry point is
obtained. If this was not the error one's application received, proceed to the next step.
2. If DOS returned a "file/path not found", the XIP-device driver is not installed. If one's
application requires the XIP-device driver, there is only one way to correct the problem. The
user must install the XIP-device driver, modify the CONFIG.SYS file to reflect the installation,
and reboot the system before proceeding. One's application cannot proceed further.
3. Issue a DOS IOCTL "get device data" using the handle obtained in step 1. This function returns
device data that allows one to determine whether XIP is a device or a file.
4. If DOS returns any error status, one may assume that the XIP device driver is not installed. The
user will have to follow the procedure outlined in step 3 to correct the problem.
5. Check that "XIP$$$$$" is a device and not a file with the same name. The device data returned
by the previous DOS function contains the ISDEV bit (DX bit 7). If the ISDEV bit is a 1 then
"XIP$$$$$" is a character device and not a file. If ISDEV is bit is a 0 then "XIP$$$$$" is a file and
there is no XIP-device driver installed. The user will have to follow the procedure outlined in
step 3 to correct the problem. Also, the file named XIP shall be renamed so that the user may
access it after the XIP driver is installed. This should be an extremely rare situation.
6. Issue a DOS "IOCTL read" using the handle obtained in step 1 for a maximum of 4 bytes.
7. If DOS returns any error status, or the driver does not transfer the specified number of bytes,
one may assume that the XIP-device driver is not a compliant driver. The user will have to
follow the procedure outlined in step 3 to correct this problem.
8. Save the device driver entry-point address returned by the Òread.Ó
9. Issue a DOS "close" command using the handle obtained in step 1. Doing so frees up the handle
allocated by the original "open.Ó The handle is not used again.
50 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
open_XIP_driver proc
;------------------------------------------------------------------;
; Open the XIP device. ;
;------------------------------------------------------------------;
mov dx, offset XIP_device_name
; (ds:dx) = far ptr to
; device name string
mov ax, 3D00h ; (ax) = open read-only function
int 21h ; issue device read-only open
jc oXd_02 ; error during device open
;------------------------------------------------------------------;
; Get the info flags for the XIP handle.
;
;------------------------------------------------------------------;
mov bx, ax ; (bx) = handle returned by open
mov ax, 4400h ; (ax) = IOCTL get device data function
int 21h ; issue get device data IOCTL
jc oXd_01 ; error during IOCTL get device info
;------------------------------------------------------------------;
; Test the ISDEV bit in the device info flags. ;
;------------------------------------------------------------------;
test dx, 0080h ; (dx) = file or device data
jz oXd_01 ; XIP is a file, NOT a device
;------------------------------------------------------------------;
; XIP driver is installed in this system. ;
; Return: ;
; (bx) = XIP driver handle. ;
; (CARRY CLEAR) to indicate that the XIP device is ;
; installed. ;
;------------------------------------------------------------------;
clc
ret
;------------------------------------------------------------------;
; XIP driver is not installed in this system. ;
; Close the file named XIP$$$$$. ;
© 1999 PCMCIA/JEIDA 51
APPENDICES
;------------------------------------------------------------------;
; XIP driver is not installed in this system. ;
; Return: ;
; (CARRY SET) to indicate that the XIP device is not ;
; installed. ;
;------------------------------------------------------------------;
oXd_02: stc
ret
open_XIP_driver endp
;------------------------------------------------------------------;
; XIP driver name. ;
;------------------------------------------------------------------;
XIP_device_name db "XIP$$$$$", 0
52 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
;------------------------------------------------------------------;
; Get the XIP API entry point. ;
; (bx) = XIP driver handle returned by open ;
;------------------------------------------------------------------;
mov dx, offset XIP_callback; (ds:dx) = far ptr to XIP callback
buffer
mov cx, 4 ; (cx) = # bytes to transfer (dword size)
mov ax, 4402h ; (ax) = IOCTL read device data
int 21h ; issue IOCTL read device data
jc gXc_01 ; error during IOCTL read device data
;------------------------------------------------------------------;
; Verify that only the XIP API entry point was transferred. ;
;------------------------------------------------------------------;
cmp ax, 4 ; (ax) = # bytes actually transferred
jne gXc_01 ; driver did not transfer the
specified
; # of bytes
;------------------------------------------------------------------;
; XIP API services are available. ;
; Return: ;
; (XIP_callback) = far pointer to far pointer to the XIP API. ;
; (CARRY CLEAR) to indicate that the XIP API services ;
; are available. ;
;------------------------------------------------------------------;
clc
ret
;------------------------------------------------------------------;
© 1999 PCMCIA/JEIDA 53
APPENDICES
;------------------------------------------------------------------;
; XIP API services are not available. ;
; Return: ;
; (CARRY SET) to indicate that the XIP API services are ;
; are not available. ;
; ;
;------------------------------------------------------------------;
gXc_02: stc
ret
get_XIP_callback endp
;------------------------------------------------------------------;
; XIP callback storage. ;
;------------------------------------------------------------------;
XIP_callback dd ?
54 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
;------------------------------------------------------------------;
; Get the current XIP API entry point and set a new XIP ;
; API entry point. ;
; If XIP API services are available ;
; CARRY CLEAR ;
; (bx) = handle for XIP device driver get/set calls;
; (XIP_callback) = far pointer to far pointer to the XIP API ;
; (old_XIP_ent_pt) = address of the current XIP API entry point.
;
; (new_XIP_ent_pt) = address of the new XIP API entry point. ;
; else ;
; CARRY SET ;
;--------------------------------------------------------------------;
set_XIP_callback proc
;--------------------------------------------------------------------;
; Open the XIP driver and get the XIP callback. ;
;--------------------------------------------------------------------;
call get_XIP_callback ; get XIP callback
jc sXc_01 ; could not get the XIP callback
;------------------------------------------------------------------;
; Save the address of the current XIP API entry point so that ;
; it can be restored later. The example assumes that the old ;
; XIP entry point is accessible via the example code segment. ;
;------------------------------------------------------------------;
les di, XIP_callback ; (es:di) = far ptr to far ptr
; to XIP API entry point
les di, dword ptr es:[di] ; (es:di) = far ptr XIP entry
; point address
mov word ptr cs:old_XIP_ent_pt[0], di
mov word ptr cs:old_XIP_ent_pt[2], es
; (old_XIP_ent_pt) = current XIP entry point address
;------------------------------------------------------------------;
; Initialize a far pointer in a buffer so that it points to ;
; the new XIP API entry point. ;
© 1999 PCMCIA/JEIDA 55
APPENDICES
;------------------------------------------------------------------;
mov word ptr new_XIP_ent_pt[0], offset XIP_trap
mov word ptr new_XIP_ent_pt[2], cs
; (new_XIP_ent_pt) = new XIP entry point address
;------------------------------------------------------------------;
; Send the new XIP API entry point to the XIP driver. ;
; (bx) = handle returned by get_XIP_callback ;
;------------------------------------------------------------------;
mov dx, offset new_XIP_ent_pt
; (ds:dx) = far ptr to new XIP entry point buffer
mov cx, 4 ; (cx) = # bytes to transfer (dword size)
mov ax, 4403h ; (ax) = IOCTL write device data
int 21h ; issue IOCTL write device data
jc gXc_01 ; error during IOCTL read device data
;------------------------------------------------------------------;
; New XIP entry point has been set. ;
; Return: ;
; (bx) = handle for future XIP device driver get/set calls ;
; (CARRY CLEAR) to indicate that the XIP API services are ;
; available. ;
;------------------------------------------------------------------;
clc
ret
;------------------------------------------------------------------;
; XIP API services are not available. ;
; Return: ;
; (CARRY SET) to indicate that the XIP API services are ;
; not available. ;
;------------------------------------------------------------------;
sXc_01: stc
ret
set_XIP_callback endp
;------------------------------------------------------------------;
; New XIP entry point storage. ;
;------------------------------------------------------------------;
new_XIP_ent_pt dd ?
;------------------------------------------------------------------;
; Old XIP entry point storage. This example assumes that this ;
; pointer resides in the same CODE segment as do the ;
; set_XIP_callback and XIP_trap procedures. ;
;------------------------------------------------------------------;
old_XIP_ent_pt dd ?
56 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
;------------------------------------------------------------------;
;Chain into the original XIP API entry point. ;
;------------------------------------------------------------------;
jmp dword ptr cs:old_XIP_ent_pt
;------------------------------------------------------------------;
;Your special trap code continues here. ;
;------------------------------------------------------------------;
Xt_Add_XIP_Dir: .
.
Xt_Copy_XIP_Dir: .
.
Xt_Erase_Partn: .
.
;------------------------------------------------------------------;
;Your trap code has finished its work. ;
;------------------------------------------------------------------;
XIP_trap_OK:
clc
ret ; CARRY CLEAR indicates operation passed
© 1999 PCMCIA/JEIDA 57
APPENDICES
XIP_trap_err:
; (ah) = error status of operation
stc ; CARRY SET indicates operation failed
ret
XIP_trap endp
58 © 1999 PCMCIA/JEIDA
XIP SPECIFICATION
4. After this structure is written into the XIP partition, pages 17, 18, 19...23 are now used by the
XIP application named "WORDPROC.XIP.Ó
5. The XIP-copy-utility would then copy the first 16-Kbyte portion of the new XIP application, from
whatever media it was contained on, into a RAM buffer . The XIP-copy-utility then copies this
buffer into the first logical page allocated to the new XIP application by using the "Copy XIP
Page" function. Realize that the type of memory that XIP applications are stored will typically
not be normal RAM. It is necessary to have the XIP driver do the copying because it is aware of
the nature of the memory on the card. The call may even fail if the memory type happens to be
ROM, which is not writable. The call may also fail if a defect is discovered in the memory in the
XIP partition. The important point to remember is that the status of every operation must
always be checked.
6. The process begun in step 4 is repeated for logical pages 1, 2, 3, 4, 5, and 6.
7. The last step required is to use the "Close XIP Directory Entry" function. This essentially makes
the XIP directory entry and its corresponding application "active" so that it can be loaded and
executed.
© 1999 PCMCIA/JEIDA 59
APPENDICES
8. Once all logical pages of the new XIP application have been initialized and the entry has been
closed, the process of adding a new XIP application to the partition is complete. At this point,
the XIP-copy-utility is done and the user would have a new XIP application in their XIP
partition.
60 © 1999 PCMCIA/JEIDA
P C C A R D S TA N D A R D
Volume 10
Guidelines
PCMCIA
JEIDA
©1999, PCMCIA/JEIDA PCMCIA HAS BEEN NOTIFIED BY
All rights reserved. CERTAIN THIRD PARTIES THAT
THE IMPLEMENTATION OF THE
No part of this publication may be STANDARD WILL REQUIRE A
reproduced, stored in a retrieval LICENSE FROM THOSE THIRD
system, or transmitted, in any form or PARTIES TO AVOID
by any means, mechanical, INFRINGEMENT OF THEIR
electronic, photocopying, recording RIGHTS. PCMCIA HAS OBTAINED
or otherwise, without prior written FROM SOME, BUT NOT ALL, OF
permission of PCMCIA and JEIDA. THOSE PARTIES A GRANT OF
Printed in the United States of IMMUNITY THAT PCMCIA WILL
America. EXTEND TO YOU, CONTINGENT
PCMCIA (Personal Computer UPON YOUR ENTERING INTO
Memory Card International AND DELIVERING TO PCMCIA
Association) THE RECIPROCAL GRANT OF
2635 North First Street, Suite 209 IMMUNITY AGREEMENT
San Jose, CA 95134 USA CONTAINED ELSEWHERE IN
+1-408-433-2273 THIS STANDARD.
+1-408-433-9558 (Fax) IMPORTANT:
JEIDA (Japan Electronic Industry In order to receive the Grant of
Development Association) Immunity, the owner of this
Kikai Shinko Kaikan, 3-5-8, Shibakoen Standard must sign and return the
Minato-ku, Tokyo 105, JAPAN enclosed Registration Card to:
+81-3-3433-1923 PCMCIA
+81-3-3433-6350 (Fax) 2635 North First Street, Suite 209
San Jose, CA 95134 USA
The PC Card logo and PC Card are
trademarks of PCMCIA, registered in NEITHER PCMCIA NOR JEIDA
the United States. The PC Card logo MAKES ANY WARRANTY,
and design are trademarks of JEIDA, EXPRESS OR IMPLIED, WITH
registered in Japan. RESPECT TO THE STANDARD,
INCLUDING AS TO NON-
INFRINGEMENT,
MERCHANTABILITY OR FITNESS
FOR A PARTICULAR PURPOSE.
THIS STANDARD IS PROVIDED TO
YOU ÒAS IS.Ó
CONTENTS
1. Introduction____________________________________________1
1.1 Purpose................................................................................................................................1
1.2 Scope....................................................................................................................................1
1.3 Related Documents .............................................................................................................2
1.4 Guidelines Format ...............................................................................................................2
iv ©1999PCMCIA/JEIDA
GUIDELINES
3.2.3.4 Polarization................................................................................................................................................................3 8
3.2.4 Test and Performance Criteria ...........................................................................................................................................3 8
3.2.4.1 Test Sequence..............................................................................................................................................................3 8
3.2.4.2 Standard Test Conditions.....................................................................................................................................4 0
3.2.4.3 Mechanical Performance Criteria Tests...........................................................................................................4 1
3.2.4.3.1 Office Environment........................................................................................................................................4 1
3.2.4.3.2 Harsh Environment .......................................................................................................................................4 1
3.2.4.3.3 Total Insertion Force .....................................................................................................................................4 1
3.2.4.3.4 Total Withdrawal Force..............................................................................................................................4 1
3.2.4.3.5 Single Contact Forces ....................................................................................................................................4 1
3.2.4.3.6 Single Contact Retention Forces ................................................................................................................4 1
3.2.4.3.7 Vibration ...........................................................................................................................................................4 2
3.2.4.3.8 Shock ...................................................................................................................................................................4 2
3.2.4.3.9 Inverse Mating.................................................................................................................................................4 2
3.2.4.3.10 Connector Plug Torque and Flex ............................................................................................................4 2
3.2.4.3.11 Strain Relief....................................................................................................................................................4 3
3.2.4.4 Electrical Performance Criteria..........................................................................................................................4 3
3.2.4.4.1 Contact Resistance (low level) ...................................................................................................................4 3
3.2.4.4.2 Dielectric Withstanding Voltage..............................................................................................................4 3
3.2.4.4.3 Insulation Resistance.....................................................................................................................................4 3
3.2.4.4.4 Current Capacity.............................................................................................................................................4 3
3.2.4.4.5 Insulation Material........................................................................................................................................4 4
3.2.4.4.6 High Voltage Common Mode Isolation.................................................................................................4 4
3.2.4.5 Environmental Performance Criteria...............................................................................................................4 4
3.2.4.5.1 Environmental Conditions.........................................................................................................................4 4
3.2.4.5.2 Moisture Resistance.......................................................................................................................................4 4
3.2.4.5.3 Thermal Shock.................................................................................................................................................4 4
3.2.4.5.4 Durability (High Temperature).................................................................................................................4 4
3.2.4.5.5 Humidity (Normal Condition)..................................................................................................................4 5
3.2.4.5.6 Mixed Flowing Gas.......................................................................................................................................4 5
3.2.4.6 Durability Mating Requirements .......................................................................................................................4 5
3.2.4.6.1 Office Environment........................................................................................................................................4 5
3.2.4.6.2 Harsh Environment .......................................................................................................................................4 6
3.2.5 Contact Position Assignment ..............................................................................................................................................4 7
3.2.5.1 Contact Position Marking .....................................................................................................................................4 7
3.2.5.2 Cable Interconnections............................................................................................................................................4 7
3.2.6 Intermatability .........................................................................................................................................................................4 8
3.2.6.1 Intermateability Assurance ..................................................................................................................................4 8
3.2.7 PC Card Modem 4 Pin I/O for PSTN Connectivity.....................................................................................................4 9
3.2.7.1 Pinout Configuration for 4 Pin PC Card Modem I/O Connector............................................................4 9
3.2.8 PC Card Modem 7 Pin I/O with Audio Interface........................................................................................................4 9
3.2.8.1 Pinout Configuration for 7 Pin PC Card Modem I/O Connector............................................................4 9
3.2.8.2 Electrical Characteristics for the Audio Interface........................................................................................5 0
© 1999 PCMCIA/JEIDA v
CONTENTS
vi ©1999PCMCIA/JEIDA
GUIDELINES
4.7 Guideline for CIS Tuples for 3.3 or 3.3/5 volt Operation................................................97
4.7.1 Introduction...............................................................................................................................................................................9 7
4.7.1.1 Purpose .........................................................................................................................................................................9 7
4.7.1.2 Scope..............................................................................................................................................................................9 7
4.7.2 CIS for a PC Card with 3.3 volt Only Operation..........................................................................................................9 8
4.7.2.1 CISTPL_DEVICE_OC.............................................................................................................................................9 8
4.7.2.2 CISTPL_CONFIG......................................................................................................................................................9 9
4.7.2.3 CISTPL_CFTABLE_ENTRY................................................................................................................................9 9
4.7.2.3.1 First CISTPL_CFTABLE_ENTRY.........................................................................................................100
4.7.2.3.2 Second CISTPL_CFTABLE_ENTRY....................................................................................................101
4.7.3 CIS for a PC Card with 3.3 or 5 volt Operation.........................................................................................................102
4.7.3.1 CISTPL_DEVICE...................................................................................................................................................102
4.7.3.2 CISTPL_DEVICE_OC..........................................................................................................................................102
4.7.3.3 CISTPL_CONFIG...................................................................................................................................................104
4.7.3.4 CISTPL_CFTABLE_ENTRY.............................................................................................................................10 4
4.7.3.4.1 First CISTPL_CFTABLE_ENTRY.........................................................................................................105
4.7.3.4.2 Second CISTPL_CFTABLE_ENTRY....................................................................................................106
4.7.3.4.3 Third CISTPL_CFTABLE_ENTRY ......................................................................................................107
4.7.3.4.4 Fourth CISTPL_CFTABLE_ENTRY.....................................................................................................108
4.7.4 CIS for a CardBus PC Card...............................................................................................................................................109
4.7.4.1 CISTPL_DEVICE_OC..........................................................................................................................................109
4.7.4.2 CISTPL_CONFIG_CB ..........................................................................................................................................109
4.7.4.3 CISTPL_CFTABLE_ENTRY_CB.....................................................................................................................110
FIGURES
Figure 2-1: Card-Side Thermal Icons................................................................................11
Figure 2-2: Host-Side Thermal Icons ................................................................................12
Figure 3-1: PCB Connector................................................................................................14
Figure 3-2: Cable Connector..............................................................................................16
Figure 3-3: Key Size and Locations...................................................................................17
Figure 3-4: Open Standard LAN Connector Key Configuration .....................................18
Figure 3-5: Reserved Connector Key Configuation...........................................................18
Figure 3-6: Reserved Connector Key Configuration .........................................................18
Figure 3-7: Card I/O Connector, 4 Position.....................................................................33
Figure 3-8: Card I/O Connector, 7 Position.....................................................................34
Figure 3-9: Cable Plug Connector, 3 Position...................................................................35
Figure 3-10: Cable Plug Connector, 4 Position .................................................................36
Figure 3-11: Cable Plug Connector, 7 Position .................................................................37
Figure 3-12: Microphone Input with Bias Supply ............................................................51
Figure 3-13: Maximum Dimensions for I/O Connector ..................................................53
Figure 3-14: Type I Extended PC Card Package Dimensions .........................................55
Figure 3-15: Type I Extended (3-D)..................................................................................56
Figure 3-16: Type II Extended PC Card Package Dimensions........................................57
Figure 3-17: Type II Extended (3-D) ................................................................................58
© 1999 PCMCIA/JEIDA ix
GUIDELINES
TABLES
Table 3-1: PCB Connector Dimensions.............................................................................15
Table 3-2: PCB Connector Contact Lengths .....................................................................15
Table 3-3: Cable Connector Dimensions...........................................................................17
Table 3-4: Key Dimensions................................................................................................17
Table 3-5: Recommended Test Sequence..........................................................................19
Table 3-6: Ethernet with AUI and 10BaseT......................................................................26
Table 3-7: Ethernet with AUI and 10 Base 2....................................................................26
Table 3-8: Token Ring UTP and STP ................................................................................27
Table 3-9: ARCNET with UTP and Coax.........................................................................27
Table 3-10: ATM................................................................................................................28
Table 3-11: Card I/O Connector Dimensions ..................................................................33
Table 3-12: Cable I/O Connector Dimensions .................................................................36
Table 3-13: Connectors Per Test Group............................................................................38
Table 3-14: Test Sequence .................................................................................................39
Table 3-15: Cable Type, Point-to-Point Wiring Physical Definition ................................47
Table 3-16: 4 Pin PC Card Modem I/O Connector Pinouts ............................................49
Table 3-17: 7 Pin PC Card Modem I/O Connector Pinouts ............................................50
Table 4-1: Tuple Codes for Fax/Modem Card Example.................................................67
Table 4-2: Device Information Tuple................................................................................67
Table 4-3: Version Product Information Tuple ................................................................68
Table 4-4: Manufacturers ID Tuple..................................................................................69
Table 4-5: Function ID Tuple............................................................................................69
Table 4-6: Function Extension Tuples...............................................................................71
Table 4-7: Configurable Card Tuple.................................................................................72
Table 4-8: Configuration Entry Tuple...............................................................................74
Table 4-9: Power Extension Fields for Tuple 1BH ............................................................74
Table 4-10: Current /Voltage Scales.................................................................................75
Table 4-11: Mantissa Values.............................................................................................75
Table 4-12: No Link Tuple ................................................................................................76
Table 4-13: End of Tuple Chain........................................................................................76
Table 4-14: PC Card ATA Tuple Usage Chart ................................................................79
Table 4-15: Sample Device Info TupleÐ01H Required on PC Card ATA Cards ............83
© 1999 PCMCIA/JEIDA xi
TABLES
Table 4-16: Sample Other Conditions Device Info TupleÐ1CH Required only if 3V VCC or
WAIT# signal is supported by card for Common Memory cycles......................84
Table 4-17: Sample JEDEC ID TupleÐ18H Required for PC Card ATA Cards supporting
Memory Mapped PC Card ATA Registers...........................................................85
Table 4-18: Sample ManufacturerÕs ID TupleÐ20H Optional but recommended, for PC Card
ATA Devices..........................................................................................................85
Table 4-19: Sample Level 1 Version / Product Info TupleÐ15H Recommended ............86
Table 4-20: Function ID Tuple, Disk FunctionÐ21H Required for PC Card ATA Cards86
Table 4-21: Disk Function Extension TupleÐInterface Type Required for PC Card ATA Cards
................................................................................................................................87
Table 4-22: Sample Disk Function ExtensionÐPC Card ATA Parameters Tuple Strongly
Recommended. Required for PC Card Standard Feb. 1995 and Dual Drive PC Card
ATA .......................................................................................................................87
Table 4-23: Sample Configuration Tuple Required for all PC Card ATA cards. ...........88
Table 4-24: Sample Configuration Entry Tuple for Memory Mapped I/O PC Card ATA
Configuration Required if Memory Mapped ATA Registers Supported ............89
Table 4-25: Sample Contiguous I/O Mapped ATA Registers Configuration Entry Tuple
Required for PC Card ATA Devices.....................................................................91
Table 4-26: Sample ATA Primary I/O Mapped Configuration Entry Tuple Required for PC
Card ATA Devices ................................................................................................93
Table 4-27: Sample ATA Secondary I/O Mapped Configuration Entry Tuple Required for PC
Card ATA Devices ................................................................................................95
Table 4-28: Sample No Link Tuple: 14H Optional but recommended, for PC Card ATA
Devices...................................................................................................................96
Table 4-29: Sample End of Tuple Chain: FFH Required for PC Card ATA Devices as the last
tuple on each chain which is not terminated with a link value of FFH. ...............96
xii ©1999PCMCIA/JEIDA
GUIDELINES
1. I N T R OD U C T ION
1.1 Purpose
This document is designed to provide implementation examples and further explanations of the PC
Card Standard in order to:
· enhance the interoperability of PC Card components, including card hardware and software,
system hardware and software, and applications.
· facilitate the development of PC Card hardware and software by increasing the understanding
of the standard by PC Card implementation community.
These guidelines are not requirements made by the PCMCIA/JEIDA standards organizations.
Rather, they are implementation examples, suggestions and hints.
1.2 Scope
Guidelines may address any of the following areas:
1. difficult portions of the standard which could use further explanation
2. implementation hints and considerations which a PC Card designer wishes to make public
3. examples which other implementers could use as starting points for their own designs
4. PC Card product areas for which no PC Card Standards exist, e.g., applications
5. interaction of PC Card designs with other areas, e.g., other buses
Guidelines may cover any PC Card hardware or software, whether system or card-based. A
guideline may restrict itself to a given architecture, operating system, or other implementation
constraint in order to be more effective.
In summary, this guidelines section is meant to be a useful adjutant to the PC Card Standard and
not to be an additional source of such standards.
© 1999 PCMCIA/JEIDA 1
INTRODUCTION
2 ©1999PCMCIA/JEIDA
GUIDELINES
2 . EL E C T R IC AL G U ID E L IN E S
2.1.1 Summary
One of the goals of the CardBus specification is to allow a component to be designed so that it can
function either in the PC Card environment when mounted on a CardBus PC Card or in the PCI
environment when attached directly to a PCI bus. While the CardBus specification makes it possible
to do this, this guideline provides specific details of how the design must be done in order to
achieve this goal.
2.1.2 Background
The PCI specification, Rev 2.0, served as the starting point in developing the CardBus interface.
Any differences between the two standards were driven primarily by differences in the electrical
environment (the PC CardÕs 68-pin connector vs. PCIÕs 120 pin), the point-to-point interconnect
mandated by 16-bit PC Card support (vs. PCIÕs bused environment), and the dynamic
insertion/removal characteristics inherent to PC Card but not PCI. This guideline describes the
tradeoffs made to overcome these differences and documents how common silicon should be
designed and used in the CardBus environment.
The information in the guideline is structured in similar fashion to the CardBus specification to
make it easier to identify where CardBus differs from PCI. As a result, this guideline covers the
following areas:
1. pin definition differences
2. functional differences
3. electrical differences
4. configuration space differences
5. software driver differences
This guideline should not be used as a substitute for either the CardBus or PCI specifications by
design engineers. Its only purpose is to highlight differences, explain why the difference exists, and
show what CardBus implementations must do to overcome them. The detail contained is not
sufficient to enable a design to be undertaken.
2.1.3 Guideline
© 1999 PCMCIA/JEIDA 3
ELECTRICAL GUIDELINES
intended target of configuration cycles on the interface. Therefore, a CardBus PC Card will
always claim a configuration cycle.
Common silicon components must implement IDSEL in order to meet PCI requirements. This
signal should be strapped high (always asserted) when mounted on a CardBus PC Card. This
will cause the component to be selected whenever a configuration cycle is executed on the
CardBus interface.
2. CardBus does not have the SBO# or SDONE signals.
PCI uses these optional pins to signal address snooping results to the target of a transaction. The
target continues the access when CLEAN is signaled (SBO# deasserted and SDONE asserted) or
terminates with retry when HITM is signaled.
The CardBus adapter can take appropriate action on the system bus (e.g., terminate with retry)
and on CardBus (e.g., discard read data, terminate write cycles) without informing the card of
the snoop results. Therefore, CardBus does not implement these two signals.
Common silicon which implements SBO# and SDONE, but not CBLOCK#, must strap SBO#
and SDONE high on CardBus PC Cards so the component will always see the CLEAN state. If
CBLOCK# is implemented, SBO# and SDONE must be disabled. Strapping them high causes
CLEAN to be signaled during the address phase of a write to a locked resource. This causes the
component to conclude the write cycle is a writeback of a dirty cache line so it would override
the locked status and complete the write. If you intend to implement a function with SBO#,
SDONE, and LOCK#, please contact the PCI SIG for assistance in defining this disable
mechanism.
3. CardBus does not have the 64-bit bus extension pins.
Because of pin constraints in the 68-pin connector, CardBus does not support AD[63::32],
C/BE[7::4]#, REQ64#, ACK64#, and PAR64. If common silicon implements these signals, the
REQ64# signal must be pulled up to VCC on CardBus cards so that it is put in 32-bit mode
during reset. Floating inputs on AD[63::32], C/BE[7::4]#, PAR64, and ACK64# must be dealt
with during runtime. This could be done by enabling input ÒkeepersÓ when REQ64# is seen
high during reset.
4. CardBus does not have the JTAG pins.
Because of pin constraints in the 68-pin connector, CardBus does not support IEEE 1149.1
ÒStandard Test Access Port and Boundary Scan ArchitectureÓ across the interface. If the
capability is not needed in CardBus, common silicon must tie TRST# and TCK to ground and
leave TDI, TDO, and TMS unconnected.
If the scan chain is to be used on the CardBus card, then the common silicon component and
card design must provide a means for manipulating it across the CardBus interface. In general,
this will involve incorporating BIST circuitry and using the BIST register defined in
configuration space.
5. CardBus has a CSTSCHG pin.
CardBus uses CSTSCHG to signal battery low/dead, write protect, ready, and remote wakeup
conditions. Common silicon must implement this pin if the functionality is desired for CardBus.
It will be a no-connect, or available as a sideband signal when attached to the motherboard, in
the PCI environment.
6. CardBus has a CAUDIO signal.
Common silicon requiring access to the speaker must implement this signal. Usage of this
silicon in the PCI environment requires either a local speaker, a connection to the system
4 ©1999PCMCIA/JEIDA
GUIDELINES
speaker via a cable from PCI add-in boards, or a sideband signal when mounted on the
motherboard.
7. CardBus has a CCLKRUN# signal.
Common silicon desiring a hardware mechanism to start the clock, or continue it for a period of
time, must implement this function. CCLKRUN# should be strapped low when the PCI
environment doesnÕt support this capability.
8. CardBus only has one interrupt (CINT#) pin.
PCI allows interrupts to be signaled using up to four INTx# pins. Due to pin constraints,
CardBus requires using a single interrupt signal, CINT#. If common silicon chooses to
implement multiple INTx# pins, they must be wire-ORÕd together (shorted) when mounted on
a CardBus card.
9. CardBus does not provide exceptions to supporting CPERR# and CSERR#.
Common silicon must implement the CPERR# and CSERR# pins along with the associated
parity generation and checking logic.
© 1999 PCMCIA/JEIDA 5
ELECTRICAL GUIDELINES
software developers. The operation of CardBusÕs CBLOCK# pin is identical to PCIÕs LOCK# pin.
Therefore, there is no impact to the design of common silicon.
PCI also requires locking a minimum of 16 bytes, naturally aligned, while CardBus only
requires locking what was read. Common silicon must lock at least 16 bytes when lock is
established.
5. CardBus does not support PCIÕs Configuration Mechanism #2.
PCI requires usage of mechanism #1 for new designs but defined a second mechanism for
existing designs. The components which implemented configuration mechanism #2 do not have
any use on CardBus PC Cards (e.g., host bridges for PCI). In general, functions which have
applicability on PCI and CardBus will never generate configuration cycles.
However, if common silicon ever does need to generate configuration cycles, it must be
designed to use mechanism #1.
6. CardBus requires parity checking and reporting without exception.
CardBus does not allow PCIÕs exceptions for functions which Ònever deal with or contain or
access any data which represents permanent or residual system or application state, e.g., human
interface and video/audio devices.Ó Therefore, all common silicon must implement the CPERR#
and CSERR# pins along with the associated parity checking and reporting logic for address and
data.
7. CardBusÕs CSTSCHG capability requires registers in memory space.
The implementation of CSTSCHG requires providing the Event, Mask, Force, and Present
Value registers. These registers reside in memory. Common silicon which implements the
CSTSCHG capabilities for CardBus must implement these registers and indicate the need for
address space in the appropriate manner (PCI = base address register in configuration space,
CardBus = base address register and the CISTPL_CFTABLE_CB and CS\ISTPL_BAR tuples). A
unique base address register is not required for these registers, other memory requirements
may be included as appropriate.
8. CardBus does not require cards to drive CAD[31::0], CC/BE[3::0]#, and CPAR when CGNT# is
asserted but REQ# isnÕt.
CardBus doesnÕt allow cards to be designated the default owners of an idle interface. However,
PCI requires any bus master to assume such ownership when directed. Therefore, common
silicon must be designed to drive these signals when CGNT# is asserted but CREQ# isnÕt. Since
this condition will never occur on CardBus, there is no conflict.
6 ©1999PCMCIA/JEIDA
GUIDELINES
b) Series terminate each line to get acceptable di/dt characteristics. These resistor must be
located very close to the interface component on the card so that signals being driven by the
adapter are not affected.
c) Add inductance or resistance to the VCC and GND paths to pull up or pull down the bufferÕs
supply rails during transitions. This reduces the edge rate by making it a function of the RC
time constant of the VCC, or GND, supply. The rate can be controlled by adjusting the value of
resistance/inductance and the amount of current switched through it.
CardBus uses the same DC characteristics as PCI but the loading is reduced. Therefore, input
buffer behavior is identical between the two standards. Only in the AC characteristics do
differences emerge where CardBus simply specifies a rise/fall time since it operates in a
lumped load regime rather than PCIÕs transmission line environment.
2. CardBus does not support the 5V signaling environment.
Common silicon must be designed to operate in the 3.3V signaling environment with
VCC=3.3V. It may additionally be designed to accept VCC=5.0V for the PCI domain.
3. Timing differences.
CardBus is a point-to-point environment so there is no need to distinguish between CREQ#,
CGNT#, and the other signals with respect to timings. The timing differences are:
a) Tval is measured at the DC Vih and Vil values instead of PCIÕs 0.4(VCC) to cleanly specify
what constitutes a valid signal in the CardBus environment.
b) CardBus specifies the minimum time from CCLK stable to the deassertion of CRST# as 100
clocks instead of PCIÕs 100msec. This change better defines reset requirements with any speed
clock. Common silicon must be fully reset in 100 clock cycles.
4. CardBus assigned pins on the connector in a different sequence than PCI.
This was done to better align CardBus signals with the PCMCIA 2.0 & 1.0/JEIDA 4.1 & 4.0
publicationÕs cards since the adapter must configure the interface for any of the three protocols.
The signals affected are CSERR#, CAD16, CGNT#, CINT#, CCLK, CRST#, and CREQ#. The
impact is to the PC Card or PCI add-in board, since the routing of a common silicon component
will require traces crossing each other. The component designer needs to choose the
environment in which these crossovers will occur (CardBus vs. PCI).
5. CardBus specifies a maximum current immediately following power up or reset.
The parameter Icc(CIS) gives CardBus PC Card sockets a guarantee that they can power up any
CardBus PC Card and read the CIS without causing a power fault condition by putting too much
load on the battery. PCI has no equivalent parameter. Since this may extend beyond the
common silicon component, the designer must ensure that cards using their component will not
exceed this value when reading the CIS or reading and writing configuration space.
© 1999 PCMCIA/JEIDA 7
ELECTRICAL GUIDELINES
a) Common silicon must implement the 16-byte header required by PCI including Vendor ID,
Device ID, Class code, and Revision ID.
b) Common silicon must implement PCIÕs Max_Lat, Min_GNT, and Interrupt line registers if the
function requires them for PCI.
c) The base address registers must be encoded with size information as defined by PCI. These
fields, and encodings, are not used by CardBus so there are no implications with respect to
common silicon.
2. Certain Command register fields are not optional for CardBus.
Both PCI and CardBus define a Command register in configuration space. CardBus requires
common silicon to implement the following fields:
a) Memory Space must be implemented on all cards which support I/O space because I/O space
must be mappable into memory space.
b) Parity Error Response must always be implemented because CardBus does not allow the
exceptionÕs provided by PCI.
c) SERR# Enable must always be implemented because CardBus does not allow the exceptionÕs
provided by PCI.
3. Certain Status register fields are not optional for CardBus.
Both PCI and CardBus define a Status register in configuration space. CardBus requires common
silicon to implement the following fields:
a) Signaled System Error must always be implemented because CardBus requires all functions
to be able to check and report address and data parity errors.
b) Detected Parity Error must always be implemented because CardBus requires all functions to
be able to check and report address and data parity errors.
4. CardBus uses four bytes in the configuration space header for a CIS pointer.
Common silicon must implement these bytes with a pointer to the beginning of the CIS
structure (see the Metaformat and Electrical Specification for details). In addition, if the CIS
cannot fit in configuration space along with PCIÕs driver dependent information, common silicon
must locate it in memory or expansion ROM space and provide a mechanism(s) to access it (i.e.,
base address registers and a data path). Unique base address registers are not required.
5. CardBus requires a memory-mapped base address register whenever I/O space is used by the
card.
CardBus requires all I/O space to be mappable into memory space. This means that I/O base
address registers must be accompanied with a memory base address register. Therefore,
common silicon must implement this companion memory base address register.
8 ©1999PCMCIA/JEIDA
GUIDELINES
driver must either use this standard mechanism to clear interrupts or a means to disable it and
enable the desired proprietary method must be provided.
2. CardBus requires drivers to have a Card Services interface including tuple comprehension.
This means that a Òcommon driverÓ must implement the Card Services interface. When
implemented in a PCI system, the driver must first check for its functionÕs existence on PCI. If it
doesnÕt find anything, or if it can handle more than one instance, it must then register with
Card Services. If Card Services doesnÕt exist in the system, determined with the
GetCardServicesInfo call, the driver may disable its Card Services interface and proceed
knowing no PC Card will show up.
Upon finding its function, the driver must proceed with completing the configuration in the
appropriate manner ¾ tuple traversal for CardBus vs. configuration space interrogation for PCI.
3. Common drivers must handle dynamic insertion and removal events.
The driver must allow for the fact that its function may disappear or appear at any time and
must not treat it as a catastrophic error condition. (See 4.2: CardÐApplication Interaction
guideline for appropriate behavior when this occurs.)
4. PCI specifies that expansion ROM code is never executed in place.
The only software usage model that PCI defines is where ROM code is always copied from the
ROM device to RAM and executed out of RAM. There is nothing in the architecture which
prohibits execute-in-place (XIP) operation. On the other hand, CardBus allows this ROM code to
be executed-in-place.
When XIP capability becomes a part of CardBus, a common software driver which wants to take
advantage of XIP must deal with differences between the two usage models (copy to RAM for
PCI vs. XIP for CardBus). Details of what these differences are cannot be determined until the
capability is defined.
© 1999 PCMCIA/JEIDA 9
ELECTRICAL GUIDELINES
2.2.1 Introduction
Compatibility Icons have been designed for use on both products and product packaging as a
standardized method for communicating key product features. By annotating the key compatibility
features it becomes a simple process for an end-user to find and purchase compatible products
including but not limited to Host Systems and PC Cards.
The Compatibility Icons currently defined for use include:
· The PC Card Logo Denoting PCMCIA or JEIDA Membership
· 16-bit
· CardBus
· 3V Only Operation
· 5V Only Operation
· 3.3V and 5V Operation
· Zoomed Video
· DMA
· DVB
· Thermal Rating Icons
P L E A S E C O N T A C T P C MC IA F O R A R T WO R K F IL E S F O R
T H E C O MP A T IB IL IT Y IC O N S
10 ©1999PCMCIA/JEIDA
GUIDELINES
To assist member companies in determining if/which Compatibility Icons may be of value for their
products the following sub-sections are provided with technology overviews and section level cross-
references to areas within the PC Card Standard.
As previously noted, cases can arise where cards may not be configurable due to either the
capabilities of the host (e.g., laptop versus palmtop) or the presence of other cards. To help identify
these conditions well before they occur (e.g., at purchase time) manufacturers can use the thermal
rating icons on their packaging and the customer can perform the subtraction logic to determine if
the desired products are compatible. To assist with the customer usage of the Thermal Rating Icons
two slightly different icon formats have been defined.
The thermal icon format defined for PC Cards is presented as follows:
© 1999 PCMCIA/JEIDA 11
ELECTRICAL GUIDELINES
The thermal icon format defined for host systems is presented as follows:
Both formats utilize a unitless whole number value provided in increments ranging from 1 to 99.
The Thermal Rating Icon values are based directly off of the CIS/HSDT values. The CIS/HSDT
values are converted to whole numbers by multiplying them by 10 and then rounding to the
nearest whole number. For example, a CIS/HSDT value of 1.23 would be converted to a reported
icon value of 12. A CIS/HSDT value of 0.75 would be a reported icon value of 8.
For more information regarding the technical details of the various thermal management
components please refer to the following volumes/sections of the PC Card Standard:
· For PC Card Thermal Ratings details see the Physical Specification Ð PC Card Thermal Ratings
section.
· For CIS Thermal tuple data see the Metaformat Specification Ð CISTPL_CFTABLE_ENTRY,
TPCE_MI Field and CISTPL_CFTABLE_ENTRY_CB, TPCE_CBMI Field description sections.
· For System Software and Driver details see the Card Services Specification Ð ConfigureFunction
and InquireConfiguration service description sections.
· For HSDT and Host Thermal Ratings details see the PC Card Host System Specification.
12 ©1999PCMCIA/JEIDA
GUIDELINES
3 . PH YS IC AL G U ID E L IN E S
U N L E S S O T H E R WIS E S P E C IF IE D , A L L D IME N S IO N S A R E
IN MIL L IME T E R S (MM).
© 1999 PCMCIA/JEIDA 13
PHYSICAL GUIDELINES
B10 Pos. # 1
B5
B9
B4 - B -
B8 B2 0.05mm s B s
B18
B6
B7 0.1 mm s A s
B3 -A-
B1 0.1 mm s A s
B17
B11
B13
B14
B12 B15
B16
14 ©1999PCMCIA/JEIDA
GUIDELINES
© 1999 PCMCIA/JEIDA 15
PHYSICAL GUIDELINES
A13
A9
A10
A11
A12 A8
A1 0.1 mm s A s
A3 -A-
Pos. # 1
0.1 s B s A20 A21
A14 A4 - B -
A2 0.05mm s B s
A6 A5
A7 0.1 mm s A s
16 ©1999PCMCIA/JEIDA
GUIDELINES
C3 C3
C2
C1 C1
© 1999 PCMCIA/JEIDA 17
PHYSICAL GUIDELINES
Three keying configurations are defined, one for LAN and two are reserved for future definition.
Figure 3-4 shows LAN keying.
Figure 3-5 and Figure 3-6 show those reserved for future definition.
3.1.1.4 Plating
The outermost plating of the connector system contact mating area shall be hardened gold, or
materials compatible with gold.
The outermost plating of the shield shall be nickel plated or other plating material compatible with
nickel. Recommended shield material is stainless steel.
The interconnect system shall pass all requirements of Section 3.1.2, I/O Connector Reliability and
Section 3.1.3, Connector Durability.
18 ©1999PCMCIA/JEIDA
GUIDELINES
4 Contact Forces 2 2 2
5 Connector Insertion/withdrawal Forces 3 3 3
6 Contact Retention Force 1
7 Durability-Office Environment 4 2
8 -Harsh Environment 5
9 Vibration 2
10 Mechanical Shock 3
11 Humidity (Normal Condition) 7 4
12 Moisture Resistance 4
13 Thermal Shock 5
14 High Termperature Life 4
15 Cold Resistance 2
16 Hydrogen Sulfide 9 2
17 Salt Water Spray 2
18 Current Rating 1
19 Latch Strength 6
20 Mechanical Torque/Flex 1
21 Polarization & Key Force 1,3
Temperature o o
15 C to 35 C
Air pressure 86 to 106 kPa
Relative humidity 25% to 85 %
If conditions must be closely controlled in order to obtain reproducible results, the parameters shall
be:
Temperature o o
23 C + 1 C
Air pressure 86 to 106 kPa
Relative humidity 50% + 2%
© 1999 PCMCIA/JEIDA 19
PHYSICAL GUIDELINES
0.75 ± 0.05
R 0.5 ± 0.1 REF
R0.3
0.40 ± 0.05
Tool steel gauge pin (HRC=50-55, surface finish=
.406mmm max, chamfer all sharp edges)
20 ©1999PCMCIA/JEIDA
GUIDELINES
3.1.2.1.7 Vibration
Standard Testing
a. No mechanical damage shall occur on the parts. MIL-STD-202F, Method 204D
b. No current interruption greater than 100 nsec. Test condition B (15 G peak)
c. Contact resistance 3.1.2.2.1b. 10 Hz to 2000 Hz
3.1.2.1.8 Shock
Standard Testing
a. No mechanical damage shall occur on the parts. MIL-STD-202F, Method 213B
b. No current interruption greater than 100 nsec. Acceleration 50G, Standard holding time 6 msec,
Semi-sine wave.
I/O Connector
C B
© 1999 PCMCIA/JEIDA 21
PHYSICAL GUIDELINES
22 ©1999PCMCIA/JEIDA
GUIDELINES
© 1999 PCMCIA/JEIDA 23
PHYSICAL GUIDELINES
24 ©1999PCMCIA/JEIDA
GUIDELINES
© 1999 PCMCIA/JEIDA 25
PHYSICAL GUIDELINES
26 ©1999PCMCIA/JEIDA
GUIDELINES
© 1999 PCMCIA/JEIDA 27
PHYSICAL GUIDELINES
1 Twisted 3
2 Pair 6
11 Twisted 4
12 Pair 5
14 Twisted 1
15 Pair 2
28 ©1999PCMCIA/JEIDA
GUIDELINES
Adding LEDs to the external box or molding which houses the RJ45 connector and utilizing PC
Card connector pins 6, 7 and 13 according to the following table adds additional value to the cable
assembly.
Utilizing PC Card pins 3, 10 and 13 adds value to the cable assembly by allowing for power from
the PC Card to an external module (for example, to power an Ethernet AUI to 10BASE-2 transceiver)
and/or power from an external power source into the PC Card (for example, to power the PC Card
in a low power palmtop PC). Connections for this are shown in the following table.
© 1999 PCMCIA/JEIDA 29
PHYSICAL GUIDELINES
3.2.1 Introduction
3.2.1.1 Purpose
This document describes connectors suitable for use as external input/output interface from PC
Cards used for Modem, FAX, voice and audio applications in accordance with applicable PC Card
standards. Applicable cards are those which adhere to the Open Standard for I/O Interconnection.
Applications and testing are based upon "harsh environments."
3.2.1.2 Scope
3.2.1.2.2 Connectors
This document is intended to provide sufficient information of applicable mechanical and interface
parameters involved with the use and selection of the connectors described herein. This specification
covers only information that is applicable to the mating interface and is not intended to be a
complete product specification.
30 ©1999PCMCIA/JEIDA
GUIDELINES
3.2.2 Overview
The potential proliferation of modems and specialized communications cards, all based upon the PC
Card Standard, has lead to a need for standardization on connectors for direct connection between
the PC Card and various media.
In order to assure that any I/O Card could have any access devices connected without harm, the
Open Connector concept allows for the definition of interface signal levels and mechanical
parameters to assure that different PC Card form factors are not subject to damage when properly
terminated with the connectors herein.
It is accepted that vendors may wish to have different interconnection schemes that would function
properly only when interconnect components of their specific choice are used. These are termed
"closed systems." Interchangeability with respect to cabling and the mechanical I/O interface of the
modem cards (per this specification) is not expected nor desired. Vendors using such "closed
systems" are instructed to not use the connectors described in this specification so that potentially
destructive interface problems will be prevented.
Since PC Cards used for Modem applications may be used in non-office environments as part of
mobile operating systems, testing herein is based upon standards for "harsh environments" as
defined by the PC Card Standard.
This specification gives several options to designers and users of PC Card modems. The "minimum
interface" presents a standardization of a 4 position connector for applications wherein only one type
of simple interface is desired. The "maximum interface" connector provides a split-insert, in two
sections, with 4 and 3 contacts respectively. This maximum interface connector can receive a cable
with a 4 position plug for one type of interface, or it can receive a separate cable with a 3 position
plug for another type of interface. If a more complicated interconnection is required, a third cable
having 7-positions may be used. It is expected that all PC Card Standard compliant cards for
Modem/FAX applications will have either a 4 or 7 position card connector installed at the end of the
card opposite that which is inserted into the host's socket.
Due to expected structural constraints of applicable PC Card modems, the connectors defined herein
are suitable for all PC Cards except the thinner Type I. Wherever applicable, illustrations and
testing discussed in this specification shall incorporate Type II PC Cards.
Current Modem and Modem/FAX Card applications do not require use of shielded cables.
Therefore, for economical benefits, connectors described herein are not intended for use with
shielded cables or shell-to-case grounds. Connectors for Local Area Network applications may need
to be shielded and may be described by other PC Card specifications.
The "open system" compliance presented herein does not guarantee interoperability of independent
implementation schemes, nor does it guarantee certifiability to any external (non-PCMCIA/JEIDA)
criteria such as FCC, UL or the like. However, it does prevent mechanical damage associated with
inadvertent interconnection. "Open system interconnection" facilitates uniform interfaces for PC
Card Developers by promoting availability of multi-sourced I/O connectors satisfying the PC Card
Standard's criteria per this specification.
© 1999 PCMCIA/JEIDA 31
PHYSICAL GUIDELINES
3.2.3.2.1 Identification
Cable Plug Connector, 3 position per Figure 3-9: Cable Plug Connector, 3 Position.
Cable Plug Connector, 4 position per Figure 3-10: Cable Plug Connector, 4 Position.
Cable Plug Connector, 7 position per Figure 3-11: Cable Plug Connector, 7 Position.
Cable Plug Connector dimensions per Table 3-12: Cable I/O Connector Dimensions.
3.2.3.2.2 Reservations
Use of the 7 position and 3 position cable plugs with the 7 position card I/O receptacle are reserved
for future circuit definition(s).
32 ©1999PCMCIA/JEIDA
GUIDELINES
© 1999 PCMCIA/JEIDA 33
PHYSICAL GUIDELINES
34 ©1999PCMCIA/JEIDA
GUIDELINES
© 1999 PCMCIA/JEIDA 35
PHYSICAL GUIDELINES
36 ©1999PCMCIA/JEIDA
GUIDELINES
© 1999 PCMCIA/JEIDA 37
PHYSICAL GUIDELINES
3.2.3.3.1 Insulators
Materials shall be suitable for the purposes intended including the following:
Material: Shall be UL approved.
Flammability: Per UL94V-0.
PWB termination: Card Connectors shall be suitable for Surface Mounting, including (but not
limited to) IR at 250 C for 10 seconds, without damage.
3.2.3.3.2 Contacts
3.2.3.3.2.1 Materials
Shall be suitable for the purposes intended.
3.2.3.4 Polarization
Alternate polarizations are not included within this specification. Connector versions similar to those
per this specification that differ only by schemes of alternate polarization of keying are deemed to
be in non-conformance with this specification. Such connectors are not suitable for the "open system"
interface intentions of this specification. This is a different criteria than that applicable to "mis-
mating" which is specified herein.
38 ©1999PCMCIA/JEIDA
GUIDELINES
© 1999 PCMCIA/JEIDA 39
PHYSICAL GUIDELINES
Temperature 15 °C to 35 °C
Air Pressure 86 to 106 kPa
Relative humidity 25% to 85%
If conditions must be closely controlled in order to obtain reproducible results, the parameters shall
be:
Temperature 23°C ± 1C
Air Pressure 86 to 106 kPa
Relative humidity 50% ± 2%
40 ©1999PCMCIA/JEIDA
GUIDELINES
0.50 ± 0.05
1.40 ± 0.10
R 2.00 ± 0.05
Tool steel gauge pin (surface finish .406mm max., chamfer all sharp edges).
© 1999 PCMCIA/JEIDA 41
PHYSICAL GUIDELINES
3.2.4.3.7 Vibration
Standard Test
a. No mechanical defects shall occur on the parts. MIL-STD-202F, Method 204D,
Test condition B (15G peak), 10
b. No current interruption greater than 100 ns.
Hz to 2000 Hz.
c. Contact resistance per 3.2.4.4.1
3.2.4.3.8 Shock
Standard Test
a. No mechanical damage shall occur on the parts. MIL-STD-202F, Method 213B,
Acceleration 50G, Standard
b. No current interruption greater than 100 ns.
holding time 6 msec., Half-sine
wave.
42 ©1999PCMCIA/JEIDA
GUIDELINES
© 1999 PCMCIA/JEIDA 43
PHYSICAL GUIDELINES
44 ©1999PCMCIA/JEIDA
GUIDELINES
© 1999 PCMCIA/JEIDA 45
PHYSICAL GUIDELINES
46 ©1999PCMCIA/JEIDA
GUIDELINES
© 1999 PCMCIA/JEIDA 47
PHYSICAL GUIDELINES
3.2.6 Intermatability
Intermateability between manufacturers shall be confirmed by the use of 50% of connectors from
other manufacturer(s) during testing of Group 2, 5, 7, 8, 10, 14, and 16. This shall involve both card
and cable connectors from all manufacturers. This may be done as part of the manufacturer's
standard qualification tests.
48 ©1999PCMCIA/JEIDA
GUIDELINES
© 1999 PCMCIA/JEIDA 49
PHYSICAL GUIDELINES
audio interface portion of the pinout, refer to Section 3.2.8.2 Electrical Characteristics for the Audio
Interface for a definition of the electrical characteristics.
50 ©1999PCMCIA/JEIDA
GUIDELINES
Vcc
1K
10 µF
5.6 K FOR Vcc = 5V
(3.3 K FOR Vcc = 3.3V)
© 1999 PCMCIA/JEIDA 51
PHYSICAL GUIDELINES
3.3.1 Background
Although many kinds of I/O connectors are available on the market, there are no limitations on
I/O connector dimensions, making PC Card slot designs difficult. This guideline describes the
recommendation for Maximum dimensions for an I/O connector. Taking into consideration the
maximum dimensions for an I/O connector helps the design of both PC Card Slot bezels and new
I/O connectors.
3.3.2 Guideline
The following dimensions, A to E for I/O connector are shown in Figure 3-13: Maximum Dimensions
for I/O Connector below.
Note: This Guideline takes into consideration single PC Card Slots only. For
multiple PC Card Slots, you need to consider appropriate numbers for B1,
B2, C and D.
52 ©1999PCMCIA/JEIDA
GUIDELINES
Cable
A=6.0 min
B1=5.0 max
SYSTEM'S ENCLOSURE
CONTACT PORTION
( SLOT BEZEL )
E = 54.1 max
Unit: mm
I/O CARD SLOT SYSTEM'S ENCLOSURE(SLOT BEZEL)
© 1999 PCMCIA/JEIDA 53
PHYSICAL GUIDELINES
3.4.1 Summary
The Type I and II Extended PC Card outlines are identical to the Type I and II PC Card outlines
except for the extended portion. The extended portion extends 10 mm past the standard PC Card
length of 85.6 mm before the height may be increased in the bubble area. It should be noted that in
the extended bubble portion the thickness from the centerline of the connector to the bottom of the
PC Card is the same thickness for the entire length. The centerline of the connector to the top of the
bubble is 8.0 mm recommended. This will allow a thicker bubble.
3.4.2 Background
The Type I and II Extended PC Card outlines were primarily specified so that designers and
manufacturers of I/O PC Cards may encase their electrical and magnetic isolation devices within the
shielded PC Card enclosure. It was noted during the discussion before passage of the Type I and II
Extended PC Card Outline that some connectors (RJ-11 and RJ-45) will not fit within the
recommended thickness. Therefore, PCMCIA's Card Physical Committee specified the thickness
such that the centerline of the connector to the bottom of the PC Card is 2.5 mm max. The height
from the socket centerline to the tip of the bubble is 8.0 mm recommended. This recommended
height will allow the designer to increase the total thickness of the bubble in order to accommodate
the RJ-11 and RJ-45 connectors.
3.4.3 Guideline
The following figures define the recommended outline for Type I or Type II Extended PC Cards.
54 ©1999PCMCIA/JEIDA
GUIDELINES
1
T3
T (REF)
E Surface A
F
4x R
SUBSTRATE AREA
3
INTERCONNECT AREA P C
2x S CONNECTOR
2x T
W 6
Surface A
#34 #1
Y #68 #35 X
Surface B
X X
© 1999 PCMCIA/JEIDA 55
PHYSICAL GUIDELINES
C
O
N
N
EC
TO
R
PC D
C
AR
Figure 3-15: Type I Extended (3-D)
56 ©1999PCMCIA/JEIDA
GUIDELINES
1
T3
T2 (REF)
E Surface A
F
4x R
SUBSTRATE AREA
3
INTERCONNECT AREA P C
2x S CONNECTOR 5
2x T1
W
2x T2
Surface A
#34 #1
Y #68 #35 X
Surface B
X X
© 1999 PCMCIA/JEIDA 57
PHYSICAL GUIDELINES
C
O
N
N
EC
TO
R
PC D
C
AR
58 ©1999PCMCIA/JEIDA
GUIDELINES
4 . S O F T WA R E G U I D E L I N E S
4.1.1 Summary
This guideline recommends the capabilities that all enablers should provide and proscribes certain
behavior. Following this guideline minimizes colliding accesses between the enabler and other
clients and between independent enablers thus guaranteeing a minimum level of functionality to
users.
4.1.2 Background
The purpose of an enabler is to allow a single piece of software to configure and unconfigure a PC
Card to prevent the redundancy of every PC Card requiring separate and unique configuration
software.
Enablers recognize PC Cards in one of two ways. First, they may recognize a card specifically from
information in the Card Information Structure (CIS) that is unique to that card. For example, some
enablers use combinations of the manufacturer string and product string from the VERS_1 tuple and
the Manufacturer ID and Function ID tuples. Second, enablers may recognize a PC Card solely from
its Function ID tuple. For most Data/FAX modems, a Function ID that indicates the PC Card has a
serial interface causes the card to be configured as the next available COM port.
Once a card is configured, it may be used by software that is or is not aware that the functionality is
located on a PC Card. If the software is PC Card-aware, it may piggy-back on the efforts of the
enabler and use the cardÕs functionality until the card is removed and the enabler releases the
system resources allocated to the card.
If the software is not PC Card-aware, it must locate the cardÕs resources where the enabler mapped
them into the host systemÕs address space. For most cards this means assuming the PC Card is
placed at the same locations typically used by standard ISA peripherals that perform the same
functions.
Some cards offer functionality that use configuration files to describe where they are located in
system memory. As an example, network adapters have a NET.CFG or PROTOCOL.INI file
describing the IRQ level, I/O address range and memory range used to access the adapter. In this
case, the enabler must place the PC CardÕs resources as indicated in the configuration file.
An enabler which follows this guideline should be able to properly configure any card which
follows the CIS requirements for its card type and contains logically correct and consistent
information within the tuples.
Note that although an Enabler API is not prohibited, such an API is not described by this guideline.
4.1.3 Guideline
It is strongly recommended that PC Card system software implementations provide an enabler. If
such an enabler is present in a system, it should be tested as part of that systemÕs integration test.
Enablers developed for the PC Card environment should obey the following guidelines:
© 1999 PCMCIA/JEIDA 59
SOFTWARE GUIDELINES
1. Enablers should support 16-bit PC Cards as well as CardBus PC Cards. The use of a single
enabler reduces usage of system resources and simplifies software interactions. This goal cannot
be achieved without building support for both types of cards in the enabler. If it is necessary for
there to be more than one enabler resident in the system in order for the system to support both
types of cards, then rule #3 should be observed.
2. Enablers should be able to configure cards which meet the CIS requirements outlined in the
Metaformat Specification. This ensures that cards designed to the minimum requirements can
be configured by all enablers designed to support that class of card.
3. Enablers should not interfere with the registration and configuration of Card Services clients
which do not use the enabler. It is recommended that enablers honor exclusive requests for a
function. Therefore, there should be a mechanism for not generically enabling a card even
though it could be enabled. Enablers should allow users to designate which cards or which class
of cards it will not configure.
4. Enablers should never cause any client to lose resources unwillingly because resource changes
cannot be handled gracefully (i.e., transparent to the user) without the involvement of the
client.
5. If the system allows the user to query, then enablers should be able to inform users about
resource and logical device configuration. This provides the ability to notify the user of card
configuration status.
6. All system software must be aware of its impact on the system resources. For example, in an x86
type of system, enablers should make as much use as possible of memory above 1 MByte (high
and/or extended memory) to minimize the impact on the first 640 KBytes of system memory
(low memory).
7. Card Services is the owner of all PC Card resource management for clients including the
enabler. If an enabler uses a private API for assigning resources, it should inform Card Services
of the outcome of the arbitration.
8. Enablers which donÕt enable certain classes of cards must not configure or modify the
configuration of that class of cards. For example, an enabler which only manages memory cards
must not configure or modify the configuration of I/O cards.
9. In CardBus PC Cards, memory windows are a fixed size so no standard means exists to reassign
windows. Enablers which also act as 16-bit PC Card memory clients must be able to reassign,
reuse, and resize the same host memory space to accommodate additional memory cards so that
each memory client can use (allocate and deallocate) the same memory address space. For
performance reasons, memory cards will want as much space as is available. However, the
appearance of new clients causes a need to dynamically resize these windows.
60 ©1999PCMCIA/JEIDA
GUIDELINES
4.2.1 Summary
This guideline minimally outlines how PC Card-aware and PC Card-unaware applications should
interact with a PC Card.
4.2.2 Background
The following terms are used in this Guideline:
Application Function Test are the tests that an application tester would normally use
to confirm that an application basically works as
designed. They are not comprehensive tests and do not
necessarily address boundary and error conditions.
Enabler is also referred to as a Ògeneric enabler.Ó This is a Card
Services client which is capable of configuring a variety
of cards. It may or may not have other capabilities such
as the following:
· providing an alternate API to Card Services
· providing the user information about the installed
cards
This type of enabler is not custom designed for
configuring specific cards, but, using the CIS and the
Card Services interface, it can configure many different
cards, or classes/types of cards.
PC Card-Aware Application is an application which has been modified to take into
account the PC Card busÕs more dynamic environment.
This would include having either the application or a
driver the application uses becoming a Card Services
client.
PC Card-Unaware Application is an application which has not been modified as above.
In any given PC Card system, there can be both PC Card-aware and PC Card-unaware applications.
Both of these types of applications may wish to access the PC Card, and could react very differently
to changes in the card status. This guideline attempts to define a minimum standard of good
behavior in several simple, common situations.
© 1999 PCMCIA/JEIDA 61
SOFTWARE GUIDELINES
4.2.3 Guideline
62 ©1999PCMCIA/JEIDA
GUIDELINES
© 1999 PCMCIA/JEIDA 63
SOFTWARE GUIDELINES
4.3.1 Summary
The client to Card Services interface for CardBus PC Cards is very similar to the interface for 16-bit
PC Cards. The processing done by the PC Card software stack is different for CardBus PC Cards in
order to maintain that common interface. The intent of this guideline is to give an example of how
such processing may be done.
4.3.2 Background
CardBus sockets support both 16-bit PC Cards and CardBus PC Cards. Clients for these cards both
use the same Card Services interface. However, because the on-card programming model is so
different for CardBus PC Cards, the PC Card software stack needs to internally process CardBus
configuration requests differently.
There is no one way to implement CardBus processing. For example, a designer might choose to
apply the minimum configuration power upon card insertion or only after a request is made to read
the CIS. This guideline is meant to be one example of how an implementation might be done.
4.3.3 Guideline
The following scenario describes the recognition and configuration of a CardBus PC Card. Via the
CardBus Socket Services, Card Services knows that a CardBus PC Card has arrived. At this time, it
performs the following actions:
1. Card Services notifies its registered clients that a card has arrived. This notification is sent for
each function on the card, so that each function looks like a separate card to a client.
2. The client requests tuples using the socket and function number it was sent in its insertion
notification.
a) The client requests the first tuple of the function via Card Services.
CardBus clients may be drivers, applications, generic enablers, etc. just like 16-bit PC Card
clients. Additionally, because some of the cards implemented in CardBus may share silicon with
PCI cards, CardBus drivers may also be modified versions of PCI drivers. See the guideline
CardBus/PCI Common Silicon Requirements for some considerations when developing this type of
software.
b) Card Services applies power to the socket in order to read the CIS. For CardBus, all cards are
required to be able to support CIS reads at 70 mA. At this point, if the adapter has not been
previously configured, Card Services will configure the adapter before proceeding.
c) Card Services reads the CIS pointer from configuration space to find the beginning of the first
chain of the CIS. The CIS pointer indicates the card space in which the chain resides:
i. configuration space
ii. one of the six (6) possible memory spaces
iii. the expansion ROM
and an offset into the space where the chain actually starts
64 ©1999PCMCIA/JEIDA
GUIDELINES
d) If the indicated chain starts anywhere but configuration space, Card Services maps the
indicated card space into host system address space by writing the appropriate Base Address
Register. Note that this is a temporary mapping only. Mappings become permanent only when
the client requests them as part of the configuration.
e) If the client has requested to see all link-related tuples, then the first tuple will always be a
CISTPL_LINKTARGET tuple.
f) The client requests the next tuple.
g) The client walks through the functionÕs CIS just as a 16-bit PC Card client would. For any
tuples in non-configuration space, the client may read them directly. However, it is strongly
recommended that the client use the Card Services interface and not read the tuples directly.
Note that in order for a client to read the tuples directly it needs to be able to perform the
following tasks which Card Services would normally perform for it:
i. temporarily mapping in the card space in order to read the tuples
ii. interpret the CISTPL_LONGLINK_CB tuple to find additional chains in the card spaces.
3. If the client recognizes the card as one it is interested in, the client then uses
GetConfigurationInfo for that function to see if it has been configured.
4. The client requests resources for the function from Card Services.
5. If the requests are successful, the client obtains the configuration for the function.
For all address space requests (e.g., I/O, memory, expansion ROM), Card Services writes the
appropriate value (a host address) into a Base Address Register. It does not request windows
from Socket Services.
6. After the function is configured the client may now access the function.
In this scenario, clients may operate, as far as configuration is concerned, completely as 16-bit PC
Card clients. This includes using a generic enabler if the client does not wish to do the configuration
requests itself.
Unchanged 16-bit PC Card software continues to work in the expected manner when a 16-bit PC
Card is inserted in a CardBus PC Card socket. In addition to sockets with both CardBus and 16-bit
PC Card capabilities, there may also be 16-bit PC Card-only sockets in the system. From the clientÕs
point of view, whether the 16-bit PC Card is in a 16-bit PC Card-only socket or in a combined 16-bit
PC Card/ CardBus PC Card socket, the Card Services programming interface is the same.
The CardBus PC Card Socket Services knows that the card which has just been inserted is a 16-bit
PC Card by reading the adapter. After that point, Card Services continues its normal processing just
as if the card were in a 16-bit PC Card-only socket. The only difference is the actual hardware
interface, which is isolated to Socket Services. This processing consists of:
1. Card Services notifies its registered clients that a card has arrived.
2. The client walks the CIS via calls to Card Services.
3. If it recognizes the card, the client has the card configured by requesting resources such as
memory windows from Card Services.
4. After the card is configured, the client may manipulate the card.
© 1999 PCMCIA/JEIDA 65
SOFTWARE GUIDELINES
4.4.1 Summary
This guideline describes the design of CIS for a single function 9600/2400 BPS Fax/Modem I/O 16-
bit PC Card (not CardBus). The functional information required for a well defined CIS for a similar
function on a multiple function PC Card or CardBus PC Card would be the same. However, the
requirements for control tuples and device information tuples, etc. vary among these card types.
Only the single function 16-bit PC Card is given in this example. How to use the tuple structure and
what are appropriate values for field values are included in the examples.
4.4.2 Background
The purpose of the Card Information Structure is to provide a mechanism for software to be able to
identify the function, origin, and capabilities of a PC Card. The idea is that when a card is inserted
(or the machine is turned on with the card installed), an intelligent piece of code, which might be in
the BIOS or run as a TSR or a device driver, would parse the CIS and perform the needed
operations for card and system configuration. Being able to configure the card either at boot or after
insertion is desirable since the host computer does not need to tie up resources before they are
needed. It also allows the system to Ògracefully rejectÓ any card that it is not capable of using.
The discussion that follows is focused on a 9600/2400 Fax/Modem, but can be used for any type of
I/O card. A Fax/Modem was selected because the extension tuples for this type of card were the
first to be added to the PC Card Standard. Using these function extension tuples along with the
Rev 2.0 configuration tuples, a full descriptive guideline can be given. The 9600/2400 speed was
selected for this guideline because it has become the generic minimum for Fax/Modems.
Some of the 9600/2400 Fax/Modem specific features that are documented in this guideline are:
9600 Fax speed
2400 Modem speed
16450 UART
All character, stop, and start bit possible configurations
Support for the US
V.22bis, Bell 212A, V.22A&B, V.21, Bell 103
V.29, MNP1-5, V.42, V.42bis, V.27ter
66 ©1999PCMCIA/JEIDA
GUIDELINES
4.4.3 Guideline
The tuples covered in this example are enumerated in Table 4-1: Tuple Codes for Fax/Modem Card
Example, below. A discussion of each tuple and some of its values follows.
As shown in Table 4-2: Device Information Tuple, the device information tuple contains a minimum
of 5 bytes. The first two bytes contain the tuple code and the link to the next tuple in the list. The
link is calculated starting with the next byte of the tuple after the link and ending at the last byte of
the tuple. So for this example, the value placed in the TPL_LINK field is 03H.
The next two bytes contain the common memory device information for the first device. In the
fax/modem card there is just one device, the Fax/Modem, but in future products, multi-function
cards will exist and consequently additional DEVICE INFO fields will be required. Each of the
functions requires 2 bytes of device information. The two bytes contain the device type code,
whether a Write Protect Switch is included, what speed the device is, and how much address space
it needs. A value of 00 H is placed in the first device ID byte because there is no device in common
memory (in this Fax/Modem example), so a null device type is selected.
The device size which is the second byte of the device information field is a 00H because that is the
smallest amount allowed. With the value of 00H a window of 1 block of 512 bytes is defined.
© 1999 PCMCIA/JEIDA 67
SOFTWARE GUIDELINES
Unfortunately, the byte does not allow for no memory, so you should specify the smallest one
possible. The last byte is an FFH which marks the end of the device information tuple.
68 ©1999PCMCIA/JEIDA
GUIDELINES
The TPLLV1_MAJOR and _MINOR fields are defined in the PCMCIA 1.0/JEIDA 4.0 publications as
having a value of 05H for _MAJOR and 00H for _MINOR in the PCMCIA 2.0/JEIDA 4.1
publications. This value should only be changed for your configuration if you are conforming to a
later release of the PC Card Standard.
The TPLLV1_INFO field is used to input the manufacturer, the product name and revision number.
The specification is not specific about the exact format for this, however, the example above should
be followed including the use of terminators and including the end of list (FFH) field at the end.
Incidentally, the end of list field is not a requirement for all tuples, but it is required for this one.
The values placed in this field are the ASCII hex values of the letters indicating the product name,
revision number, vendor specific information, and manufacturer (PCMCIA).
The TPLMID_MANF field is the unique ID code that is developed from the JEDEC Device ID code
indicating the manufacturer. If a manufacturer has a JEDEC code, then the 16 bit PCMCIA ID has a
00H in the upper byte, and the code in the lower byte. If a manufacturer does not have a JEDEC
code, PCMCIA can assign a company specific ManufacturerÕs ID Tuple.
The TPLMID_CARD field designates the card type. These two bytes are manufacturer specific
identifiers. Each manufacturer will develop its own coding scheme for its card family.
The TPLDFID_FUNCTION field specifies the function, or multiple functions the card can perform.
The example Fax/Modem card performs as a serial device for both modem and fax functions and
© 1999 PCMCIA/JEIDA 69
SOFTWARE GUIDELINES
thus has the value of 02H. A value of 0H indicates a multiple function card and this requires
additional bytes to specify the individual functions. Currently the following values are:
0 Vendor Specific Multiple Function
1 Memory
2 Serial Port (both modem and fax cards)
3 Parallel Port (parallel printer port both uni- and bi-directional)
4 Fixed Disk
5 Video Adapter
6 LAN Adapter
7 AIMS
8 SCSI
9 Security
A Instrument
B-FFH Reserved
The TPLFID_SYSINIT field of the tuple indicates to the host when the card should be initialized.
Only two values are defined today; a 01 H indicates that the card should be initialized during POST,
and a value of 02H indicates that the card contains expansion ROM which should be installed
during system installation. Our example card does not contain ROM and consequently should have
the value of 01H.
70 ©1999PCMCIA/JEIDA
GUIDELINES
© 1999 PCMCIA/JEIDA 71
SOFTWARE GUIDELINES
Using these tuples will allow the host and the application software, which is CIS aware, to do away
with the current set of questions that must be asked when configuring the operating environment.
The fax/modem tuple list contains three different function extension tuples. These are used to
describe the three distinct areas of functionality of fax/modem products. The current extension tuple
has been designed to accommodate one more function (not included in this example card) ¾ Voice
Encoding. The tuples start with the simplest function, a UART or Universal Asynchronous Receiver
Transmitter. The serial port ID tuple is a 6 byte tuple. The functions that are included are the
determination of the UART type, the start and stop characters supported, and the parity types.
There are three types of UARTs used for serial communication, they are the 8250, 16450 and the
16550. The fourth and fifth fields deal with the actual UART capabilities. The standard 16450 UART
is capable of handling all data sizes (5, 6, 7, 8), stop characters (1, 1.5, 2) and parity types (even odd,
mark, or space). The 16450 is the UART used in this example.
The Modem Interface tuple, which starts with the second CISTPL_FUNCE code, details the
functionality of the modem . This tuple string describes the modem characteristics. This is a eleven
byte tuple, starting with the standard code and link tuples. The next byte deals with the flow
control methods of the modem. Flow control is the handshaking between two modems and is used
to decide if the connection can support the sending/receiving of new information. A byte value of
1Fh corresponds to the support of all flow control methods including hardware and software flow
control. This tuple also describes the chip set feature of a 40 character DCE Command Buffer, and 2
character buffers. The 40 character command buffer gives the tuple value of 09h because the
formula used for calculation is to take the buffer size, divide by 4, then subtract a 1 (size = n, n/4-1).
On our example card, the two character buffers are 200 character DCE to DCE and DTE to DCE
buffers.
The Data Modem tuple is the third of the five CISTPL_FUNCE code tuples. This tuple describes the
data rates, modulation schemes, error correction and detection, command protocols, and the ITU-
T(CCITT) Country code. This tuple string is 14 bytes long, starting with the standard tuple code and
link. The values for this string of data comes straight off of the modem chip set (internal to the card)
data sheets, consequently, when developing the data for this tuple refer to the appropriate data
sheets.
The Fax tuple is the final function extension tuple in this section. This tuple is a minimum of ten
bytes, but must be replicated for each supported Service class. As with the Data modem tuple, the
features described are the maximum data rate, modulation schemes, and country code.
72 ©1999PCMCIA/JEIDA
GUIDELINES
The TPCC_SZ field indicates the number of bytes in the configuration registers base address, and
the configuration register presence mask. The values of these registers are detailed in the bytes
following the size field.
The TPCC_LAST field gives the value that corresponds to the final entry in the card configuration
table. For communications cards that are being designed for use with PCs, this value will
correspond to COM4. In this example a 23H corresponds to COM4.
The TPCC_RADR field indicates the address of the configuration registers in Attribute memory
address space. At least one byte of address is required. If more than one byte is needed, the LSB
should be presented first.
The TPCC_RMSK field gives the number of registers that start at the base address in Attribute
memory address space. Each bit in the field corresponds to the presence or absence of a register.
The host would use this information along with the value in the RADR field to determine the
location of the cardÕs configuration register set.
© 1999 PCMCIA/JEIDA 73
SOFTWARE GUIDELINES
As with all tuples, the configuration tuple begins with the tuple code and the link to the next tuple.
After the link is the Table Index Byte. A value of E0H defines that this entry is the default entry,
that a set of interface descriptions follow, and that a value of 20H must be written into the
Configuration register to enable the card.
The Interface Description field, feature selection byte field, and Power Selection byte are straight
forward and describe that the card is an I/O card, that it supports the Wait line of the 68 pin
interface, and details that the following bytes will describe the Voltage, Current, Wait scale, address
port, Power Down features and Audio features of the card.
The most confusing bytes of information in this section are the Power Description Structure
Parameter Definitions. These are not required, but help the system to get a full description of the
card. Since this is confusing, we will step through the description in detail. Table 4-9: Power
Extension Fields for Tuple 1Bh through Table 4-11: Mantissa Values are the tables given in the
specification that detail the power description structure.
Byte 7 6 5 4 3 2 1 0
0 Ext Mantissa Exponent
1 Ext Extension
74 ©1999PCMCIA/JEIDA
GUIDELINES
Exponent The Exponent of the Current and Voltage Values are given below:
Exponent Current Scale Voltage Scale
0 100 nA 10 uV
1 1 uA 100 uV
2 10 uA 1 mV
3 100 uA 10 mV
4 1 mA 100 mV
5 10 mA 1V
6 100 mA 10 V
7 1A 100 V
The nominal voltage is an example of a value not needing an extension. Looking at byte 0, the
extension bit will be 0, since no extension is needed because the value can be defined with only one
byte. The mantissa which occupies bits 6-3 will be an AH. This is seen from Table 4-11: Mantissa
Values, where an AH represents the numerical value of 5. The Exponent which occupies bits 2-0 will
be a 5 since the Voltage scale is 1V. Grouping all of the bits together gives a value of 55H.
The Peak Current of 197 mA needs an extension byte, byte 1, because the value to be described has
3 significant digits. As with the voltage, the designer must first look at byte 0. In this case bit 7 will
be a 1, thus signifying that an extension byte follows. The mantissa will be a 0 because the value to
be described is a 1 (see Table 4-11: Mantissa Values). Since we are looking at the 100 mA range, the
Current scale for the exponent is 6. When put together the byte 0 value is 86H . This takes care of
the 100Õs portion of the value. To get the remaining 97 mA defined, the extension byte is used. The
value shown of 61H is the hex value for 97.
© 1999 PCMCIA/JEIDA 75
SOFTWARE GUIDELINES
76 ©1999PCMCIA/JEIDA
GUIDELINES
4.5.1 Summary
The following is the suggested additions to the example Tuple requirements already proposed in
other Guidelines.
4.5.2 Background
This is part of a series of proposed guidelines which describe sample CISs for a variety of cards.
4.5.3 Guideline
© 1999 PCMCIA/JEIDA 77
SOFTWARE GUIDELINES
4.6.1 Summary
Following is a summary of 16-bit PC Card ATA CIS considerations with actual samples for PC Card
ATA tuple options. Although much of this information is also pertinent to CardBus PC Cards, the
particular example does not deal with how CardBus PC Card ATA cardÕs CIS should be designed.
4.6.2 Background
This is part of a series of proposed guidelines which describe sample CISs for a variety of cards.
4.6.3 Guideline
Following is the recommended minimum set of tuples for PC Card ATA cards. The tuples are listed
in the order in which they would generally be encountered while scanning the CIS on the card. The
tuples are defined in the Metaformat Specification and the PC Card ATA Specification. In some
cases, the tuple is only required if a card has certain characteristics (e.g., memory mapped ATA
registers). In this case, this is noted in the table. If this guideline is found to differ with an explicit
statement in the Metaformat or PC Card ATA Specifications, those specifications shall be the
controlling documents. Examples for the required and some optional configurations are included for
the Configuration Table Entry tuple.
Note:
Shading is used to indicate portions of tuples which are dependent on the
characteristics of a particular implementation of a PC Card ATA card.
78 ©1999PCMCIA/JEIDA
GUIDELINES
01H Device Info Tuple(Common) PC Card Required Required Required Specifies speed and size of
Standard Null Device Function As needed to Common Memory Areas (e.g.,
Metaformat required if Specific define card PC Card ATA Memory Mapped
no memory Regs memory Registers) at 5 Volts VCC when
space on space WAIT# signal is ignored by
card host. If no common memory
space on card is accessible at 5
Volts VCC it must be
DTYPE_NULL and
DSPEED_NULL.
1CH Other Conditions Device Info PC Card Required Required As needed Characteristics of Memory
(Common) Standard Only if Only if for other Address Spaces under other
Metaformat WAIT# or WAIT# or functions operating conditions as follows
3V VCC used 3V VCC used for Other Conditions Info
on card. on card. Values:
Otherwise, Otherwise, 0: Not Allowed
not present. not present.
1: 5 Volt VCC, Host uses WAIT#
2: 3 Volt VCC, Host ignores
WAIT#
3: 3 Volt VCC, Host uses WAIT#
Others: Reserved
18H JEDEC ID (Common) PC Card None Required As needed Defines the type of device for
Standard DF-01 for other each range of memory space
Metaformat DF-02 functions defined in the Device ID Tuple.
Values: DF-04 PC Card ATA JEDEC IDs:
PC Card DF-08 DF-01: No VPP Required
ATA DF-02: VPP on Write Required
DF-04: VPP for Media Access
DF-08: VPP Always Required
20H ManufacturerÕs ID PC Card Recom- Recom- Recom- Recommended for all cards to
Standard mended mended mended identify the Specific
Metaformat Manufacturer and Product in the
card. Must not be used for
general card recognition. Host
should use Function ID and
Function Extension tuples
instead.
15H Level 1 Version / Product PC Card Recom- Recom- Recom- Recommended for all cards to
Standard mended mended mended display product identification
Metaformat strings in ASCII to end users.
Must not be used by host
software to determine card
function unless standard
methods have failed. Host
should use Function ID and
Function Extension Tuples.
© 1999 PCMCIA/JEIDA 79
SOFTWARE GUIDELINES
22H Function Extension following PC Card Strongly Strongly Not Used. PC Card ATA Features
Disk Function ID tuple: ATA Spec Recom- Recom- Description for first (or only)
TPLFE_TYPE = 02H mended for mended for drive on card.
TPLFE_DATA = as needed pre-PC pre-PC
by card Card Card
Standard, Standard,
Feb. 1995. Feb. 1995.
Required for Required for
PC Card PC Card
Standard, Standard,
Feb. 1995 Feb. 1995
and Dual and Dual
Drive Card. Drive Card.
22H Function Extension following PC Card Required for Required for Not Used. PC Card ATA Features
Disk Function ID tuple: ATA Spec Dual Drive Dual Drive Description for second drive on
TPLFE_TYPE = 03H Card. Card. card.
TPLFE_DATA = as needed Otherwise, Otherwise,
by card Not Present. Not Present.
1AH Card Configuration PC Card Required Required As needed Specifies location of Card
Standard by other Configuration Option Register
Metaformat functions. and presence of other Card
Configuration Registers. Must
be used by host to determine
location of configuration
registers.
80 ©1999PCMCIA/JEIDA
GUIDELINES
1BH Configuration Entry PC Card Not Used Required Additional Defines card operation when
with Configuration Index=UU Standard information card emerges from reset with
(00H as used in example is as needed the memory mapped only
strongly recommended as an by interface active. The Memory
index value for cards concurrent Mapped PC Card ATA mode
supporting Memory Mapped additional should be active in this state if
PC Card ATA mode.) card the mode is supported by the
Specific Index values are at function. card. Card support in this
the discretion of the card configuration for MWAIT on
vendor. Common Memory, Ready, and
Write Protect Switch functions
in memory mode can be
indicated. Power and Memory
Space requirements are defined
here. I/O space and Interrupts
may not be defined because no
I/O exists in the Memory Only
Interface.
1BH Configuration Entry with PC Card Required Not Used Additional Defines card operation when
Configuration Index = VvH Standard for Memory function card is placed in PC Card ATA
(01H in example) Metaformat mode, but Contiguous I/O mode. Card
Required support in this configuration for
for I/O MWAIT on Common Memory,
modes also Ready, and Write Protect
supported on Switch functions in I/O mode
card. can be indicated. Power, I/O
Space (4 address lines decode
only), and Interrupt (any)
requirements are defined here.
1BH Configuration Entry with PC Card Required Not Used May contain Defines card operation when
Configuration Index = XXH. Standard for Memory additional card is placed in PC Card ATA
(02H in example) Metaformat Mode, but information Primary I/O mode. Card
Required as needed support in this configuration for
for I/O by additional MWAIT on Common Memory,
modes also card Ready, and Write Protect
supported on function. Switch functions in I/O mode
card. can be indicated. Power, I/O
Space (10 address lines
decoded, Windows 1F0-1F7
and 3F6-3F7) requirements and
Interrupt (usually IRQ 14 for AT
BIOS compatibility)
recommendations are defined
here.
© 1999 PCMCIA/JEIDA 81
SOFTWARE GUIDELINES
1BH Configuration Entry with PC Card Required Not Used for May contain Defines card operation when
Configuration Index = YYH. Standard Memory additional card is placed in PC Card ATA
Metaformat Mode, but information Secondary I/O mode. Card
(03H in example)
Required for as needed support in this configuration for
I/O modes by additional MWAIT on Common Memory,
also card Ready, and Write Protect
supported on function. Switch functions in I/O mode
card. can be indicated. Power, I/O
Space (10 address lines
decoded, Windows 170-177 and
376-377) requirements and
Interrupt (usually IRQ 14 for AT
BIOS compatibility)
recommendations are defined
here.
1BH Configuration Entry with PC Card Required for Required for May contain Set of configurations with
Configuration Index = ZZH. Standard each each additional unique Configuration Index
Metaformat additional additional information values are used to alternative
(not shown in example)
config- config- as needed PC Card ATA configurations.
uration uration by additional These configurations may differ
present. present. card from the previous four
function. configurations in requirements
for Power, I/O and Memory
Space decoding,
14H No-Link Control PC Card Strongly Strongly Strongly Prevents tuple processing from
Standard Recom- Recom- Recom- doing an implied long link jump
Metaformat mended. mended. mended. to common memory. Should
not appear if an explicit Long
Link tuple is present.
FFH End of List PC Card Required Required Required Terminates each tuple list on
Standard unless FFh unless FFh unless FFh the card.
Metaformat link used. link used link used
82 ©1999PCMCIA/JEIDA
GUIDELINES
© 1999 PCMCIA/JEIDA 83
SOFTWARE GUIDELINES
Table 4-16: Sample Other Conditions Device Info TupleÐ1CH Required only if 3V VCC or
WAIT# signal is supported by card for Common Memory cycles
Order: Size Data 7 6 5 4 3 2 1 0 Description of Contents CIS Function
1: 1 Byte 1CH CISTPL_DEVICE_OC Other Conditions Device Info Tuple Tuple Code
2: 1 Byte ??H TPL_LINK Link to next tuple
3: 1 Byte 0?H E R R R R R 3 M Other Conditions Which Apply: Other Conditions Info Field
MWAIT = 1: WAIT# Signal Used
3VCC = 1: 3 Volt VCC Used
EXT = 1: Extension Bytes Follow
RSVD: Reserved, must be 0
01H 0 0 0 0 0 0 0 1 WAIT# Signal Used, 5 V VCC
02H 0 0 0 0 0 0 1 0 WAIT# Signal Not Used, 3 V VCC
03H 0 0 0 0 0 0 1 1
WAIT# Signal Used, 3 V VCC
all others reserved
4: 0 or more ??H Device ID Structures for Other For Memory Mapped PC Card ATA. Device ID Structures
Bytes Devices or Null Devices for When PC Card ATA registers are not at which apply for WAIT#
address offset computation address offset 0, Device ID Structures used in common memory.
preceding this byte must have sizes which One to one
sum to the offset address of the PC Card correspondence with
ATA registers. Device ID Tuple fields.
5: 1 Byte ??H Device Type W Dev Device Type, WPS, Speed
P Speed when WAIT# is supported.
D9H DH = Func 1 1 = 250 ns Func Specific, No WPS, speed 250 PC Card ATA Regs
Spec
00H 0H = Null 0 0 = Null No Memory Mapped PC Card ATA No Device
6: 1 Byte ??H Addr Units - 1 Unit Size Device Size Byte for
01H 1 unit of 2 K bytes 2 Kilobyte Address Space PC Card ATA Regs
7: 0 or more Device ID Structures for When other memory devices exist in Device ID Structures. One
Bytes Common Memory Space used common memory, additional Device ID to one correspondence
by Other Card Functions Structures may occur before the List End with Device ID Tuple
Marker. fields.
8: 1 Byte FFH List End Marker End of Devices End Marker
84 ©1999PCMCIA/JEIDA
GUIDELINES
© 1999 PCMCIA/JEIDA 85
SOFTWARE GUIDELINES
86 ©1999PCMCIA/JEIDA
GUIDELINES
Table 4-22: Sample Disk Function ExtensionÐPC Card ATA Parameters Tuple
Strongly Recommended. Required for PC Card Standard Feb. 1995 and Dual Drive PC Card
ATA
Order: Size Data 7 6 5 4 3 2 1 0 Description of Contents CIS Function
0: 1 Byte 22H CISTPL_FUNCE Function Extension tuple Tuple Code
1: 1 Byte 03H this tuple has 3 info bytes Link Length
2: 1 Byte 02H or Disk Function Basic PC Card ATA Features Function Extension Tuple Type for
03H Extension Tuple Type Extension tuple Disk Function
02H 02H Single Drive Features
or Master of Dual Drive Features
03H 03H Slave of Dual Drive Features
© 1999 PCMCIA/JEIDA 87
SOFTWARE GUIDELINES
4: 1 Byte ??H TPCC_LAST Entry with Config Index of ?? is final entry last entry of configuration
in table table
5: 1-4 Bytes 00H TPCC_RADR (lsb) Configuration Registers are Location of Config
02H TPCC-RADR (msb) located at 200H in Reg Space Registers
6: 1 Byte ??H R R R E S P C I I Configuration Index TPCC_RMSK
(when more Required for All PC Card ATA Cards.
1 1
configuration C Configuration and Status
Registers are Required only if power-down, audio, or
defined, this field Signal on Change is supported.
may be longer
P Pin Replacement
Required only if Ready, Write Protect, or
BVDs supported in I/O mode.
S Socket and Copy
Required only for cards supporting Twin
Card option.
R Reserved for future use.
07H 0 0 0 0 0 1 1 1 First 3 Configuration Registers present
(No Socket and Copy)
0FH 0 0 0 0 1 1 1 1 First 4 Configuration Registers present
88 ©1999PCMCIA/JEIDA
GUIDELINES
Table 4-24: Sample Configuration Entry Tuple for Memory Mapped I/O PC Card ATA
Configuration
Required if Memory Mapped ATA Registers Supported
Order: Size Data 7 6 5 4 3 2 1 0 Description of Contents CIS Function
1: 1 Byte 1BH CISTPL_CFTABLE_ENTRY Configuration Table Entry Tuple Tuple Code
2: 1 Byte ??H Link to next tuple is N bytes. Also limits Link to next tuple
size of this tuple to N+2 bytes.
3: 1 Byte ??H I D Configuration Index I=1: Interface Byte Follows TPCE_INDX
D=1: Independent ÒDefaultÓ Entry
Card Configuration Index for Entry
C0H 1 1 0 Interface Byte Follows, Default Entry, PC Card ATA Memory
Configuration Index = 0 Mapped I/O
Configuration.
4: 1 Byte C0H W R P B Interface Type WAIT=1: Wait Used on Mem Cycles TPCE_IF
READY=1: Ready Active
WP=1: Write Prot Switch Active
BVD=1: BVD1 and BVD2 Active
IF Type=0: Memory Only I/F
IF Type=1: I/O and Memory I/F
IF Type=2-3,8-F: Reserved
IF Type=4-7: Custom Interface
C0H 1 1 0 0 0 Mem Interface (0); BvdÕs and wProt not TPCE_IF
used; Ready active and Wait used for
memory cycles.
5: 1 Byte M MS IR IO T P P Power info type TPCE_FS
T Timing info present
IO I/O port info present
IR Interrupt info present
MS Mem space info type
M Misc info byte(s) present
A1H 1 1H 0 0 0 1H Has VCC, Mem Space and Misc Info VCC Only Card
A2H 1 1H 0 0 0 2H Has VCC, VPP, Mem Space and Misc Info VCC, VPP Card
present
6: 1 Byte 01H R D PI AI SI H LV N Nominal Voltage Only Follows Power Parameters for VCC
I V V NV Nominal Voltage Info present
LV Minimum Voltage Info present
HV Maximum Voltage Info present
SI Static Current Info present
AI Average Current Info present
PI Peak Current Info present
DI Power Down Current Info present
R Reserved, must be 0.
01H 0 0 0 0 0 0 0 1 Nominal Voltage Only Follows
11H 0 0 0 1 0 0 0 1 Nom Voltage, Average Current
© 1999 PCMCIA/JEIDA 89
SOFTWARE GUIDELINES
Table 4-24: Sample Configuration Entry Tuple for Memory Mapped I/O PC Card ATA
Configuration (Continued)
Required if Memory Mapped ATA Registers Supported
7: 1 or more X Mantissa Exponent VCC Nominal is 5 Volts VCC Nominal Value
bytes present 55H 0 AH= 5.0 5H= 1 V
only if NV=1
90 ©1999PCMCIA/JEIDA
GUIDELINES
Table 4-25: Sample Contiguous I/O Mapped ATA Registers Configuration Entry Tuple
Required for PC Card ATA Devices
Order: Size Data 7 6 5 4 3 2 1 0 Description of Contents CIS Function
1: 1 Byte 1BH CISTPL_CFTABLE_ENTRY Configuration Table Entry Tuple Tuple Code
2: 1 Byte ??H Link to next tuple is N bytes. Also limits Link to next tuple
size of this tuple to N+2 bytes.
3: 1 Byte ??H I D Configuration Index I = 1: Interface Byte Follows TPCE_INDX
D = 1: Default Table Entry
Conf Index: Index Value written to Card
Config Option to select this entry
??H 1 1 ??H Default Entry, Interface specified in next I/O Mapped Contiguous
byte 16 registers
Configuration.
Card Configuration 1
C1H 01H
4: 1 Byte W R P B Interface Type See Mem Mapped Sample Tuple TPCE_IF
41H 0 1 0 0 1 I/O Interface (); BvdÕs and wProt not used;
READY active and WAIT# not used for
memory cycles.
5: 1 Byte M MS IR IO T P See Mem Mapped Sample Tuple TPCE_FS
99H 1 0H 1 1 0 1H Has VCC, I/O, IRQ and Misc Info VCC Only Card
9AH 1 0H 1 1 0 2H Has VCC, VPP, I/O, IRQ and Misc Info VCC, VPP Card
present
6: 1 Byte ??H R D PI AI SI H LV N See Mem Mapped Sample Tuple Power Parameters for VCC
I V V
01H 0 0 0 0 0 0 0 1 Nominal Voltage Only Follows
11H 0 0 0 1 0 0 0 1 Nom Voltage, Average Current
7: 1 or more X Mantissa Exponent VCC Nominal is 5 Volts VCC Nominal Value
bytes present 55H 0 AH= 5.0 5H= 1 V
only if NV=1
© 1999 PCMCIA/JEIDA 91
SOFTWARE GUIDELINES
Table 4-25: Sample Contiguous I/O Mapped ATA Registers Configuration Entry Tuple
Required for PC Card ATA Devices (Continued)
11: 1 Byte R S E IO AddrLines IO AddrLines: #lines decoded TPCE_IO
Eight bit only hosts supported
Sixteen bit hosts supported
Range (I/O) follows
64H 0 1 1 4 Supports both 8 and 16 bit I/O hosts. 4
Address lines and no range so 16 registers
and host must do all selection decoding.
12: 3 Bytes S P L M Level or Mask Share (IRQ) Logic Active TPCE_IR
0 IRQ Level Pulse Mode IRQ Supported TPCE_IR
1 V B I N Level Mode IRQ Supported
M: Bit Mask of IRQs Present
IRQ Level (single)
Vendor Unique IRQ
Bus Error IRQ
IO Check IRQ
Non-Maskable IRQ
F0H 1 1 1 1 0 0 0 0 IRQ Sharing Logic Active in Card Control
& Status Register, Pulse and Level Mode
Interrupts supported, Recommended IRQÕs
any of 0 through 15 (F)
92 ©1999PCMCIA/JEIDA
GUIDELINES
Table 4-26: Sample ATA Primary I/O Mapped Configuration Entry Tuple
Required for PC Card ATA Devices
Order: Size Data 7 6 5 4 3 2 1 0 Description of Contents CIS Function
1: 1 Byte 1BH CISTPL_CFTABLE_ENTRY Configuration Table Entry Tuple Tuple Code
2: 1 Byte ??H Link to next tuple is N bytes. Also limits Link to next tuple
size of this tuple to N+2 bytes.
3: 1 Byte I D Configuration Index I = 1: Interface Byte Follows TPCE_INDX
D = 1: Default Table Entry
Conf Index: Index Value written to Card
Config Option to select this entry
??H ? 0 ??H Non Default Entry: Dependent on Previous ATA Primary Address
Default Entry (Contiguous I/O). All 1F0-1F7, 1F6-3F7
unspecified fields taken from specified in Configuration.
next byte
1 0 Sample Configuration Index = 2
82H 02H
4: 1 Byte W R P B Interface Type See Mem Mapped Sample Tuple TPCE_IF
41H 0 1 0 0 1 I/O Interface (); BvdÕs and wProt not used;
READY active and WAIT# not used for
memory cycles.
5: 1 Byte M MS IR IO T P See Mem Mapped Sample Tuple TPCE_FS
© 1999 PCMCIA/JEIDA 93
SOFTWARE GUIDELINES
Table 4-26: Sample ATA Primary I/O Mapped Configuration Entry Tuple
Required for PC Card ATA Devices (Continued)
10: 2 Bytes F6H 3F6 (LSB) = F6H Second I/O Base Address (LSB) 2nd I/O Range Addr
03H 3F6 (MSB) = 03H Second I/O Base Address (MSB) 2nd I/O Range Addr
11: 1 Byte 01H 2 Byte Length - 1 = 01H Second I/O Length minus 1 2nd I/O Range Len
12: 1 Bytes ??H S P L M IRQ Level See Contiguous I/O Sample Tuple TPCE_IR
EEH 1 1 1 0 EH IRQ Sharing Logic Active in Card Control
& Status Register, Pulse and Level Mode
Interrupts supported, recommended IRQÕs
IRQ14 for ATA Compatibility
94 ©1999PCMCIA/JEIDA
GUIDELINES
Table 4-27: Sample ATA Secondary I/O Mapped Configuration Entry Tuple
Required for PC Card ATA Devices
Order: Size Data 7 6 5 4 3 2 1 0 Description of Contents CIS Function
1: 1 Byte 1BH CISTPL_CFTABLE_ENTRY Configuration Table Entry Tuple Tuple Code
2: 1 Byte ??H Link to next tuple is N bytes. Also limits Link to next tuple
size of this tuple to N+2 bytes.
3: 1 Byte ??H I D Configuration Index I = 1: Interface Byte Follows TPCE_INDX
D = 1: Default Table Entry
Conf Index: Index Value written to Card
Config Option to select this entry
??H ? 0 ??H Non Default Entry: Dependent on Previous ATA Secondary Address
Default Entry (Contiguous I/O). All 170-177, 176-377
unspecified fields taken from specified in Configuration.
next byte
Sample Configuration Index = 2
83H 1 0 03H
4: 1 Byte 41H W R P B Interface Type See Mem Mapped Sample Tuple TPCE_IF
41H 0 1 0 0 1 I/O Interface (); BvdÕs and wProt not used;
READY active and WAIT# not used for
memory cycles.
5: 1 Byte M MS IR IO T P See Mem Mapped Sample Tuple TPCE_FS
18H 0 0H 1 1 0 0H Has Power, Timing, Mem Space and Misc
Info taken from contiguous configuration.
I/O and IRQ Info specified here.
6: 1 Byte E4H R S E IO AddrLines See Contiguous I/O Sample Tuple TPCE_IO
EAH 1 1 1 0AH Supports both 8 and 16 bit I/O hosts. 10
Address lines and with range(s)
7: 1 Bytes ??H LS AS N Ranges See ATA Primary I/O Tuple Sample
61H 1 2 1 2 Address Ranges with 2 byte addresses
and 1 byte lengths
8: 2 Bytes 70H 170 (LSB) = 70H First I/O Base Address (LSB) First I/O Range Addr
01H 170 (MSB) = 01H First I/O Base Address (MSB) First I/O Range Addr
9: 1 Byte 07H 8 Byte Length - 1 = 07H First I/O Length minus 1 First I/O Range Len
10: 2 Bytes 76H 376 (LSB) = 76H Second I/O Base Address (LSB) 2nd I/O Range Addr
03H 376 (MSB) = 03H Second I/O Base Address (MSB) 2nd I/O Range Addr
11: 1 Byte 01H 2 Byte Length - 1 = 01H Second I/O Length minus 1 2nd I/O Range Len
12: 1 Bytes ??H S P L M IRQ Level See Contiguous I/O Sample Tuple TPCE_IR
EEH 1 1 1 0 EH IRQ Sharing Logic Active in Card Control
& Status Register, Pulse and Level Mode
Interrupts supported, recommended IRQÕs
IRQ14 for ATA Compatibility.
© 1999 PCMCIA/JEIDA 95
SOFTWARE GUIDELINES
This tuple prevents the CIS parser from attempting the implied long link to address 0 in common
memory after parsing the first tuple chain on the card.
96 ©1999PCMCIA/JEIDA
GUIDELINES
4.7 Guideline for CIS Tuples for 3.3 or 3.3/5 volt Operation
4.7.1 Introduction
4.7.1.1 Purpose
This document is designed to provide implementation examples and further explanations of the PC
Card standards in order to:
· enhance the interoperability of PC Card components, including card hardware and software,
system hardware and software, and applications.
· facilitate the development of PC Card hardware and software by increasing the understanding
of the standard by PC Card implementation community.
These guidelines are not requirements made by the PCMCIA/JEIDA standards organizations.
Rather, they are implementation examples, suggestions and hints.
4.7.1.2 Scope
This document presents CIS examples for three distinct PC Card implementation options. Section
4.7.2 CIS for a PC Card with 3.3 volt Only Operation, provides a CIS example for a 16-bit PC Card
that operates at 3.3 volts VCC only. Section 3 provides a CIS example for a 16-bit PC Card that can
operate at either 3.3 or 5 volts. Section 4 provides a CIS example for a CardBus PC Card.
The CIS examples shown in this document are intended to describe only the tuples and tuple fields
effected by the 3.3 or 3.3/5 volt operation characteristics of the card. The implementor should refer
to the guideline for the specific card being implemented, for example, MODEM, ATA, or CardBus,
for the general CIS guideline for the card and consider this guideline additional material dealing
with 3.3 or 3.3/5 volt operation that may add tuples or define certain tuple fields.
This guidelines section is meant to be an illustration of how the PC Card Standard is used and not
an additional source of such standards.
© 1999 PCMCIA/JEIDA 97
SOFTWARE GUIDELINES
4.7.2.1 CISTPL_DEVICE_OC
In this guideline, the CISTPL_DEVICE_OC has the VCC field set to one (1) in the Other Conditions
Information Field and provides Device Info fields describing operation at 3.3 volts. If a
CISTPL_DEVICE_A tuple exists, CISTPL_DEVICE_OA tuple shall also be present to describe the 3.3
volt operation of attribute memory.
98 ©1999PCMCIA/JEIDA
GUIDELINES
4.7.2.2 CISTPL_CONFIG
A CISTPL_CONFIG may exist to describe interface, power, timing, window, interrupt, and other
information for 3.3 volt operation. This shall be followed by CISTPL_CFTABLE_ENTRY tuples for
each configuration supported by the PC Card. In this example, two configuration entries are shown
describing two different interface alternatives, both at 3.3 volts.
4.7.2.3 CISTPL_CFTABLE_ENTRY
A CISTPL_CFTABLE_ENTRY for each different configuration supported by the PC Card follows the
CISTPL_CONFIG tuple. Following the example above, two configurations are described.
© 1999 PCMCIA/JEIDA 99
SOFTWARE GUIDELINES
100 ©1999PCMCIA/JEIDA
GUIDELINES
4.7.3.1 CISTPL_DEVICE
As noted previous, the CISTPL_DEVICE tuple is required to be the first tuple in the CIS. The
CISTPL_DEVICE tuple indicates characteristics for 5 volt operation and a CISTPL_DEVICE_OC tuple
shall exist to indicate 3.3 volt operation and characteristics.
34 08H Number of address units - 1 (01H) Size Code (0H) Device Size (Two 512 byte
units or 1 K byte)
A CISTPL_DEVICE_A tuple may also be present in the CIS. The CISTPL_DEVICE_A tuple also
describes 5 volt operation and requires a CISTPL_DEVICE_OA tuple be present to describe 3.3 volt
operation.
4.7.3.2 CISTPL_DEVICE_OC
In this example, the CISTPL_DEVICE_OC has the VCC field set to one (1) in the Other Conditions
Information Field and provides Device Info fields describing operation at 3.3 volts.
102 ©1999PCMCIA/JEIDA
GUIDELINES
Note: When the Device Info field in both the CISTPL_DEVICE and
CISTPL_DEVICE_OC tuples is non-zero the host is made aware that the card
is capable of operating at either 3.3 or 5 volts. In addition, the host knows
that the common memory cycle time is 200ns when operating at 5 volts and
250ns when operating at 3.3 volts.
4.7.3.3 CISTPL_CONFIG
A CISTPL_CONFIG tuple may exist to describe the interface, power, window, and other information
for 3.3 and 5 volt operation. The CISTPL_CONFIG tuple is followed by CISTPL_CFTABLE_ENTRY
tuples for each configuration supported by the PC Card. In this example, four configuration entries
are described, one for each of two interface alternatives at each of the two voltage alternatives.
4.7.3.4 CISTPL_CFTABLE_ENTRY
A CISTPL_CFTABLE_ENTRY tuple for each configuration supported by the PC Card follows the
CISTPL_CONFIG tuple. Following the example above, four configurations are described.
104 ©1999PCMCIA/JEIDA
GUIDELINES
106 ©1999PCMCIA/JEIDA
GUIDELINES
108 ©1999PCMCIA/JEIDA
GUIDELINES
4.7.4.1 CISTPL_DEVICE_OC
The CISTPL_DEVICE_OC has the VCC field set to one (1) in the Other Conditions Information Field
and provides Device Info fields describing operation at 3.3 volts.
4.7.4.2 CISTPL_CONFIG_CB
A CISTPL_CONFIG_CB descibes the interface, power, timing, window, interrupt, and other
information for 3.3 volt operation. The CISTPL_CONFIG_CB tuple shall be followed by
CISTPL_CFTABLE_ENTRY_CB tuples for each configuration supported by the PC Card. In this
example, one configuration entry is shown describing operation at 3.3 volts.
4.7.4.3 CISTPL_CFTABLE_ENTRY_CB
Following the CISTPL_CONFIG_CB will be a CISTPL_CFTABLE_ENTRY_CB for each different
configuration alternative that the function can provide. Following the example from above, one
configuration is described.
110 ©1999PCMCIA/JEIDA