You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
759 lines
13 KiB
759 lines
13 KiB
/*++
|
|
|
|
Copyright (c) 1994 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
extern.h
|
|
|
|
Abstract:
|
|
|
|
External definitions for intermodule functions.
|
|
|
|
Revision History:
|
|
6-Apr-95
|
|
Databook support added.
|
|
2-Nov-96
|
|
Overhaul for plug'n'play - Ravisankar Pudipeddi (ravisp)
|
|
|
|
--*/
|
|
#ifndef _PCMCIA_EXTERN_H_
|
|
#define _PCMCIA_EXTERN_H_
|
|
|
|
//
|
|
// Global data referenced by the driver
|
|
//
|
|
extern const DEVICE_DISPATCH_TABLE DeviceDispatchTable[];
|
|
extern const PCMCIA_ID_ENTRY PcmciaAdapterHardwareIds[];
|
|
extern const PCMCIA_CONTEXT_RANGE DefaultPciContextSave[];
|
|
extern const PCMCIA_CONTEXT_RANGE DefaultCardbusContextSave[];
|
|
extern const PCMCIA_CONTEXT_RANGE ExcludeCardbusContextRange[];
|
|
extern const PCMCIA_REGISTER_INIT PcicRegisterInitTable[];
|
|
extern const PCMCIA_DEVICE_CONFIG_PARAMS DeviceConfigParams[];
|
|
extern ULONG PcmciaGlobalFlags;
|
|
extern ULONG PcmciaDebugMask;
|
|
extern PDEVICE_OBJECT FdoList;
|
|
|
|
extern ULONG globalOverrideIrqMask;
|
|
extern ULONG globalFilterIrqMask;
|
|
extern ULONG globalAttributeMemoryLow;
|
|
extern ULONG globalAttributeMemoryHigh;
|
|
extern ULONG globalAttributeMemorySize;
|
|
extern ULONG initUsePolledCsc;
|
|
extern ULONG initDisableAcpiNameSpaceCheck;
|
|
extern ULONG initDefaultRouteR2ToIsa;
|
|
extern ULONG pcmciaDisableIsaPciRouting;
|
|
extern ULONG pcmciaIsaIrqRescanComplete;
|
|
extern ULONG pcmciaIrqRouteToPciController;
|
|
extern ULONG pcmciaIrqRouteToIsaController;
|
|
extern ULONG pcmciaIrqRouteToPciLocation;
|
|
extern ULONG pcmciaIrqRouteToIsaLocation;
|
|
extern ULONG pcmciaReportMTD0002AsError;
|
|
extern ULONG pcmciaIoctlInterface;
|
|
|
|
extern GLOBAL_REGISTRY_INFORMATION GlobalRegistryInfo[];
|
|
extern ULONG GlobalInfoCount;
|
|
|
|
extern const PCI_CONTROLLER_INFORMATION PciControllerInformation[];
|
|
extern const PCI_VENDOR_INFORMATION PciVendorInformation[];
|
|
extern KEVENT PcmciaDelayTimerEvent;
|
|
extern KSPIN_LOCK PcmciaGlobalLock;
|
|
extern PPCMCIA_NTDETECT_DATA pNtDetectDataList;
|
|
extern ULONG EventDpcDelay;
|
|
extern ULONG PcmciaPowerPolicy;
|
|
extern LONG PcmciaControllerDeviceWake;
|
|
|
|
//
|
|
// Irp dispatch routines
|
|
//
|
|
|
|
VOID
|
|
PcmciaInitDeviceDispatchTable(
|
|
IN PDRIVER_OBJECT DriverObject
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaDispatch(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaFdoPnpDispatch(
|
|
IN PDEVICE_OBJECT Fdo,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaPdoPnpDispatch(
|
|
IN PDEVICE_OBJECT Pdo,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaPdoCardBusPnPDispatch(
|
|
IN PDEVICE_OBJECT Pdo,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaFdoPowerDispatch(
|
|
IN PDEVICE_OBJECT Fdo,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaPdoPowerDispatch(
|
|
IN PDEVICE_OBJECT Pdo,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaOpenCloseDispatch(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaCleanupDispatch(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaDeviceControl(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaPdoDeviceControl(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaFdoSystemControl(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaPdoSystemControl(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
//
|
|
// enumeration routines
|
|
//
|
|
|
|
NTSTATUS
|
|
PcmciaDeviceRelations(
|
|
IN PDEVICE_OBJECT Fdo,
|
|
IN PIRP Irp,
|
|
IN DEVICE_RELATION_TYPE RelationType,
|
|
OUT PDEVICE_RELATIONS *DeviceRelations
|
|
);
|
|
|
|
|
|
//
|
|
// controller support routines
|
|
//
|
|
|
|
NTSTATUS
|
|
PcmciaAddDevice(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PDEVICE_OBJECT pdo
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaStartPcmciaController(
|
|
IN PDEVICE_OBJECT Fdo
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaGetLegacyDetectedControllerType(
|
|
IN PDEVICE_OBJECT Pdo,
|
|
IN OUT PPCMCIA_CONTROLLER_TYPE ControllerType
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaSetLegacyDetectedControllerType(
|
|
IN PDEVICE_OBJECT Pdo,
|
|
IN PCMCIA_CONTROLLER_TYPE ControllerType
|
|
);
|
|
|
|
VOID
|
|
PcmciaSetControllerType(
|
|
IN PFDO_EXTENSION FdoExtension,
|
|
IN PCMCIA_CONTROLLER_TYPE ControllerType
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaInitializeController(
|
|
IN PDEVICE_OBJECT Fdo
|
|
);
|
|
|
|
VOID
|
|
PcmciaCleanupPdo(
|
|
IN PDEVICE_OBJECT Pdo
|
|
);
|
|
|
|
//
|
|
// Interface routines
|
|
//
|
|
|
|
NTSTATUS
|
|
PcmciaPdoQueryInterface(
|
|
IN PDEVICE_OBJECT Pdo,
|
|
IN OUT PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaGetInterface(
|
|
IN PDEVICE_OBJECT Pdo,
|
|
IN CONST GUID *pGuid,
|
|
IN USHORT sizeofInterface,
|
|
OUT PINTERFACE pInterface
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaGetSetPciConfigData(
|
|
IN PDEVICE_OBJECT PciPdo,
|
|
IN PVOID Buffer,
|
|
IN ULONG Offset,
|
|
IN ULONG Length,
|
|
IN BOOLEAN Read
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaUpdateInterruptLine(
|
|
IN PPDO_EXTENSION PdoExtension,
|
|
IN PFDO_EXTENSION FdoExtension
|
|
);
|
|
|
|
//
|
|
// Socket routines
|
|
//
|
|
|
|
VOID
|
|
PcmciaSocketPowerWorker(
|
|
IN PKDPC Dpc,
|
|
IN PVOID Context,
|
|
IN PVOID SystemArgument1,
|
|
IN PVOID SystemArgument2
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaRequestSocketPower(
|
|
IN PPDO_EXTENSION PdoExtension,
|
|
IN PPCMCIA_COMPLETION_ROUTINE PowerCompletionRoutine
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaReleaseSocketPower(
|
|
IN PPDO_EXTENSION PdoExtension,
|
|
IN PPCMCIA_COMPLETION_ROUTINE PowerCompletionRoutine
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaSetSocketPower(
|
|
IN PSOCKET Socket,
|
|
IN PPCMCIA_COMPLETION_ROUTINE PowerCompletionRoutine,
|
|
IN PVOID Context,
|
|
IN BOOLEAN PowerOn
|
|
);
|
|
|
|
VOID
|
|
PcmciaGetSocketStatus(
|
|
IN PSOCKET Socket
|
|
);
|
|
|
|
UCHAR
|
|
PcmciaReadCISChar(
|
|
IN PPDO_EXTENSION PdoExtension,
|
|
IN MEMORY_SPACE MemorySpace,
|
|
IN ULONG Offset
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaConfigureCardBusCard(
|
|
IN PPDO_EXTENSION pdoExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaConfigurePcCard(
|
|
IN PPDO_EXTENSION pdoExtension,
|
|
IN PPCMCIA_COMPLETION_ROUTINE ConfigCompletionRoutine
|
|
);
|
|
|
|
VOID
|
|
PcmciaConfigurationWorker(
|
|
IN PKDPC Dpc,
|
|
IN PVOID DeferredContext,
|
|
IN PVOID SystemArgument1,
|
|
IN PVOID SystemArgument2
|
|
);
|
|
|
|
VOID
|
|
PcmciaSocketDeconfigure(
|
|
IN PSOCKET Socket
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaReadWriteCardMemory(
|
|
IN PDEVICE_OBJECT Pdo,
|
|
IN ULONG WhichSpace,
|
|
IN OUT PUCHAR Buffer,
|
|
IN ULONG Offset,
|
|
IN ULONG Length,
|
|
IN BOOLEAN Read
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaGetConfigData(
|
|
IN PPDO_EXTENSION PdoExtension
|
|
);
|
|
|
|
VOID
|
|
PcmciaCleanupCisCache(
|
|
IN PSOCKET Socket
|
|
);
|
|
|
|
BOOLEAN
|
|
PcmciaVerifyCardInSocket(
|
|
IN PSOCKET Socket
|
|
);
|
|
|
|
//
|
|
// Pnp id routines
|
|
//
|
|
|
|
NTSTATUS
|
|
PcmciaGetDeviceId(
|
|
IN PDEVICE_OBJECT Pdo,
|
|
IN ULONG FunctionNumber,
|
|
OUT PUNICODE_STRING DeviceId
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaGetHardwareIds(
|
|
IN PDEVICE_OBJECT Pdo,
|
|
IN ULONG FunctionNumber,
|
|
OUT PUNICODE_STRING HardwareIds
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaGetCompatibleIds(
|
|
IN PDEVICE_OBJECT Pdo,
|
|
IN ULONG FunctionNumber,
|
|
OUT PUNICODE_STRING CompatibleIds
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaGetInstanceId(
|
|
IN PDEVICE_OBJECT Pdo,
|
|
OUT PUNICODE_STRING InstanceId
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaStringsToMultiString(
|
|
IN PCSTR * Strings,
|
|
IN ULONG Count,
|
|
IN PUNICODE_STRING MultiString
|
|
);
|
|
|
|
//
|
|
// Registry routines
|
|
//
|
|
|
|
NTSTATUS
|
|
PcmciaLoadGlobalRegistryValues(
|
|
VOID
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaGetControllerRegistrySettings(
|
|
IN OUT PFDO_EXTENSION FdoExtension
|
|
);
|
|
|
|
VOID
|
|
PcmciaGetRegistryFdoIrqMask(
|
|
IN OUT PFDO_EXTENSION FdoExtension
|
|
);
|
|
|
|
//
|
|
// Intel PCIC (82365SL) and compatible routines.
|
|
//
|
|
|
|
NTSTATUS
|
|
PcicBuildSocketList(
|
|
IN PFDO_EXTENSION FdoExtension
|
|
);
|
|
|
|
UCHAR
|
|
PcicReadSocket(
|
|
IN PSOCKET Socket,
|
|
IN ULONG Register
|
|
);
|
|
|
|
VOID
|
|
PcicWriteSocket(
|
|
IN PSOCKET Socket,
|
|
IN ULONG Register,
|
|
IN UCHAR DataByte
|
|
);
|
|
|
|
NTSTATUS
|
|
PcicIsaDetect(
|
|
IN PFDO_EXTENSION DeviceExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
PcicSetPower(
|
|
IN PSOCKET Socket,
|
|
IN BOOLEAN Enable,
|
|
OUT PULONG pDelayTime
|
|
);
|
|
|
|
//
|
|
// Utility routines for pcmcia work.
|
|
//
|
|
|
|
NTSTATUS
|
|
PcmciaIoCallDriverSynchronous(
|
|
PDEVICE_OBJECT deviceObject,
|
|
PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
PcmciaWait(
|
|
IN ULONG MilliSeconds
|
|
);
|
|
|
|
VOID
|
|
PcmciaLogError(
|
|
IN PFDO_EXTENSION DeviceExtension,
|
|
IN ULONG ErrorCode,
|
|
IN ULONG UniqueId,
|
|
IN ULONG Argument
|
|
);
|
|
|
|
VOID
|
|
PcmciaLogErrorWithStrings(
|
|
IN PFDO_EXTENSION DeviceExtension,
|
|
IN ULONG ErrorCode,
|
|
IN ULONG UniqueId,
|
|
IN PUNICODE_STRING String1,
|
|
IN PUNICODE_STRING String2
|
|
);
|
|
|
|
BOOLEAN
|
|
PcmciaReportControllerError(
|
|
IN PFDO_EXTENSION FdoExtension,
|
|
NTSTATUS ErrorCode
|
|
);
|
|
|
|
ULONG
|
|
PcmciaCountOnes(
|
|
IN ULONG Data
|
|
);
|
|
|
|
|
|
//
|
|
// Power management routines
|
|
|
|
NTSTATUS
|
|
PcmciaFdoArmForWake(
|
|
IN PFDO_EXTENSION FdoExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaFdoDisarmWake(
|
|
IN PFDO_EXTENSION FdoExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaPdoWaitWakeCompletion(
|
|
IN PDEVICE_OBJECT Pdo,
|
|
IN PIRP Irp,
|
|
IN PPDO_EXTENSION PdoExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaSetPdoDevicePowerState(
|
|
IN PDEVICE_OBJECT Pdo,
|
|
IN OUT PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
PcmciaPdoPowerWorkerDpc(
|
|
IN PKDPC Dpc,
|
|
IN PVOID DeferredContext,
|
|
IN PVOID SystemArgument1,
|
|
IN PVOID SystemArgument2
|
|
);
|
|
|
|
VOID
|
|
PcmciaFdoRetryPdoPowerRequest(
|
|
IN PKDPC Dpc,
|
|
IN PVOID DeferredContext,
|
|
IN PVOID SystemArgument1,
|
|
IN PVOID SystemArgument2
|
|
);
|
|
|
|
VOID
|
|
PcmciaFdoPowerWorkerDpc(
|
|
IN PKDPC Dpc,
|
|
IN PVOID Context,
|
|
IN PVOID SystemArgument1,
|
|
IN PVOID SystemArgument2
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaFdoCheckForIdle(
|
|
IN PFDO_EXTENSION FdoExtension
|
|
);
|
|
|
|
//
|
|
//
|
|
// Tuple processing routines.
|
|
//
|
|
|
|
NTSTATUS
|
|
PcmciaParseFunctionData(
|
|
IN PSOCKET Socket,
|
|
IN PSOCKET_DATA SocketData
|
|
);
|
|
|
|
NTSTATUS
|
|
PcmciaParseFunctionDataForID(
|
|
IN PSOCKET_DATA SocketData
|
|
);
|
|
|
|
VOID
|
|
PcmciaFilterTupleData(
|
|
IN PPDO_EXTENSION PdoExtension
|
|
);
|
|
|
|
//
|
|
// General detection and support.
|
|
//
|
|
|
|
NTSTATUS
|
|
PcmciaDetectPcmciaControllers(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PUNICODE_STRING RegistryPath
|
|
);
|
|
|
|
BOOLEAN
|
|
PcmciaLegacyDetectionOk(
|
|
VOID
|
|
);
|
|
|
|
//
|
|
// Databook TCIC2 and compatible routines.
|
|
//
|
|
|
|
NTSTATUS
|
|
TcicBuildSocketList(
|
|
IN PFDO_EXTENSION FdoExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
TcicDetect(
|
|
IN PFDO_EXTENSION DeviceExtension
|
|
);
|
|
|
|
VOID
|
|
TcicGetControllerProperties (
|
|
IN PSOCKET socketPtr,
|
|
IN PUSHORT pIoPortBase,
|
|
IN PUSHORT pIoPortSize
|
|
);
|
|
|
|
NTSTATUS
|
|
TcicSetPower(
|
|
IN PSOCKET Socket,
|
|
IN BOOLEAN Enable,
|
|
OUT PULONG pDelayTime
|
|
);
|
|
|
|
|
|
//
|
|
// Cardbus support routines
|
|
//
|
|
|
|
NTSTATUS
|
|
CBBuildSocketList(
|
|
IN PFDO_EXTENSION FdoExtension
|
|
);
|
|
|
|
ULONG
|
|
CBReadSocketRegister(
|
|
IN PSOCKET Socket,
|
|
IN UCHAR Register
|
|
);
|
|
|
|
VOID
|
|
CBWriteSocketRegister(
|
|
IN PSOCKET Socket,
|
|
IN UCHAR Register,
|
|
IN ULONG Data
|
|
);
|
|
|
|
BOOLEAN
|
|
CBEnableDeviceInterruptRouting(
|
|
IN PSOCKET Socket
|
|
);
|
|
|
|
VOID
|
|
CBIssueCvsTest(
|
|
IN PSOCKET Socket
|
|
);
|
|
|
|
//
|
|
// Cardbus vendor specific exports
|
|
//
|
|
|
|
VOID
|
|
TIInitialize(
|
|
IN PFDO_EXTENSION FdoExtension
|
|
);
|
|
|
|
BOOLEAN
|
|
TISetZV(
|
|
IN PSOCKET Socket,
|
|
IN BOOLEAN Enable
|
|
);
|
|
|
|
BOOLEAN
|
|
TISetWindowPage(
|
|
IN PSOCKET Socket,
|
|
USHORT Index,
|
|
UCHAR Page
|
|
);
|
|
|
|
VOID
|
|
CLInitialize(
|
|
IN PFDO_EXTENSION FdoExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
CLSetPower(
|
|
IN PSOCKET Socket,
|
|
IN BOOLEAN Enable,
|
|
OUT PULONG pDelayTime
|
|
);
|
|
|
|
BOOLEAN
|
|
CLSetZV(
|
|
IN PSOCKET Socket,
|
|
IN BOOLEAN Enable
|
|
);
|
|
|
|
VOID
|
|
RicohInitialize(
|
|
IN PFDO_EXTENSION FdoExtension
|
|
);
|
|
|
|
BOOLEAN
|
|
RicohSetZV(
|
|
IN PSOCKET Socket,
|
|
IN BOOLEAN Enable
|
|
);
|
|
|
|
VOID
|
|
OptiInitialize(
|
|
IN PFDO_EXTENSION FdoExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
OptiSetPower(
|
|
IN PSOCKET Socket,
|
|
IN BOOLEAN Enable,
|
|
OUT PULONG pDelayTime
|
|
);
|
|
|
|
BOOLEAN
|
|
OptiSetZV(
|
|
IN PSOCKET Socket,
|
|
IN BOOLEAN Enable
|
|
);
|
|
|
|
VOID
|
|
TopicInitialize(
|
|
IN PFDO_EXTENSION FdoExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
TopicSetPower(
|
|
IN PSOCKET Socket,
|
|
IN BOOLEAN Enable,
|
|
OUT PULONG pDelayTime
|
|
);
|
|
|
|
VOID
|
|
TopicSetAudio(
|
|
IN PSOCKET Socket,
|
|
IN BOOLEAN Enable
|
|
);
|
|
|
|
BOOLEAN
|
|
TopicSetZV(
|
|
IN PSOCKET Socket,
|
|
IN BOOLEAN Enable
|
|
);
|
|
|
|
VOID
|
|
O2MInitialize(
|
|
IN PFDO_EXTENSION FdoExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
O2MSetPower(
|
|
IN PSOCKET Socket,
|
|
IN BOOLEAN Enable,
|
|
OUT PULONG pDelayTime
|
|
);
|
|
|
|
BOOLEAN
|
|
O2MSetZV(
|
|
IN PSOCKET Socket,
|
|
IN BOOLEAN Enable
|
|
);
|
|
|
|
VOID
|
|
DBInitialize(
|
|
IN PFDO_EXTENSION FdoExtension
|
|
);
|
|
|
|
BOOLEAN
|
|
DBSetZV(
|
|
IN PSOCKET Socket,
|
|
IN BOOLEAN Enable
|
|
);
|
|
|
|
BOOLEAN
|
|
TridSetZV(
|
|
IN PSOCKET Socket,
|
|
IN BOOLEAN Enable
|
|
);
|
|
|
|
NTSTATUS
|
|
CBSetPower(
|
|
IN PSOCKET Socket,
|
|
IN BOOLEAN Enable,
|
|
OUT PULONG pDelayTime
|
|
);
|
|
|
|
BOOLEAN
|
|
CBSetWindowPage(
|
|
IN PSOCKET Socket,
|
|
USHORT Index,
|
|
UCHAR Page
|
|
);
|
|
|
|
#endif // _PCMCIA_EXTERN_H_
|
|
|