1*c18ec02fSPetter Reinholdtsen /*M* 2*c18ec02fSPetter Reinholdtsen // PVCS: 3*c18ec02fSPetter Reinholdtsen // $Workfile: imb_api.h $ 4*c18ec02fSPetter Reinholdtsen // $Revision: 1.2 $ 5*c18ec02fSPetter Reinholdtsen // $Modtime: Jul 22 2002 16:40:32 $ 6*c18ec02fSPetter Reinholdtsen // $Author: iceblink $ 7*c18ec02fSPetter Reinholdtsen // 8*c18ec02fSPetter Reinholdtsen // Combined include files needed for imbapi.c 9*c18ec02fSPetter Reinholdtsen // 10*c18ec02fSPetter Reinholdtsen *M*/ 11*c18ec02fSPetter Reinholdtsen /*----------------------------------------------------------------------* 12*c18ec02fSPetter Reinholdtsen The BSD License 13*c18ec02fSPetter Reinholdtsen Copyright (c) 2002, Intel Corporation 14*c18ec02fSPetter Reinholdtsen All rights reserved. 15*c18ec02fSPetter Reinholdtsen Redistribution and use in source and binary forms, with or without 16*c18ec02fSPetter Reinholdtsen modification, are permitted provided that the following conditions are met: 17*c18ec02fSPetter Reinholdtsen a.. Redistributions of source code must retain the above copyright notice, 18*c18ec02fSPetter Reinholdtsen this list of conditions and the following disclaimer. 19*c18ec02fSPetter Reinholdtsen b.. Redistributions in binary form must reproduce the above copyright notice, 20*c18ec02fSPetter Reinholdtsen this list of conditions and the following disclaimer in the documentation 21*c18ec02fSPetter Reinholdtsen and/or other materials provided with the distribution. 22*c18ec02fSPetter Reinholdtsen c.. Neither the name of Intel Corporation nor the names of its contributors 23*c18ec02fSPetter Reinholdtsen may be used to endorse or promote products derived from this software 24*c18ec02fSPetter Reinholdtsen without specific prior written permission. 25*c18ec02fSPetter Reinholdtsen THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 26*c18ec02fSPetter Reinholdtsen ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 27*c18ec02fSPetter Reinholdtsen WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 28*c18ec02fSPetter Reinholdtsen DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 29*c18ec02fSPetter Reinholdtsen ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 30*c18ec02fSPetter Reinholdtsen (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 31*c18ec02fSPetter Reinholdtsen LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 32*c18ec02fSPetter Reinholdtsen ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 33*c18ec02fSPetter Reinholdtsen (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 34*c18ec02fSPetter Reinholdtsen SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 35*c18ec02fSPetter Reinholdtsen *----------------------------------------------------------------------*/ 36*c18ec02fSPetter Reinholdtsen #ifndef _WINDEFS_H 37*c18ec02fSPetter Reinholdtsen #define _WINDEFS_H 38*c18ec02fSPetter Reinholdtsen #ifndef FALSE 39*c18ec02fSPetter Reinholdtsen #define FALSE 0 40*c18ec02fSPetter Reinholdtsen #endif 41*c18ec02fSPetter Reinholdtsen #ifndef TRUE 42*c18ec02fSPetter Reinholdtsen #define TRUE 1 43*c18ec02fSPetter Reinholdtsen #endif 44*c18ec02fSPetter Reinholdtsen #ifndef NULL 45*c18ec02fSPetter Reinholdtsen #define NULL 0 46*c18ec02fSPetter Reinholdtsen #endif 47*c18ec02fSPetter Reinholdtsen #ifndef WIN32 48*c18ec02fSPetter Reinholdtsen /* WIN32 defines this in stdio.h */ 49*c18ec02fSPetter Reinholdtsen #ifndef _WCHAR_T 50*c18ec02fSPetter Reinholdtsen #define _WCHAR_T 51*c18ec02fSPetter Reinholdtsen typedef long wchar_t; 52*c18ec02fSPetter Reinholdtsen #endif 53*c18ec02fSPetter Reinholdtsen #endif 54*c18ec02fSPetter Reinholdtsen #define far 55*c18ec02fSPetter Reinholdtsen #define near 56*c18ec02fSPetter Reinholdtsen #define FAR far 57*c18ec02fSPetter Reinholdtsen #define NEAR near 58*c18ec02fSPetter Reinholdtsen #ifndef CONST 59*c18ec02fSPetter Reinholdtsen #define CONST const 60*c18ec02fSPetter Reinholdtsen #endif 61*c18ec02fSPetter Reinholdtsen typedef unsigned long DWORD; 62*c18ec02fSPetter Reinholdtsen typedef int BOOL; 63*c18ec02fSPetter Reinholdtsen typedef unsigned char BYTE; 64*c18ec02fSPetter Reinholdtsen typedef unsigned short WORD; 65*c18ec02fSPetter Reinholdtsen typedef float FLOAT; 66*c18ec02fSPetter Reinholdtsen typedef FLOAT *PFLOAT; 67*c18ec02fSPetter Reinholdtsen typedef BOOL near *PBOOL; 68*c18ec02fSPetter Reinholdtsen typedef BOOL far *LPBOOL; 69*c18ec02fSPetter Reinholdtsen typedef BYTE near *PBYTE; 70*c18ec02fSPetter Reinholdtsen typedef BYTE far *LPBYTE; 71*c18ec02fSPetter Reinholdtsen typedef int near *PINT; 72*c18ec02fSPetter Reinholdtsen typedef int far *LPINT; 73*c18ec02fSPetter Reinholdtsen typedef WORD near *PWORD; 74*c18ec02fSPetter Reinholdtsen typedef WORD far *LPWORD; 75*c18ec02fSPetter Reinholdtsen typedef long far *LPLONG; 76*c18ec02fSPetter Reinholdtsen typedef DWORD near *PDWORD; 77*c18ec02fSPetter Reinholdtsen typedef DWORD far *LPDWORD; 78*c18ec02fSPetter Reinholdtsen typedef void far *LPVOID; 79*c18ec02fSPetter Reinholdtsen typedef CONST void far *LPCVOID; 80*c18ec02fSPetter Reinholdtsen typedef int INT; 81*c18ec02fSPetter Reinholdtsen typedef unsigned int UINT; 82*c18ec02fSPetter Reinholdtsen typedef unsigned int *PUINT; 83*c18ec02fSPetter Reinholdtsen typedef DWORD NTSTATUS; 84*c18ec02fSPetter Reinholdtsen /* 85*c18ec02fSPetter Reinholdtsen File structures 86*c18ec02fSPetter Reinholdtsen */ 87*c18ec02fSPetter Reinholdtsen #ifndef WIN32 88*c18ec02fSPetter Reinholdtsen typedef struct _OVERLAPPED { 89*c18ec02fSPetter Reinholdtsen DWORD Internal; 90*c18ec02fSPetter Reinholdtsen DWORD InternalHigh; 91*c18ec02fSPetter Reinholdtsen DWORD Offset; 92*c18ec02fSPetter Reinholdtsen DWORD OffsetHigh; 93*c18ec02fSPetter Reinholdtsen /* HANDLE hEvent; */ 94*c18ec02fSPetter Reinholdtsen } OVERLAPPED, *LPOVERLAPPED; 95*c18ec02fSPetter Reinholdtsen #endif 96*c18ec02fSPetter Reinholdtsen /* 97*c18ec02fSPetter Reinholdtsen * Data structure redefines 98*c18ec02fSPetter Reinholdtsen */ 99*c18ec02fSPetter Reinholdtsen typedef char CHAR; 100*c18ec02fSPetter Reinholdtsen typedef short SHORT; 101*c18ec02fSPetter Reinholdtsen typedef long LONG; 102*c18ec02fSPetter Reinholdtsen typedef char * PCHAR; 103*c18ec02fSPetter Reinholdtsen typedef short * PSHORT; 104*c18ec02fSPetter Reinholdtsen typedef long * PLONG; 105*c18ec02fSPetter Reinholdtsen typedef unsigned char UCHAR; 106*c18ec02fSPetter Reinholdtsen typedef unsigned short USHORT; 107*c18ec02fSPetter Reinholdtsen typedef unsigned long ULONG; 108*c18ec02fSPetter Reinholdtsen typedef unsigned char * PUCHAR; 109*c18ec02fSPetter Reinholdtsen typedef unsigned short * PUSHORT; 110*c18ec02fSPetter Reinholdtsen typedef unsigned long * PULONG; 111*c18ec02fSPetter Reinholdtsen typedef char CCHAR; 112*c18ec02fSPetter Reinholdtsen typedef short CSHORT; 113*c18ec02fSPetter Reinholdtsen typedef ULONG CLONG; 114*c18ec02fSPetter Reinholdtsen typedef CCHAR * PCCHAR; 115*c18ec02fSPetter Reinholdtsen typedef CSHORT * PCSHORT; 116*c18ec02fSPetter Reinholdtsen typedef CLONG * PCLONG; 117*c18ec02fSPetter Reinholdtsen typedef void * PVOID; 118*c18ec02fSPetter Reinholdtsen #ifndef WIN32 119*c18ec02fSPetter Reinholdtsen typedef void VOID; 120*c18ec02fSPetter Reinholdtsen typedef struct _LARGE_INTEGER { 121*c18ec02fSPetter Reinholdtsen ULONG LowPart; 122*c18ec02fSPetter Reinholdtsen LONG HighPart; 123*c18ec02fSPetter Reinholdtsen } LARGE_INTEGER; 124*c18ec02fSPetter Reinholdtsen typedef struct _ULARGE_INTEGER { 125*c18ec02fSPetter Reinholdtsen ULONG LowPart; 126*c18ec02fSPetter Reinholdtsen ULONG HighPart; 127*c18ec02fSPetter Reinholdtsen } ULARGE_INTEGER; 128*c18ec02fSPetter Reinholdtsen #endif 129*c18ec02fSPetter Reinholdtsen typedef LARGE_INTEGER * PLARGE_INTEGER; 130*c18ec02fSPetter Reinholdtsen typedef LARGE_INTEGER PHYSICAL_ADDRESS; 131*c18ec02fSPetter Reinholdtsen typedef LARGE_INTEGER * PPHYSICAL_ADDRESS; 132*c18ec02fSPetter Reinholdtsen typedef ULARGE_INTEGER * PULARGE_INTEGER; 133*c18ec02fSPetter Reinholdtsen typedef UCHAR BOOLEAN; 134*c18ec02fSPetter Reinholdtsen typedef BOOLEAN *PBOOLEAN; 135*c18ec02fSPetter Reinholdtsen typedef wchar_t WCHAR; 136*c18ec02fSPetter Reinholdtsen typedef WCHAR *PWCHAR, *PWSTR; 137*c18ec02fSPetter Reinholdtsen typedef CONST WCHAR *LPCWSTR, *PCWSTR; 138*c18ec02fSPetter Reinholdtsen 139*c18ec02fSPetter Reinholdtsen #ifndef _SYS_TYPES_H 140*c18ec02fSPetter Reinholdtsen #ifndef _CADDR_T 141*c18ec02fSPetter Reinholdtsen #define _CADDR_T 142*c18ec02fSPetter Reinholdtsen typedef char * caddr_t; 143*c18ec02fSPetter Reinholdtsen #endif 144*c18ec02fSPetter Reinholdtsen #endif 145*c18ec02fSPetter Reinholdtsen /* 146*c18ec02fSPetter Reinholdtsen Unicode strings are counted 16-bit character strings. If they are 147*c18ec02fSPetter Reinholdtsen NULL terminated, Length does not include trailing NULL. 148*c18ec02fSPetter Reinholdtsen */ 149*c18ec02fSPetter Reinholdtsen typedef struct _UNICODE_STRING { 150*c18ec02fSPetter Reinholdtsen USHORT Length; 151*c18ec02fSPetter Reinholdtsen USHORT MaximumLength; 152*c18ec02fSPetter Reinholdtsen PWSTR Buffer; 153*c18ec02fSPetter Reinholdtsen } UNICODE_STRING; 154*c18ec02fSPetter Reinholdtsen typedef UNICODE_STRING *PUNICODE_STRING; 155*c18ec02fSPetter Reinholdtsen #define UNICODE_NULL ((WCHAR)0) /* winnt*/ 156*c18ec02fSPetter Reinholdtsen #define IN /* */ 157*c18ec02fSPetter Reinholdtsen #define OUT /* */ 158*c18ec02fSPetter Reinholdtsen #define OPTIONAL /* */ 159*c18ec02fSPetter Reinholdtsen 160*c18ec02fSPetter Reinholdtsen #ifndef WIN32 161*c18ec02fSPetter Reinholdtsen #define FIELD_OFFSET(type, field) ((LONG)&(((type *)0)->field)) 162*c18ec02fSPetter Reinholdtsen #define UNREFERENCED_PARAMETER(x) 163*c18ec02fSPetter Reinholdtsen typedef int HANDLE; 164*c18ec02fSPetter Reinholdtsen #define INVALID_HANDLE_VALUE ((HANDLE)-1) 165*c18ec02fSPetter Reinholdtsen #endif 166*c18ec02fSPetter Reinholdtsen typedef HANDLE *PHANDLE; 167*c18ec02fSPetter Reinholdtsen /* 168*c18ec02fSPetter Reinholdtsen Define the method codes for how buffers are passed for I/O and FS controls 169*c18ec02fSPetter Reinholdtsen */ 170*c18ec02fSPetter Reinholdtsen #define METHOD_BUFFERED 0 171*c18ec02fSPetter Reinholdtsen /* 172*c18ec02fSPetter Reinholdtsen Define the access check value for any access 173*c18ec02fSPetter Reinholdtsen The FILE_READ_ACCESS and FILE_WRITE_ACCESS constants are also defined in 174*c18ec02fSPetter Reinholdtsen ntioapi.h as FILE_READ_DATA and FILE_WRITE_DATA. The values for these 175*c18ec02fSPetter Reinholdtsen constants *MUST* always be in sync. 176*c18ec02fSPetter Reinholdtsen */ 177*c18ec02fSPetter Reinholdtsen #define FILE_ANY_ACCESS 0 178*c18ec02fSPetter Reinholdtsen /* 179*c18ec02fSPetter Reinholdtsen These are the generic rights. 180*c18ec02fSPetter Reinholdtsen */ 181*c18ec02fSPetter Reinholdtsen #define MAX_PATH 260 182*c18ec02fSPetter Reinholdtsen #define GetLastError() (NTstatus.Status) 183*c18ec02fSPetter Reinholdtsen /* 184*c18ec02fSPetter Reinholdtsen Macro definition for defining IOCTL and FSCTL function control codes. Note 185*c18ec02fSPetter Reinholdtsen that function codes 0-2047 are reserved for Microsoft Corporation, and 186*c18ec02fSPetter Reinholdtsen 2048-4095 are reserved for customers. 187*c18ec02fSPetter Reinholdtsen */ 188*c18ec02fSPetter Reinholdtsen /* 189*c18ec02fSPetter Reinholdtsen * Linux drivers expect ioctls defined using macros defined in ioctl.h. 190*c18ec02fSPetter Reinholdtsen * So, instead of using the CTL_CODE defined for NT and UW, I define CTL_CODE 191*c18ec02fSPetter Reinholdtsen * using these macros. That way imb_if.h, where the ioctls are defined get 192*c18ec02fSPetter Reinholdtsen * to use the correct ioctl command we expect. 193*c18ec02fSPetter Reinholdtsen * Notes: I am using the generic _IO macro instead of the more specific 194*c18ec02fSPetter Reinholdtsen * ones. The macros expect 8bit entities, so I am cleaning what is sent to 195*c18ec02fSPetter Reinholdtsen * us from imb_if.h - Mahendra 196*c18ec02fSPetter Reinholdtsen */ 197*c18ec02fSPetter Reinholdtsen #ifndef WIN32 198*c18ec02fSPetter Reinholdtsen #define CTL_CODE(DeviceType, Function, Method, Access)\ 199*c18ec02fSPetter Reinholdtsen _IO(DeviceType & 0x00FF, Function & 0x00FF) 200*c18ec02fSPetter Reinholdtsen #else 201*c18ec02fSPetter Reinholdtsen #define CTL_CODE( DeviceType, Function, Method, Access ) ((ULONG)( \ 202*c18ec02fSPetter Reinholdtsen ((ULONG)(DeviceType) << 16) | ((ULONG)(Access) << 14) | ((ULONG)(Function) << 2) | ((ULONG)Method) \ 203*c18ec02fSPetter Reinholdtsen )) 204*c18ec02fSPetter Reinholdtsen #endif 205*c18ec02fSPetter Reinholdtsen #endif /*_WINDEFS_H */ 206*c18ec02fSPetter Reinholdtsen /*----------------------------------------------------------------------*/ 207*c18ec02fSPetter Reinholdtsen #ifndef _SMI_H 208*c18ec02fSPetter Reinholdtsen #define _SMI_H 209*c18ec02fSPetter Reinholdtsen #define SMI_Version1_00 0x00001000 210*c18ec02fSPetter Reinholdtsen struct smi { 211*c18ec02fSPetter Reinholdtsen DWORD smi_VersionNo; 212*c18ec02fSPetter Reinholdtsen DWORD smi_Reserved1; 213*c18ec02fSPetter Reinholdtsen DWORD smi_Reserved2; 214*c18ec02fSPetter Reinholdtsen LPVOID ntstatus; /* address of NT status block*/ 215*c18ec02fSPetter Reinholdtsen LPVOID lpvInBuffer; /* address of buffer for input data*/ 216*c18ec02fSPetter Reinholdtsen DWORD cbInBuffer; /* size of input buffer*/ 217*c18ec02fSPetter Reinholdtsen LPVOID lpvOutBuffer; /* address of output buffer*/ 218*c18ec02fSPetter Reinholdtsen DWORD cbOutBuffer; /* size of output buffer*/ 219*c18ec02fSPetter Reinholdtsen LPDWORD lpcbBytesReturned; /* address of actual bytes of output*/ 220*c18ec02fSPetter Reinholdtsen LPOVERLAPPED lpoOverlapped; /* address of overlapped structure*/ 221*c18ec02fSPetter Reinholdtsen }; 222*c18ec02fSPetter Reinholdtsen #ifndef STATUS_SUCCESS 223*c18ec02fSPetter Reinholdtsen typedef struct _IO_STATUS_BLOCK { 224*c18ec02fSPetter Reinholdtsen ULONG Status; 225*c18ec02fSPetter Reinholdtsen ULONG Information; 226*c18ec02fSPetter Reinholdtsen } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK; 227*c18ec02fSPetter Reinholdtsen /* 228*c18ec02fSPetter Reinholdtsen * I2C ioctl's return NTStatus codes 229*c18ec02fSPetter Reinholdtsen */ 230*c18ec02fSPetter Reinholdtsen #define STATUS_SUCCESS (0x00000000U) 231*c18ec02fSPetter Reinholdtsen #define STATUS_UNSUCCESSFUL (0xC0000001U) 232*c18ec02fSPetter Reinholdtsen #define STATUS_DEVICE_BUSY (0x80000011U) 233*c18ec02fSPetter Reinholdtsen #ifndef WIN32 234*c18ec02fSPetter Reinholdtsen #define STATUS_PENDING (0x00000103U) 235*c18ec02fSPetter Reinholdtsen // see <win2000ddk>\inc\winnt.h(1171) 236*c18ec02fSPetter Reinholdtsen #endif 237*c18ec02fSPetter Reinholdtsen #define STATUS_INVALID_PARAMETER (0xC000000DU) 238*c18ec02fSPetter Reinholdtsen #define STATUS_INVALID_DEVICE_REQUEST (0xC0000010U) 239*c18ec02fSPetter Reinholdtsen #define STATUS_BUFFER_TOO_SMALL (0xC0000023U) 240*c18ec02fSPetter Reinholdtsen #define STATUS_FILE_CLOSED (0xC0000128U) 241*c18ec02fSPetter Reinholdtsen #define STATUS_INSUFFICIENT_RESOURCES (0xC000009AU) 242*c18ec02fSPetter Reinholdtsen #define STATUS_NO_DATA_DETECTED (0x80000022U) 243*c18ec02fSPetter Reinholdtsen #define STATUS_NO_SUCH_DEVICE (0xC000000EU) 244*c18ec02fSPetter Reinholdtsen #define STATUS_ALLOTTED_EXCEEDED (0xC000000FU) 245*c18ec02fSPetter Reinholdtsen #define STATUS_IO_DEVICE_ERROR (0xC0000185U) 246*c18ec02fSPetter Reinholdtsen #define STATUS_TOO_MANY_OPEN_FILES (0xC000011FU) 247*c18ec02fSPetter Reinholdtsen #define STATUS_ACCESS_DENIED (0xC0000022U) 248*c18ec02fSPetter Reinholdtsen #define STATUS_BUFFER_OVERFLOW (0x80000005U) 249*c18ec02fSPetter Reinholdtsen #define STATUS_CANCELLED (0xC0000120U) 250*c18ec02fSPetter Reinholdtsen #endif /* STATUS_SUCCESS*/ 251*c18ec02fSPetter Reinholdtsen #endif /* _SMI_H*/ 252*c18ec02fSPetter Reinholdtsen /*----------------------------------------------------------------------*/ 253*c18ec02fSPetter Reinholdtsen #ifndef IMB_IF__ 254*c18ec02fSPetter Reinholdtsen #define IMB_IF__ 255*c18ec02fSPetter Reinholdtsen /* 256*c18ec02fSPetter Reinholdtsen * This is the structure passed in to the IOCTL_IMB_SHUTDOWN_CODE request 257*c18ec02fSPetter Reinholdtsen */ 258*c18ec02fSPetter Reinholdtsen typedef struct { 259*c18ec02fSPetter Reinholdtsen int code; 260*c18ec02fSPetter Reinholdtsen int delayTime; 261*c18ec02fSPetter Reinholdtsen } ShutdownCmdBuffer; 262*c18ec02fSPetter Reinholdtsen #define SD_NO_ACTION 0 263*c18ec02fSPetter Reinholdtsen #define SD_RESET 1 264*c18ec02fSPetter Reinholdtsen #define SD_POWER_OFF 2 265*c18ec02fSPetter Reinholdtsen #pragma pack(1) 266*c18ec02fSPetter Reinholdtsen /* 267*c18ec02fSPetter Reinholdtsen * This is the generic IMB packet format, the final checksum cant be 268*c18ec02fSPetter Reinholdtsen * represented in this structure and will show up as the last data byte 269*c18ec02fSPetter Reinholdtsen */ 270*c18ec02fSPetter Reinholdtsen typedef struct { 271*c18ec02fSPetter Reinholdtsen BYTE rsSa; 272*c18ec02fSPetter Reinholdtsen BYTE nfLn; 273*c18ec02fSPetter Reinholdtsen BYTE cSum1; 274*c18ec02fSPetter Reinholdtsen BYTE rqSa; 275*c18ec02fSPetter Reinholdtsen BYTE seqLn; 276*c18ec02fSPetter Reinholdtsen BYTE cmd; 277*c18ec02fSPetter Reinholdtsen BYTE data[1]; 278*c18ec02fSPetter Reinholdtsen } ImbPacket; 279*c18ec02fSPetter Reinholdtsen #define MIN_IMB_PACKET_SIZE 7 280*c18ec02fSPetter Reinholdtsen #define MAX_IMB_PACKET_SIZE 33 281*c18ec02fSPetter Reinholdtsen /* 282*c18ec02fSPetter Reinholdtsen * This is the standard IMB response format where the first byte of 283*c18ec02fSPetter Reinholdtsen * IMB packet data is interpreted as a command completion code. 284*c18ec02fSPetter Reinholdtsen */ 285*c18ec02fSPetter Reinholdtsen typedef struct { 286*c18ec02fSPetter Reinholdtsen BYTE rsSa; 287*c18ec02fSPetter Reinholdtsen BYTE nfLn; 288*c18ec02fSPetter Reinholdtsen BYTE cSum1; 289*c18ec02fSPetter Reinholdtsen BYTE rqSa; 290*c18ec02fSPetter Reinholdtsen BYTE seqLn; 291*c18ec02fSPetter Reinholdtsen BYTE cmd; 292*c18ec02fSPetter Reinholdtsen BYTE cCode; 293*c18ec02fSPetter Reinholdtsen BYTE data[1]; 294*c18ec02fSPetter Reinholdtsen } ImbRespPacket; 295*c18ec02fSPetter Reinholdtsen #define MIN_IMB_RESPONSE_SIZE 7 /* min packet + completion code */ 296*c18ec02fSPetter Reinholdtsen #define MAX_IMB_RESPONSE_SIZE MAX_IMB_PACKET_SIZE 297*c18ec02fSPetter Reinholdtsen /************************ 298*c18ec02fSPetter Reinholdtsen * ImbRequestBuffer 299*c18ec02fSPetter Reinholdtsen ************************/ 300*c18ec02fSPetter Reinholdtsen /*D* 301*c18ec02fSPetter Reinholdtsen // Name: ImbRequestBuffer 302*c18ec02fSPetter Reinholdtsen // Purpose: Structure definition for holding IMB message data 303*c18ec02fSPetter Reinholdtsen // Context: Used by SendTimedImbpMessage and SendTimedI2cMessge 304*c18ec02fSPetter Reinholdtsen // functions in the library interface. In use, it is overlayed on a 305*c18ec02fSPetter Reinholdtsen // char buffer of size MIN_IMB_REQ_BUF_SIZE + 306*c18ec02fSPetter Reinholdtsen // Fields: 307*c18ec02fSPetter Reinholdtsen // respBufSize size of the response buffer 308*c18ec02fSPetter Reinholdtsen // 309*c18ec02fSPetter Reinholdtsen // timeout timeout value in milli seconds 310*c18ec02fSPetter Reinholdtsen // 311*c18ec02fSPetter Reinholdtsen // req body of request to send 312*c18ec02fSPetter Reinholdtsen // 313*c18ec02fSPetter Reinholdtsen *D*/ 314*c18ec02fSPetter Reinholdtsen typedef struct { 315*c18ec02fSPetter Reinholdtsen BYTE rsSa; 316*c18ec02fSPetter Reinholdtsen BYTE cmd; 317*c18ec02fSPetter Reinholdtsen BYTE netFn; 318*c18ec02fSPetter Reinholdtsen BYTE rsLun; 319*c18ec02fSPetter Reinholdtsen BYTE dataLength; 320*c18ec02fSPetter Reinholdtsen BYTE data[1]; 321*c18ec02fSPetter Reinholdtsen } ImbRequest; 322*c18ec02fSPetter Reinholdtsen typedef struct { 323*c18ec02fSPetter Reinholdtsen DWORD flags; /* request flags*/ 324*c18ec02fSPetter Reinholdtsen #define NO_RESPONSE_EXPECTED 0x01 /*dont wait around for an IMB response*/ 325*c18ec02fSPetter Reinholdtsen DWORD timeOut; /* in uSec units*/ 326*c18ec02fSPetter Reinholdtsen ImbRequest req; /* message buffer*/ 327*c18ec02fSPetter Reinholdtsen } ImbRequestBuffer; 328*c18ec02fSPetter Reinholdtsen #define MIN_IMB_REQ_BUF_SIZE 13 /* a buffer without any request data*/ 329*c18ec02fSPetter Reinholdtsen /************************ 330*c18ec02fSPetter Reinholdtsen * ImbResponseBuffer 331*c18ec02fSPetter Reinholdtsen ************************/ 332*c18ec02fSPetter Reinholdtsen /*D* 333*c18ec02fSPetter Reinholdtsen // Name: ImbResponseBuffer 334*c18ec02fSPetter Reinholdtsen // Purpose: Structure definition for response of a previous send 335*c18ec02fSPetter Reinholdtsen // Context: Used by DeviceIoControl to pass the message to be sent to 336*c18ec02fSPetter Reinholdtsen // MISSMIC port 337*c18ec02fSPetter Reinholdtsen // Fields: 338*c18ec02fSPetter Reinholdtsen // cCode completion code returned by firmware 339*c18ec02fSPetter Reinholdtsen // data buffer for response data from firmware 340*c18ec02fSPetter Reinholdtsen *D*/ 341*c18ec02fSPetter Reinholdtsen typedef struct { 342*c18ec02fSPetter Reinholdtsen BYTE cCode; 343*c18ec02fSPetter Reinholdtsen BYTE data[1]; 344*c18ec02fSPetter Reinholdtsen } ImbResponseBuffer; 345*c18ec02fSPetter Reinholdtsen #define MIN_IMB_RESP_BUF_SIZE 1 346*c18ec02fSPetter Reinholdtsen #define MAX_IMB_RESP_SIZE (MIN_IMB_RESP_BUF_SIZE + MAX_IMB_RESPONSE_SIZE) 347*c18ec02fSPetter Reinholdtsen #pragma pack() 348*c18ec02fSPetter Reinholdtsen /* 349*c18ec02fSPetter Reinholdtsen * Async message access structures and types 350*c18ec02fSPetter Reinholdtsen */ 351*c18ec02fSPetter Reinholdtsen typedef DWORD ImbAsyncSeq; 352*c18ec02fSPetter Reinholdtsen /* 353*c18ec02fSPetter Reinholdtsen * This is the structure passed in to IOCTL_IMB_GET_ASYNC_MSG 354*c18ec02fSPetter Reinholdtsen */ 355*c18ec02fSPetter Reinholdtsen typedef struct { 356*c18ec02fSPetter Reinholdtsen DWORD timeOut; 357*c18ec02fSPetter Reinholdtsen ImbAsyncSeq lastSeq; 358*c18ec02fSPetter Reinholdtsen } ImbAsyncRequest; 359*c18ec02fSPetter Reinholdtsen #define ASYNC_SEQ_START 0 360*c18ec02fSPetter Reinholdtsen typedef struct { 361*c18ec02fSPetter Reinholdtsen ImbAsyncSeq thisSeq; 362*c18ec02fSPetter Reinholdtsen BYTE data[1]; 363*c18ec02fSPetter Reinholdtsen } ImbAsyncResponse; 364*c18ec02fSPetter Reinholdtsen #define MIN_ASYNC_RESP_SIZE sizeof( ImbAsyncSeq ) 365*c18ec02fSPetter Reinholdtsen #define MAX_ASYNC_RESP_SIZE (MIN_ASYNC_RESP_SIZE + MAX_IMB_PACKET_SIZE) 366*c18ec02fSPetter Reinholdtsen /* 367*c18ec02fSPetter Reinholdtsen ** Driver Ioctls 368*c18ec02fSPetter Reinholdtsen ** In Linux, these calculate to: 369*c18ec02fSPetter Reinholdtsen ** IOCTL_IMB_SEND_MESSAGE =1082 370*c18ec02fSPetter Reinholdtsen ** IOCTL_IMB_GET_ASYNC_MSG =1088 371*c18ec02fSPetter Reinholdtsen ** IOCTL_IMB_MAP_MEMORY =108e 372*c18ec02fSPetter Reinholdtsen ** IOCTL_IMB_UNMAP_MEMORY =1090 373*c18ec02fSPetter Reinholdtsen ** IOCTL_IMB_SHUTDOWN_CODE =1092 374*c18ec02fSPetter Reinholdtsen ** IOCTL_IMB_REGISTER_ASYNC_OBJ =1098 375*c18ec02fSPetter Reinholdtsen ** IOCTL_IMB_DEREGISTER_ASYNC_OBJ=109a 376*c18ec02fSPetter Reinholdtsen ** IOCTL_IMB_CHECK_EVENT =109c 377*c18ec02fSPetter Reinholdtsen ** IOCTL_IMB_POLL_ASYNC =1094 378*c18ec02fSPetter Reinholdtsen */ 379*c18ec02fSPetter Reinholdtsen #define FILE_DEVICE_IMB 0x00008010 380*c18ec02fSPetter Reinholdtsen #define IOCTL_IMB_BASE 0x00000880 381*c18ec02fSPetter Reinholdtsen #define IOCTL_IMB_SEND_MESSAGE CTL_CODE(FILE_DEVICE_IMB, (IOCTL_IMB_BASE + 2), METHOD_BUFFERED, FILE_ANY_ACCESS) 382*c18ec02fSPetter Reinholdtsen #define IOCTL_IMB_GET_ASYNC_MSG CTL_CODE(FILE_DEVICE_IMB, (IOCTL_IMB_BASE + 8), METHOD_BUFFERED, FILE_ANY_ACCESS) 383*c18ec02fSPetter Reinholdtsen #define IOCTL_IMB_MAP_MEMORY CTL_CODE(FILE_DEVICE_IMB, (IOCTL_IMB_BASE + 14), METHOD_BUFFERED, FILE_ANY_ACCESS) 384*c18ec02fSPetter Reinholdtsen #define IOCTL_IMB_UNMAP_MEMORY CTL_CODE(FILE_DEVICE_IMB, (IOCTL_IMB_BASE + 16), METHOD_BUFFERED, FILE_ANY_ACCESS) 385*c18ec02fSPetter Reinholdtsen #define IOCTL_IMB_SHUTDOWN_CODE CTL_CODE(FILE_DEVICE_IMB, (IOCTL_IMB_BASE + 18), METHOD_BUFFERED, FILE_ANY_ACCESS) 386*c18ec02fSPetter Reinholdtsen #define IOCTL_IMB_REGISTER_ASYNC_OBJ CTL_CODE(FILE_DEVICE_IMB, (IOCTL_IMB_BASE + 24), METHOD_BUFFERED, FILE_ANY_ACCESS) 387*c18ec02fSPetter Reinholdtsen #define IOCTL_IMB_DEREGISTER_ASYNC_OBJ CTL_CODE(FILE_DEVICE_IMB, (IOCTL_IMB_BASE + 26), METHOD_BUFFERED, FILE_ANY_ACCESS) 388*c18ec02fSPetter Reinholdtsen #define IOCTL_IMB_CHECK_EVENT CTL_CODE(FILE_DEVICE_IMB, (IOCTL_IMB_BASE + 28), METHOD_BUFFERED, FILE_ANY_ACCESS) 389*c18ec02fSPetter Reinholdtsen #define IOCTL_IMB_POLL_ASYNC CTL_CODE(FILE_DEVICE_IMB, (IOCTL_IMB_BASE + 20), METHOD_BUFFERED, FILE_ANY_ACCESS) 390*c18ec02fSPetter Reinholdtsen #endif /* IMB_IF__ */ 391*c18ec02fSPetter Reinholdtsen /*----------------------------------------------------------------------*/ 392*c18ec02fSPetter Reinholdtsen /* No asynchronous messages available */ 393*c18ec02fSPetter Reinholdtsen #define IMB_MSG_NOT_AVAILABLE ((NTSTATUS)0xE0070012L) 394*c18ec02fSPetter Reinholdtsen #ifdef IMBLOG_H__ 395*c18ec02fSPetter Reinholdtsen /* Define the facility codes */ 396*c18ec02fSPetter Reinholdtsen #define FACILITY_RPC_STUBS 0x3 397*c18ec02fSPetter Reinholdtsen #define FACILITY_RPC_RUNTIME 0x2 398*c18ec02fSPetter Reinholdtsen #define FACILITY_IO_ERROR_CODE 0x4 399*c18ec02fSPetter Reinholdtsen #define IMB_IO_ERROR_CODE 0x7 400*c18ec02fSPetter Reinholdtsen 401*c18ec02fSPetter Reinholdtsen #define STATUS_SEVERITY_WARNING 0x2 402*c18ec02fSPetter Reinholdtsen #define STATUS_SEVERITY_SUCCESS 0x0 403*c18ec02fSPetter Reinholdtsen #define STATUS_SEVERITY_INFORMATIONAL 0x1 404*c18ec02fSPetter Reinholdtsen #define STATUS_SEVERITY_ERROR 0x3 405*c18ec02fSPetter Reinholdtsen /* Not enough memory for internal storage of device %1. */ 406*c18ec02fSPetter Reinholdtsen #define INSUFFICIENT_RESOURCES ((NTSTATUS)0xE0070001L) 407*c18ec02fSPetter Reinholdtsen 408*c18ec02fSPetter Reinholdtsen #define INVALID_INPUT_BUFFER ((NTSTATUS)0xE0070002L) 409*c18ec02fSPetter Reinholdtsen 410*c18ec02fSPetter Reinholdtsen #define INVALID_OUTPUT_BUFFER ((NTSTATUS)0xE0070003L) 411*c18ec02fSPetter Reinholdtsen 412*c18ec02fSPetter Reinholdtsen #define IMB_SEND_TIMEOUT ((NTSTATUS)0xE0070004L) 413*c18ec02fSPetter Reinholdtsen 414*c18ec02fSPetter Reinholdtsen #define IMB_RECEIVE_TIMEOUT ((NTSTATUS)0xE0070005L) 415*c18ec02fSPetter Reinholdtsen 416*c18ec02fSPetter Reinholdtsen #define IMB_IF_SEND_TIMEOUT ((NTSTATUS)0xE0070006L) 417*c18ec02fSPetter Reinholdtsen 418*c18ec02fSPetter Reinholdtsen #define IMB_IF_RECEIVE_TIMEOUT ((NTSTATUS)0xE0040007L) 419*c18ec02fSPetter Reinholdtsen 420*c18ec02fSPetter Reinholdtsen #define HARDWARE_FAILURE ((NTSTATUS)0xE0040008L) 421*c18ec02fSPetter Reinholdtsen 422*c18ec02fSPetter Reinholdtsen #define DRIVER_FAILURE ((NTSTATUS)0xE0040009L) 423*c18ec02fSPetter Reinholdtsen 424*c18ec02fSPetter Reinholdtsen #define IMB_INVALID_IF_RESPONSE ((NTSTATUS)0xE004000AL) 425*c18ec02fSPetter Reinholdtsen 426*c18ec02fSPetter Reinholdtsen #define IMB_INVALID_PACKET ((NTSTATUS)0xE004000BL) 427*c18ec02fSPetter Reinholdtsen 428*c18ec02fSPetter Reinholdtsen #define IMB_RESPONSE_DATA_OVERFLOW ((NTSTATUS)0xE004000CL) 429*c18ec02fSPetter Reinholdtsen 430*c18ec02fSPetter Reinholdtsen #define IMB_INVALID_REQUEST ((NTSTATUS)0xE007000DL) 431*c18ec02fSPetter Reinholdtsen 432*c18ec02fSPetter Reinholdtsen #define INVALID_DRIVER_IOCTL ((NTSTATUS)0xE007000EL) 433*c18ec02fSPetter Reinholdtsen 434*c18ec02fSPetter Reinholdtsen #define INVALID_DRIVER_REQUEST ((NTSTATUS)0xE007000FL) 435*c18ec02fSPetter Reinholdtsen 436*c18ec02fSPetter Reinholdtsen #define IMB_CANT_GET_SMS_BUFFER ((NTSTATUS)0xE0070010L) 437*c18ec02fSPetter Reinholdtsen 438*c18ec02fSPetter Reinholdtsen #define INPUT_BUFFER_TOO_SMALL ((NTSTATUS)0xE0070011L) 439*c18ec02fSPetter Reinholdtsen 440*c18ec02fSPetter Reinholdtsen #define IMB_SEND_ERROR ((NTSTATUS)0xE0070013L) 441*c18ec02fSPetter Reinholdtsen #endif /* IMBLOG_H__ */ 442*c18ec02fSPetter Reinholdtsen /*----------------------------------------------------------------------*/ 443*c18ec02fSPetter Reinholdtsen #ifndef IMBAPI_H__ 444*c18ec02fSPetter Reinholdtsen #define IMBAPI_H__ 445*c18ec02fSPetter Reinholdtsen #include <sys/types.h> 446*c18ec02fSPetter Reinholdtsen #define WRITE_READ_I2C 0x52 447*c18ec02fSPetter Reinholdtsen #define WRITE_EMP_BUFFER 0x7a 448*c18ec02fSPetter Reinholdtsen #define GET_DEVICE_ID 0x1 449*c18ec02fSPetter Reinholdtsen #define SEND_MESSAGE 0x34 450*c18ec02fSPetter Reinholdtsen #define BMC_SA 0x20 451*c18ec02fSPetter Reinholdtsen #define BMC_LUN 0 452*c18ec02fSPetter Reinholdtsen #define APP_NETFN 0x06 453*c18ec02fSPetter Reinholdtsen #define IPMI_09_VERSION 0x90 454*c18ec02fSPetter Reinholdtsen #define IPMI_10_VERSION 0x01 455*c18ec02fSPetter Reinholdtsen 456*c18ec02fSPetter Reinholdtsen #define IPMI_15_VERSION 0x51 457*c18ec02fSPetter Reinholdtsen 458*c18ec02fSPetter Reinholdtsen #ifndef IPMI10_GET_DEVICE_ID_RESP_LENGTH 459*c18ec02fSPetter Reinholdtsen #define IPMI10_GET_DEVICE_ID_RESP_LENGTH 12 460*c18ec02fSPetter Reinholdtsen #endif 461*c18ec02fSPetter Reinholdtsen 462*c18ec02fSPetter Reinholdtsen #define IPMB_CHANNEL 0x0 463*c18ec02fSPetter Reinholdtsen #define EMP_CHANNEL 0x1 464*c18ec02fSPetter Reinholdtsen #define LAN_CHANNEL 0x2 465*c18ec02fSPetter Reinholdtsen #define RESERVED_LUN 0x3 466*c18ec02fSPetter Reinholdtsen #define IPMB_LUN 0x2 467*c18ec02fSPetter Reinholdtsen #define EMP_LUN 0x0 468*c18ec02fSPetter Reinholdtsen 469*c18ec02fSPetter Reinholdtsen #define PUBLIC_BUS 0 470*c18ec02fSPetter Reinholdtsen 471*c18ec02fSPetter Reinholdtsen #define BMC_CONTROLLER 0x20 472*c18ec02fSPetter Reinholdtsen #define FPC_CONTROLLER 0x22 473*c18ec02fSPetter Reinholdtsen typedef enum { 474*c18ec02fSPetter Reinholdtsen ACCESN_OK, 475*c18ec02fSPetter Reinholdtsen ACCESN_ERROR, 476*c18ec02fSPetter Reinholdtsen ACCESN_OUT_OF_RANGE, 477*c18ec02fSPetter Reinholdtsen ACCESN_END_OF_DATA, 478*c18ec02fSPetter Reinholdtsen ACCESN_UNSUPPORTED, 479*c18ec02fSPetter Reinholdtsen ACCESN_INVALID_TRANSACTION, 480*c18ec02fSPetter Reinholdtsen ACCESN_TIMED_OUT 481*c18ec02fSPetter Reinholdtsen } ACCESN_STATUS; 482*c18ec02fSPetter Reinholdtsen #pragma pack(1) 483*c18ec02fSPetter Reinholdtsen /* 484*c18ec02fSPetter Reinholdtsen * Request structure provided to SendTimedImbpRequest() 485*c18ec02fSPetter Reinholdtsen */ 486*c18ec02fSPetter Reinholdtsen typedef struct { 487*c18ec02fSPetter Reinholdtsen unsigned char cmdType; 488*c18ec02fSPetter Reinholdtsen unsigned char rsSa; 489*c18ec02fSPetter Reinholdtsen unsigned char busType; 490*c18ec02fSPetter Reinholdtsen unsigned char netFn; 491*c18ec02fSPetter Reinholdtsen unsigned char rsLun; 492*c18ec02fSPetter Reinholdtsen unsigned char * data; 493*c18ec02fSPetter Reinholdtsen int dataLength; 494*c18ec02fSPetter Reinholdtsen } IMBPREQUESTDATA; 495*c18ec02fSPetter Reinholdtsen /* 496*c18ec02fSPetter Reinholdtsen * Request structure provided to SendTimedI2cRequest() 497*c18ec02fSPetter Reinholdtsen */ 498*c18ec02fSPetter Reinholdtsen typedef struct { 499*c18ec02fSPetter Reinholdtsen unsigned char rsSa; 500*c18ec02fSPetter Reinholdtsen unsigned char busType; 501*c18ec02fSPetter Reinholdtsen unsigned char numberOfBytesToRead; 502*c18ec02fSPetter Reinholdtsen unsigned char * data; 503*c18ec02fSPetter Reinholdtsen int dataLength; 504*c18ec02fSPetter Reinholdtsen } I2CREQUESTDATA; 505*c18ec02fSPetter Reinholdtsen #pragma pack() 506*c18ec02fSPetter Reinholdtsen /*#ifdef IMB_API 507*c18ec02fSPetter Reinholdtsen * 508*c18ec02fSPetter Reinholdtsen * This section is provided to be able to compile using imb_if.h 509*c18ec02fSPetter Reinholdtsen * 510*c18ec02fSPetter Reinholdtsen * 511*c18ec02fSPetter Reinholdtsen * function return type. This is also defined in the local instrumentation 512*c18ec02fSPetter Reinholdtsen * so we ifdef here to avoid conflict. 513*c18ec02fSPetter Reinholdtsen */ 514*c18ec02fSPetter Reinholdtsen #define METHOD_BUFFERED 0 515*c18ec02fSPetter Reinholdtsen #define FILE_ANY_ACCESS 0 516*c18ec02fSPetter Reinholdtsen /* 517*c18ec02fSPetter Reinholdtsen * This is necessary to compile using memIf.h 518*c18ec02fSPetter Reinholdtsen */ 519*c18ec02fSPetter Reinholdtsen typedef enum _INTERFACE_TYPE 520*c18ec02fSPetter Reinholdtsen { 521*c18ec02fSPetter Reinholdtsen Internal, 522*c18ec02fSPetter Reinholdtsen Isa, 523*c18ec02fSPetter Reinholdtsen Eisa, 524*c18ec02fSPetter Reinholdtsen MicroChannel, 525*c18ec02fSPetter Reinholdtsen TurboChannel, 526*c18ec02fSPetter Reinholdtsen MaximumInterfaceType 527*c18ec02fSPetter Reinholdtsen } INTERFACE_TYPE, * PINTERFACE_TYPE; 528*c18ec02fSPetter Reinholdtsen #ifdef WIN32 529*c18ec02fSPetter Reinholdtsen /* From memIf.h */ 530*c18ec02fSPetter Reinholdtsen #pragma pack(1) 531*c18ec02fSPetter Reinholdtsen typedef struct 532*c18ec02fSPetter Reinholdtsen { 533*c18ec02fSPetter Reinholdtsen INTERFACE_TYPE InterfaceType; // Isa, Eisa, etc.... 534*c18ec02fSPetter Reinholdtsen ULONG BusNumber; // Bus number 535*c18ec02fSPetter Reinholdtsen PHYSICAL_ADDRESS BusAddress; // Bus-relative address 536*c18ec02fSPetter Reinholdtsen ULONG AddressSpace; // 0 is memory, 1 is I/O 537*c18ec02fSPetter Reinholdtsen ULONG Length; // Length of section to map 538*c18ec02fSPetter Reinholdtsen } PHYSICAL_MEMORY_INFO, * PPHYSICAL_MEMORY_INFO; 539*c18ec02fSPetter Reinholdtsen #pragma pack() 540*c18ec02fSPetter Reinholdtsen #endif 541*c18ec02fSPetter Reinholdtsen /*#else // not IMB_API */ 542*c18ec02fSPetter Reinholdtsen /* 543*c18ec02fSPetter Reinholdtsen * These are defined in imb_if.h but are needed by users of the imbapi library 544*c18ec02fSPetter Reinholdtsen */ 545*c18ec02fSPetter Reinholdtsen #define ASYNC_SEQ_START 0 546*c18ec02fSPetter Reinholdtsen /* 547*c18ec02fSPetter Reinholdtsen * This is the generic IMB packet format, the final checksum cant be 548*c18ec02fSPetter Reinholdtsen * represented in this structure and will show up as the last data byte 549*c18ec02fSPetter Reinholdtsen */ 550*c18ec02fSPetter Reinholdtsen /* 551*c18ec02fSPetter Reinholdtsen #define MIN_IMB_PACKET_SIZE 7 552*c18ec02fSPetter Reinholdtsen #define MAX_IMB_PACKET_SIZE 33 553*c18ec02fSPetter Reinholdtsen */ 554*c18ec02fSPetter Reinholdtsen #define MAX_BUFFER_SIZE 64 555*c18ec02fSPetter Reinholdtsen /*#endif // IMB_API */ 556*c18ec02fSPetter Reinholdtsen /****************************** 557*c18ec02fSPetter Reinholdtsen * FUNCTION PROTOTYPES 558*c18ec02fSPetter Reinholdtsen ******************************/ 559*c18ec02fSPetter Reinholdtsen ACCESN_STATUS 560*c18ec02fSPetter Reinholdtsen SendTimedImbpRequest ( 561*c18ec02fSPetter Reinholdtsen IMBPREQUESTDATA *reqPtr, 562*c18ec02fSPetter Reinholdtsen int timeOut, 563*c18ec02fSPetter Reinholdtsen BYTE * respDataPtr, 564*c18ec02fSPetter Reinholdtsen int * respDataLen, 565*c18ec02fSPetter Reinholdtsen BYTE * completionCode 566*c18ec02fSPetter Reinholdtsen ); 567*c18ec02fSPetter Reinholdtsen ACCESN_STATUS 568*c18ec02fSPetter Reinholdtsen SendTimedI2cRequest ( 569*c18ec02fSPetter Reinholdtsen I2CREQUESTDATA *reqPtr, 570*c18ec02fSPetter Reinholdtsen int timeOut, 571*c18ec02fSPetter Reinholdtsen BYTE * respDataPtr, 572*c18ec02fSPetter Reinholdtsen int * respDataLen, 573*c18ec02fSPetter Reinholdtsen BYTE * completionCode 574*c18ec02fSPetter Reinholdtsen ); 575*c18ec02fSPetter Reinholdtsen ACCESN_STATUS 576*c18ec02fSPetter Reinholdtsen SendAsyncImbpRequest ( 577*c18ec02fSPetter Reinholdtsen IMBPREQUESTDATA *reqPtr, 578*c18ec02fSPetter Reinholdtsen BYTE * seqNo 579*c18ec02fSPetter Reinholdtsen ); 580*c18ec02fSPetter Reinholdtsen ACCESN_STATUS 581*c18ec02fSPetter Reinholdtsen GetAsyncImbpMessage ( 582*c18ec02fSPetter Reinholdtsen ImbPacket * msgPtr, 583*c18ec02fSPetter Reinholdtsen DWORD * msgLen, 584*c18ec02fSPetter Reinholdtsen DWORD timeOut, 585*c18ec02fSPetter Reinholdtsen ImbAsyncSeq * seqNo, 586*c18ec02fSPetter Reinholdtsen DWORD channelNumber 587*c18ec02fSPetter Reinholdtsen ); 588*c18ec02fSPetter Reinholdtsen ACCESN_STATUS 589*c18ec02fSPetter Reinholdtsen GetAsyncImbpMessage_Ex ( 590*c18ec02fSPetter Reinholdtsen ImbPacket * msgPtr, 591*c18ec02fSPetter Reinholdtsen DWORD * msgLen, 592*c18ec02fSPetter Reinholdtsen DWORD timeOut, 593*c18ec02fSPetter Reinholdtsen ImbAsyncSeq * seqNo, 594*c18ec02fSPetter Reinholdtsen DWORD channelNumber, 595*c18ec02fSPetter Reinholdtsen BYTE * sessionHandle, 596*c18ec02fSPetter Reinholdtsen BYTE * privilege 597*c18ec02fSPetter Reinholdtsen ); 598*c18ec02fSPetter Reinholdtsen ACCESN_STATUS 599*c18ec02fSPetter Reinholdtsen UnmapPhysicalMemory( int virtualAddress, int Length ); 600*c18ec02fSPetter Reinholdtsen ACCESN_STATUS 601*c18ec02fSPetter Reinholdtsen StartAsyncMesgPoll(void); 602*c18ec02fSPetter Reinholdtsen ACCESN_STATUS 603*c18ec02fSPetter Reinholdtsen MapPhysicalMemory ( 604*c18ec02fSPetter Reinholdtsen int startAddress, 605*c18ec02fSPetter Reinholdtsen int addressLength, 606*c18ec02fSPetter Reinholdtsen int *virtualAddress 607*c18ec02fSPetter Reinholdtsen ); 608*c18ec02fSPetter Reinholdtsen ACCESN_STATUS 609*c18ec02fSPetter Reinholdtsen SetShutDownCode ( 610*c18ec02fSPetter Reinholdtsen int delayTime, 611*c18ec02fSPetter Reinholdtsen int code 612*c18ec02fSPetter Reinholdtsen ); 613*c18ec02fSPetter Reinholdtsen ACCESN_STATUS 614*c18ec02fSPetter Reinholdtsen SendTimedEmpMessageResponse ( 615*c18ec02fSPetter Reinholdtsen ImbPacket * ptr, 616*c18ec02fSPetter Reinholdtsen char *responseDataBuf, 617*c18ec02fSPetter Reinholdtsen int responseDataLen, 618*c18ec02fSPetter Reinholdtsen int timeOut 619*c18ec02fSPetter Reinholdtsen ); 620*c18ec02fSPetter Reinholdtsen ACCESN_STATUS 621*c18ec02fSPetter Reinholdtsen SendTimedEmpMessageResponse_Ex ( 622*c18ec02fSPetter Reinholdtsen ImbPacket * ptr, 623*c18ec02fSPetter Reinholdtsen char *responseDataBuf, 624*c18ec02fSPetter Reinholdtsen int responseDataLen, 625*c18ec02fSPetter Reinholdtsen int timeOut, 626*c18ec02fSPetter Reinholdtsen BYTE sessionHandle, 627*c18ec02fSPetter Reinholdtsen BYTE channelNumber 628*c18ec02fSPetter Reinholdtsen ); 629*c18ec02fSPetter Reinholdtsen ACCESN_STATUS 630*c18ec02fSPetter Reinholdtsen SendTimedLanMessageResponse ( 631*c18ec02fSPetter Reinholdtsen ImbPacket * ptr, 632*c18ec02fSPetter Reinholdtsen char *responseDataBuf, 633*c18ec02fSPetter Reinholdtsen int responseDataLen, 634*c18ec02fSPetter Reinholdtsen int timeOut 635*c18ec02fSPetter Reinholdtsen ); 636*c18ec02fSPetter Reinholdtsen ACCESN_STATUS 637*c18ec02fSPetter Reinholdtsen SendTimedLanMessageResponse_Ex ( 638*c18ec02fSPetter Reinholdtsen ImbPacket * ptr, 639*c18ec02fSPetter Reinholdtsen char *responseDataBuf, 640*c18ec02fSPetter Reinholdtsen int responseDataLen, 641*c18ec02fSPetter Reinholdtsen int timeOut , 642*c18ec02fSPetter Reinholdtsen BYTE sessionHandle, 643*c18ec02fSPetter Reinholdtsen BYTE channelNumber 644*c18ec02fSPetter Reinholdtsen ); 645*c18ec02fSPetter Reinholdtsen ACCESN_STATUS 646*c18ec02fSPetter Reinholdtsen IsAsyncMessageAvailable (unsigned int eventId ); 647*c18ec02fSPetter Reinholdtsen ACCESN_STATUS 648*c18ec02fSPetter Reinholdtsen RegisterForImbAsyncMessageNotification (unsigned int *handleId); 649*c18ec02fSPetter Reinholdtsen ACCESN_STATUS 650*c18ec02fSPetter Reinholdtsen UnRegisterForImbAsyncMessageNotification (unsigned int handleId,int iFlag); 651*c18ec02fSPetter Reinholdtsen BYTE GetIpmiVersion(void); 652*c18ec02fSPetter Reinholdtsen #endif /* IMBAPI_H__ */ 653