/*++ Copyright (c) 1998-2001 Microsoft Corporation Module Name: kd1394.h Abstract: 1394 Kernel Debugger DLL Author: Peter Binder (pbinder) Revision History: Date Who What ---------- --------- ------------------------------------------------------------ 06/21/2001 pbinder having fun... --*/ // // boot.ini parameters // #define BUSPARAMETERS_OPTION "BUSPARAMS" #define CHANNEL_OPTION "CHANNEL" #define BUS_OPTION "NOBUS" // global 1394 debug controller data #define DBG_BUS1394_CROM_BUFFER_SIZE 64 #define TIMEOUT_COUNT 1024*500 #define MAX_REGISTER_READS 400000 typedef struct _DEBUG_1394_DATA { // // our config rom - must be 1k aligned // ULONG CromBuffer[DBG_BUS1394_CROM_BUFFER_SIZE]; // // our ohci register map // POHCI_REGISTER_MAP BaseAddress; // // our config for this session // DEBUG_1394_CONFIG Config; // // our send packet (isoch packet) // DEBUG_1394_SEND_PACKET SendPacket; // // our receive packet // DEBUG_1394_RECEIVE_PACKET ReceivePacket; } DEBUG_1394_DATA, *PDEBUG_1394_DATA; // // Debug 1394 Parameters // typedef struct _DEBUG_1394_PARAMETERS { // // device descriptor (pci slot, bus, etc) // DEBUG_DEVICE_DESCRIPTOR DbgDeviceDescriptor; // // is the debugger active? // BOOLEAN DebuggerActive; // // should we disable 1394bus? // ULONG NoBus; // // Id for this target // ULONG Id; } DEBUG_1394_PARAMETERS, *PDEBUG_1394_PARAMETERS; // // Global Data Structures // #ifdef _KD1394_C DEBUG_1394_PARAMETERS Kd1394Parameters; PDEBUG_1394_DATA Kd1394Data; #else extern DEBUG_1394_PARAMETERS Kd1394Parameters; extern PDEBUG_1394_DATA Kd1394Data; #endif // // kd1394.c // BOOLEAN Kd1394pInitialize( IN PDEBUG_1394_PARAMETERS DebugParameters, IN PLOADER_PARAMETER_BLOCK LoaderBlock ); NTSTATUS KdD0Transition( void ); NTSTATUS KdD3Transition( void ); NTSTATUS KdDebuggerInitialize0( IN PLOADER_PARAMETER_BLOCK LoaderBlock ); NTSTATUS KdDebuggerInitialize1( IN PLOADER_PARAMETER_BLOCK LoaderBlock ); NTSTATUS KdSave( IN BOOLEAN KdSleepTransition ); NTSTATUS KdRestore( IN BOOLEAN KdSleepTransition ); // // kd1394io.c // ULONG KdpComputeChecksum( IN PUCHAR Buffer, IN ULONG Length ); void KdpSendControlPacket( IN USHORT PacketType, IN ULONG PacketId OPTIONAL ); ULONG KdReceivePacket ( IN ULONG PacketType, OUT PSTRING MessageHeader, OUT PSTRING MessageData, OUT PULONG DataLength, IN OUT PKD_CONTEXT KdContext ); void KdSendPacket( IN ULONG PacketType, IN PSTRING MessageHeader, IN PSTRING MessageData OPTIONAL, IN OUT PKD_CONTEXT KdContext ); // // ohci1394.c // ULONG FASTCALL Dbg1394_ByteSwap( IN ULONG Source ); ULONG Dbg1394_CalculateCrc( IN PULONG Quadlet, IN ULONG length ); ULONG Dbg1394_Crc16( IN ULONG data, IN ULONG check ); NTSTATUS Dbg1394_ReadPhyRegister( PDEBUG_1394_DATA DebugData, ULONG Offset, PUCHAR pData ); NTSTATUS Dbg1394_WritePhyRegister( PDEBUG_1394_DATA DebugData, ULONG Offset, UCHAR Data ); BOOLEAN Dbg1394_InitializeController( IN PDEBUG_1394_DATA DebugData, IN PDEBUG_1394_PARAMETERS DebugParameters ); ULONG Dbg1394_StallExecution( ULONG LoopCount ); void Dbg1394_EnablePhysicalAccess( IN PDEBUG_1394_DATA DebugData ); ULONG Dbg1394_ReadPacket( PDEBUG_1394_DATA DebugData, OUT PKD_PACKET PacketHeader, OUT PSTRING MessageHeader, OUT PSTRING MessageData, BOOLEAN Wait );