Notes on the Windows CE PCMCIA driver for CEPC:

INIT.C:
- The values for the IRQ and the I/O ports are read from the registry key 
HKEY_LOCAL_MACHINE\Drivers\PCMCIA.

MEMORY.C:
- The memory access functions are not exported for use by client drivers.
The PCMCIA MDD is the only caller of these functions. On the CEPC platform,
a client driver should use the port access functions of CEDDK.DLL for I/O.

SOCKET.C:
- The socket controller is programmed to use one IRQ for both sockets, both
for status change interrupts and IREQ interrupts. The PCMCIA MDD performs the
necessary multiplexing to route the interrupt event to the correct client drivers.

WINDOW.C:
- An Intel compatible socket controller has 5 memory windows and 2 I/O windows
per socket. The Windows CE PCMCIA driver uses 4 of the memory windows and both
of the I/O windows. The memory windows are mapped starting at 0xD0000 and each
has a length of 8K. The memory windows can be programmed for either attribute
or common memory access.
- Since the I/O windows are mapped onto one ISA I/O port address space, the
PCMCIA PDD must check for I/O range collisions among the other I/O windows.
The collision detection is done in PDCardSetWindow. If a client driver gets a
failure from CardMapWindow, it may be able to use a different I/O range without
colliding with other I/O client drivers. The ATA driver has this capability.
- Since each memory window has its own 8K range, the collision detection done
by the PCMCIA MDD portion is sufficient to detect address range collisions.
