162 lines
4.2 KiB
C
162 lines
4.2 KiB
C
/*++
|
|
|
|
Copyright (c) 1994 Digital Equipment Corporation
|
|
|
|
Module Name:
|
|
|
|
ntddpcm.h
|
|
|
|
Abstract:
|
|
|
|
This is the include file that defines all constants and types for
|
|
accessing the PCMCIA Adapters.
|
|
|
|
Author:
|
|
|
|
Jeff McLeman
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#ifndef _NTDDPCMH_
|
|
#define _NTDDPCMH_
|
|
|
|
//
|
|
// Device Name - this string is the name of the device. It is the name
|
|
// that should be passed to NtOpenFile when accessing the device.
|
|
//
|
|
// Note: For devices that support multiple units, it should be suffixed
|
|
// with the Ascii representation of the unit number.
|
|
//
|
|
|
|
#define IOCTL_PCMCIA_BASE FILE_DEVICE_CONTROLLER
|
|
|
|
#define DD_PCMCIA_DEVICE_NAME "\\\\.\\Pcmcia"
|
|
|
|
|
|
//
|
|
// IoControlCode values for this device.
|
|
//
|
|
// Warning: Remember that the low two bits of the code specify how the
|
|
// buffers are passed to the driver!
|
|
//
|
|
|
|
#define IOCTL_GET_TUPLE_DATA CTL_CODE(FILE_DEVICE_CONTROLLER, 3000, \
|
|
METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
#define IOCTL_CONFIGURE_CARD CTL_CODE(FILE_DEVICE_CONTROLLER, 3001, \
|
|
METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
#define IOCTL_CARD_EVENT CTL_CODE(FILE_DEVICE_CONTROLLER, 3002, \
|
|
METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
#define IOCTL_CARD_REGISTERS CTL_CODE(FILE_DEVICE_CONTROLLER, 3003, \
|
|
METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
#define IOCTL_SOCKET_INFORMATION CTL_CODE(FILE_DEVICE_CONTROLLER, 3004, \
|
|
METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
#define IOCTL_PCMCIA_CONFIGURATION CTL_CODE(FILE_DEVICE_CONTROLLER, 3005, \
|
|
METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
#define IOCTL_OPEN_ATTRIBUTE_WINDOW CTL_CODE(FILE_DEVICE_CONTROLLER, 3006, \
|
|
METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
#define IOCTL_CLOSE_ATTRIBUTE_WINDOW CTL_CODE(FILE_DEVICE_CONTROLLER, 3007, \
|
|
METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//
|
|
// Tuple request parameters.
|
|
//
|
|
|
|
#define PCMCIA_MAX_IO_PORT_WINDOWS 2
|
|
#define PCMCIA_MAX_MEMORY_WINDOWS 4
|
|
|
|
typedef struct _TUPLE_REQUEST {
|
|
USHORT Socket;
|
|
} TUPLE_REQUEST, *PTUPLE_REQUEST;
|
|
|
|
typedef struct _PCMCIA_CONFIG_REQUEST {
|
|
USHORT Socket;
|
|
UCHAR ConfigureIo;
|
|
UCHAR ConfigurationIndex;
|
|
|
|
//
|
|
// Query just returns the current socket configuration.
|
|
//
|
|
|
|
UCHAR Query;
|
|
|
|
//
|
|
// Power - zero means power off the socket (i.e. remove configuration)
|
|
//
|
|
|
|
UCHAR Power;
|
|
|
|
//
|
|
// IRQ support.
|
|
//
|
|
|
|
UCHAR DeviceIrq;
|
|
UCHAR CardReadyIrq;
|
|
|
|
//
|
|
// I/O port support.
|
|
//
|
|
|
|
ULONG NumberOfIoPortRanges;
|
|
USHORT IoPorts[PCMCIA_MAX_IO_PORT_WINDOWS];
|
|
USHORT IoPortLength[PCMCIA_MAX_IO_PORT_WINDOWS];
|
|
USHORT IoPort16[PCMCIA_MAX_IO_PORT_WINDOWS];
|
|
|
|
//
|
|
// Memory window support.
|
|
//
|
|
|
|
ULONG NumberOfMemoryRanges;
|
|
ULONG HostMemoryWindow[PCMCIA_MAX_MEMORY_WINDOWS];
|
|
ULONG PCCARDMemoryWindow[PCMCIA_MAX_MEMORY_WINDOWS];
|
|
ULONG MemoryWindowLength[PCMCIA_MAX_MEMORY_WINDOWS];
|
|
BOOLEAN AttributeMemory[PCMCIA_MAX_MEMORY_WINDOWS];
|
|
} PCMCIA_CONFIG_REQUEST, *PPCMCIA_CONFIG_REQUEST;
|
|
|
|
#define MANUFACTURER_NAME_LENGTH 64
|
|
#define DEVICE_IDENTIFIER_LENGTH 64
|
|
#define DRIVER_NAME_LENGTH 32
|
|
|
|
//
|
|
// Controller types returned in socket information structure.
|
|
//
|
|
|
|
#define PcmciaIntelCompatible 0
|
|
#define PcmciaElcController 1
|
|
#define PcmciaCirrusLogic 2
|
|
#define PcmciaDatabook 3
|
|
|
|
typedef struct _PCMCIA_SOCKET_INFORMATION {
|
|
|
|
USHORT Socket;
|
|
USHORT TupleCrc;
|
|
UCHAR Manufacturer[MANUFACTURER_NAME_LENGTH];
|
|
UCHAR Identifier[DEVICE_IDENTIFIER_LENGTH];
|
|
UCHAR DriverName[DRIVER_NAME_LENGTH];
|
|
UCHAR DeviceFunctionId;
|
|
UCHAR ControllerType;
|
|
UCHAR CardInSocket;
|
|
UCHAR CardEnabled;
|
|
|
|
} PCMCIA_SOCKET_INFORMATION, *PPCMCIA_SOCKET_INFORMATION;
|
|
|
|
//
|
|
// Structure returned to provide current configuration information
|
|
// for pcmcia driver.
|
|
//
|
|
|
|
typedef struct _PCMCIA_CONFIGURATION {
|
|
|
|
USHORT Sockets;
|
|
UCHAR Reserved;
|
|
UCHAR ControllerType;
|
|
USHORT IoPortBase;
|
|
USHORT IoPortSize;
|
|
ULONG MemoryWindowPhysicalAddress;
|
|
|
|
} PCMCIA_CONFIGURATION, *PPCMCIA_CONFIGURATION;
|
|
|
|
#endif
|
|
|