summaryrefslogtreecommitdiffstats
path: root/sys/contrib/dev/nve/os.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/dev/nve/os.h')
-rw-r--r--sys/contrib/dev/nve/os.h128
1 files changed, 128 insertions, 0 deletions
diff --git a/sys/contrib/dev/nve/os.h b/sys/contrib/dev/nve/os.h
new file mode 100644
index 0000000..4749543
--- /dev/null
+++ b/sys/contrib/dev/nve/os.h
@@ -0,0 +1,128 @@
+/***************************************************************************\
+|* *|
+|* Copyright 2001-2004 NVIDIA Corporation. All Rights Reserved. *|
+|* *|
+|* THE INFORMATION CONTAINED HEREIN IS PROPRIETARY AND CONFIDENTIAL *|
+|* TO NVIDIA, CORPORATION. USE, REPRODUCTION OR DISCLOSURE TO ANY *|
+|* THIRD PARTY IS SUBJECT TO WRITTEN PRE-APPROVAL BY NVIDIA, CORP. *|
+|* *|
+|* THE INFORMATION CONTAINED HEREIN IS PROVIDED "AS IS" WITHOUT *|
+|* EXPRESS OR IMPLIED WARRANTY OF ANY KIND, INCLUDING ALL IMPLIED *|
+|* WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A *|
+|* PARTICULAR PURPOSE. *|
+|* *|
+\***************************************************************************/
+
+/*
+ FILE: os.h
+ DATE: 2/7/00
+
+ This file contains the os interface. Note that the os interface is
+ itself an OS-independent API. The OS specific module is implemented
+ by ndis.c for Win9X/NT and linuxnet.c for linux.
+*/
+#ifndef _OS_H_
+#define _OS_H_
+
+#include "phy.h"
+
+#define HDO_VERSION_STRING "HDR O: $Revision: #21 $";
+
+// This is the maximum packet size that we will be sending
+// #define MAX_PACKET_SIZE 2048
+//#define RX_BUFFER_SIZE 2048
+
+#define MIN_PACKET_MTU_SIZE 576
+#define MAX_PACKET_MTU_SIZE 9202
+#define MAX_PACKET_SIZE_2048 2048
+#define MAX_PACKET_SIZE_1514 1514
+#define MAX_PACKET_SIZE_1518 1518
+#define MAX_PACKET_SIZE_JUMBO (9 * 1024)
+
+typedef struct _MEMORY_BLOCK
+{
+ PNV_VOID pLogical;
+ PNV_VOID pPhysical;
+ NV_UINT32 uiLength;
+} MEMORY_BLOCK, *PMEMORY_BLOCK;
+
+#define ALLOC_MEMORY_NONCACHED 0x0001
+#define ALLOC_MEMORY_ALIGNED 0x0002
+
+typedef struct _MEMORY_BLOCKEX
+{
+ PNV_VOID pLogical;
+ PNV_VOID pPhysical;
+ NV_UINT32 uiLength;
+ /* Parameter to OS layer to indicate what type of memory is needed */
+ NV_UINT16 AllocFlags;
+ NV_UINT16 AlignmentSize; //always power of 2
+ /* Following three fields used for aligned memory allocation */
+ PNV_VOID pLogicalOrig;
+ NV_UINT32 pPhysicalOrigLow;
+ NV_UINT32 pPhysicalOrigHigh;
+ NV_UINT32 uiLengthOrig;
+} MEMORY_BLOCKEX, *PMEMORY_BLOCKEX;
+
+
+// The typedefs for the OS functions
+typedef NV_API_CALL NV_SINT32 (* PFN_MEMORY_ALLOC) (PNV_VOID pOSCX, PMEMORY_BLOCK pMem);
+typedef NV_API_CALL NV_SINT32 (* PFN_MEMORY_FREE) (PNV_VOID pOSCX, PMEMORY_BLOCK pMem);
+typedef NV_API_CALL NV_SINT32 (* PFN_MEMORY_ALLOCEX) (PNV_VOID pOSCX, PMEMORY_BLOCKEX pMem);
+typedef NV_API_CALL NV_SINT32 (* PFN_MEMORY_FREEEX) (PNV_VOID pOSCX, PMEMORY_BLOCKEX pMem);
+typedef NV_API_CALL NV_SINT32 (* PFN_CLEAR_MEMORY) (PNV_VOID pOSCX, PNV_VOID pMem, NV_SINT32 iLength);
+typedef NV_API_CALL NV_SINT32 (* PFN_STALL_EXECUTION) (PNV_VOID pOSCX, NV_UINT32 ulTimeInMicroseconds);
+typedef NV_API_CALL NV_SINT32 (* PFN_ALLOC_RECEIVE_BUFFER) (PNV_VOID pOSCX, PMEMORY_BLOCK pMem, PNV_VOID *ppvID);
+typedef NV_API_CALL NV_SINT32 (* PFN_FREE_RECEIVE_BUFFER) (PNV_VOID pOSCX, PMEMORY_BLOCK pMem, PNV_VOID pvID);
+typedef NV_API_CALL NV_SINT32 (* PFN_PACKET_WAS_SENT) (PNV_VOID pOSCX, PNV_VOID pvID, NV_UINT32 ulSuccess);
+typedef NV_API_CALL NV_SINT32 (* PFN_PACKET_WAS_RECEIVED) (PNV_VOID pOSCX, PNV_VOID pvADReadData, NV_UINT32 ulSuccess, NV_UINT8 *pNewBuffer, NV_UINT8 uc8021pPriority);
+typedef NV_API_CALL NV_SINT32 (* PFN_LINK_STATE_HAS_CHANGED) (PNV_VOID pOSCX, NV_SINT32 nEnabled);
+typedef NV_API_CALL NV_SINT32 (* PFN_ALLOC_TIMER) (PNV_VOID pvContext, PNV_VOID *ppvTimer);
+typedef NV_API_CALL NV_SINT32 (* PFN_FREE_TIMER) (PNV_VOID pvContext, PNV_VOID pvTimer);
+typedef NV_API_CALL NV_SINT32 (* PFN_INITIALIZE_TIMER) (PNV_VOID pvContext, PNV_VOID pvTimer, PTIMER_FUNC pvFunc, PNV_VOID pvFuncParameter);
+typedef NV_API_CALL NV_SINT32 (* PFN_SET_TIMER) (PNV_VOID pvContext, PNV_VOID pvTimer, NV_UINT32 dwMillisecondsDelay);
+typedef NV_API_CALL NV_SINT32 (* PFN_CANCEL_TIMER) (PNV_VOID pvContext, PNV_VOID pvTimer);
+
+typedef NV_API_CALL NV_SINT32 (* PFN_PREPROCESS_PACKET) (PNV_VOID pvContext, PNV_VOID pvADReadData, PNV_VOID *ppvID,
+ NV_UINT8 *pNewBuffer, NV_UINT8 uc8021pPriority);
+typedef NV_API_CALL PNV_VOID (* PFN_PREPROCESS_PACKET_NOPQ) (PNV_VOID pvContext, PNV_VOID pvADReadData);
+typedef NV_API_CALL NV_SINT32 (* PFN_INDICATE_PACKETS) (PNV_VOID pvContext, PNV_VOID *ppvID, NV_UINT32 ulNumPacket);
+typedef NV_API_CALL NV_SINT32 (* PFN_LOCK_ALLOC) (PNV_VOID pOSCX, NV_SINT32 iLockType, PNV_VOID *ppvLock);
+typedef NV_API_CALL NV_SINT32 (* PFN_LOCK_ACQUIRE) (PNV_VOID pOSCX, NV_SINT32 iLockType, PNV_VOID pvLock);
+typedef NV_API_CALL NV_SINT32 (* PFN_LOCK_RELEASE) (PNV_VOID pOSCX, NV_SINT32 iLockType, PNV_VOID pvLock);
+typedef NV_API_CALL PNV_VOID (* PFN_RETURN_BUFFER_VIRTUAL) (PNV_VOID pvContext, PNV_VOID pvADReadData);
+
+// Here are the OS functions that those objects below the OS interface
+// can call up to.
+typedef struct _OS_API
+{
+ // OS Context -- this is a parameter to every OS API call
+ PNV_VOID pOSCX;
+
+ // Basic OS functions
+ PFN_MEMORY_ALLOC pfnAllocMemory;
+ PFN_MEMORY_FREE pfnFreeMemory;
+ PFN_MEMORY_ALLOCEX pfnAllocMemoryEx;
+ PFN_MEMORY_FREEEX pfnFreeMemoryEx;
+ PFN_CLEAR_MEMORY pfnClearMemory;
+ PFN_STALL_EXECUTION pfnStallExecution;
+ PFN_ALLOC_RECEIVE_BUFFER pfnAllocReceiveBuffer;
+ PFN_FREE_RECEIVE_BUFFER pfnFreeReceiveBuffer;
+ PFN_PACKET_WAS_SENT pfnPacketWasSent;
+ PFN_PACKET_WAS_RECEIVED pfnPacketWasReceived;
+ PFN_LINK_STATE_HAS_CHANGED pfnLinkStateHasChanged;
+ PFN_ALLOC_TIMER pfnAllocTimer;
+ PFN_FREE_TIMER pfnFreeTimer;
+ PFN_INITIALIZE_TIMER pfnInitializeTimer;
+ PFN_SET_TIMER pfnSetTimer;
+ PFN_CANCEL_TIMER pfnCancelTimer;
+ PFN_PREPROCESS_PACKET pfnPreprocessPacket;
+ PFN_PREPROCESS_PACKET_NOPQ pfnPreprocessPacketNopq;
+ PFN_INDICATE_PACKETS pfnIndicatePackets;
+ PFN_LOCK_ALLOC pfnLockAlloc;
+ PFN_LOCK_ACQUIRE pfnLockAcquire;
+ PFN_LOCK_RELEASE pfnLockRelease;
+ PFN_RETURN_BUFFER_VIRTUAL pfnReturnBufferVirtual;
+} OS_API, *POS_API;
+
+#endif // _OS_H_
OpenPOWER on IntegriCloud