diff options
Diffstat (limited to 'public/sdk/inc/ntddpcm.h')
-rw-r--r-- | public/sdk/inc/ntddpcm.h | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/public/sdk/inc/ntddpcm.h b/public/sdk/inc/ntddpcm.h new file mode 100644 index 000000000..0ff9a7eb6 --- /dev/null +++ b/public/sdk/inc/ntddpcm.h @@ -0,0 +1,161 @@ +/*++ + +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 + |