android_kernel_modules_leno.../drivers/misc/iqvandroid/inc/os_i.h

591 lines
13 KiB
C

/*
This file is provided under a dual BSD/GPLv2 license. When using or
redistributing this file, you may do so under either license.
GPL LICENSE SUMMARY
Copyright(c) 1999 - 2013 Intel Corporation. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of version 2 of the GNU General Public License as
published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
The full GNU General Public License is included in this distribution
in the file called LICENSE.GPL.
Contact Information:
e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
BSD LICENSE
Copyright(c) 1999 - 2013 Intel Corporation. All rights reserved.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Intel Corporation nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
*
* Module Name:
* os_i.h
*
* Abstract:
* This file contains prototypes & datatypes for the OS Interface.
* The OS-specific header is included for each OS.
*
*/
#ifndef _OSINTERFACE_H_
#define _OSINTERFACE_H_
#include <naltypes.h>
#include <nalcodes.h>
#define NAL_CVS_DATE_STRING "$Date: 2013/07/29 11:16:24 $"
#define NAL_DEBUG_DISABLED 0x00000000
#define NAL_DEBUG_APP 0x00000001
#define NAL_DEBUG_MACREG_READ 0x00000002
#define NAL_DEBUG_MACREG_WRITE 0x00000004
#define NAL_DEBUG_MACREG_RW (NAL_DEBUG_MACREG_READ | NAL_DEBUG_MACREG_WRITE)
#define NAL_DEBUG_TRANSMIT 0x00000008
#define NAL_DEBUG_RECEIVE 0x00000010
#define NAL_DEBUG_TXRX (NAL_DEBUG_TRANSMIT | NAL_DEBUG_RECEIVE)
#define NAL_DEBUG_TXRX_LOOP_CODE 0x00000020
#define NAL_DEBUG_SHARED_CODE 0x00000040
#define NAL_DEBUG_PHYREG_READ 0x00000080
#define NAL_DEBUG_PHYREG_WRITE 0x00000100
#define NAL_DEBUG_PHYREG_RW (NAL_DEBUG_PHYREG_READ | NAL_DEBUG_PHYREG_WRITE)
#define NAL_DEBUG_INIT 0x00000200
#define NAL_DEBUG_RELEASE 0x00000400
#define NAL_DEBUG_RESET_ADAPTER 0x00000800
#define NAL_DEBUG_RESET_LINK 0x00001000
#define NAL_DEBUG_GET_LINK 0x00002000
#define NAL_DEBUG_OS_LEVEL 0x00004000
#define NAL_DEBUG_APP_TRACE 0x00008000
#define NAL_DEBUG_SDK_TRACE 0x00010000
#define NAL_DEBUG_KERNEL 0x00020000
#define NAL_DEBUG_EEPROM 0x00040000
#define NAL_DEBUG_FLASH 0x00080000
#define NAL_DEBUG_DIAGS 0x00100000
#define NAL_DEBUG_MEMORY 0x00200000
#define NAL_DEBUG_BUS_SCAN 0x00400000
#define NAL_DEBUG_FAILURES 0x00800000
#define NAL_DEBUG_TIMESYNC 0x01000000
#define NAL_DEBUG_PROTOCOL_ENGINE 0x02000000
#define NAL_DEBUG_HMC 0x04000000
#define NAL_DEBUG_USER 0x80000000
#define NAL_DEBUG_ALL 0xFFFFFFFF
#define NAL_DEBUG_MASK_STACK_SIZE 256
#define NAL_DEBUG_SYSTEM_VARIABLE "QV_DEBUG_LOG"
#define NAL_DEFAULT_SDK_LOG_FILE_NAME "QVSDK.LOG"
extern char Global_Year[5];
#if defined(NAL_EFI)
#include <efi\efios_i.h>
#elif defined(NAL_LINUX)
#include <linux/linuxos_i.h>
#elif defined(NAL_LINUX_USERMODE)
#include <linux/linuxuseros_i.h>
#elif defined(NAL_SOLARIS)
#include <solaris/solarisos_i.h>
#elif defined(NAL_DOS)
#include <dos\dosos_i.h>
#elif defined(NAL_WINNT_WDM)
#include <winnt_wdm\winos_i.h>
#elif defined(NAL_WINNT4)
#include <winnt4\winos_i.h>
#else
#error "Undefined NAL Operating System in os_i.h"
#endif
#define NAL_MIN(_x,_y) ((_x > _y)? (_y) : (_x))
#define NAL_MAX(_x,_y) ((_x > _y)? (_x) : (_y))
#define NAL_ABS(_x) (((_x) > 0)? (_x) : ((_x) * -1))
#if defined (NAL_DRIVER)
extern BOOLEAN Global_DebugPrintEnabled;
#endif
extern UINT32 Global_DebugPrintMask;
extern BOOLEAN Global_FileDebugPrintEnabled;
#if !defined(NAL_DRIVER)
extern FILE* Global_DebugFilePointer;
#endif
#if defined(EFI64) || defined(_WIN64) || defined(LINUX64) || defined(LINUX64E)
#define PTR_TO_PHYSICAL(Pointer) (NAL_PHYSICAL_ADDRESS)(Pointer)
#define PHYSICAL_TO_PTR(Address) (VOID*)(Address)
#else
#define PTR_TO_PHYSICAL(Pointer) (NAL_PHYSICAL_ADDRESS)(UINT32)(Pointer)
#define PHYSICAL_TO_PTR(Address) (VOID*)(UINT32)(Address)
#endif
#if defined(EFI64) || defined(_WIN64) || defined(LINUX64) || defined(LINUX64E)
#define NAL_FIELD_OFFSET32(type,field) ((UINT32)(UINT64)(UINT32*)&(((type *)0)->field))
#else
#define NAL_FIELD_OFFSET32(type,field) ((UINT32)(UINT32*)&(((type *)0)->field))
#endif
#if defined(NAL_BIG_ENDIAN)
#define NAL_LITTLE_ENDIAN_16(_x) (UINT16)( (((UINT16)(_x) & 0x00ff) << 8) | \
(((UINT16)(_x) & 0xff00) >> 8) )
#define NAL_LITTLE_ENDIAN_32(dword) (UINT32)( (((UINT32)(dword) & 0x000000ff) << 24) | \
(((UINT32)(dword) & 0x0000ff00) << 8) | \
(((UINT32)(dword) & 0x00ff0000) >> 8) | \
(((UINT32)(dword) & 0xff000000) >> 24) )
#define NAL_LITTLE_ENDIAN_64(_x) \
(((UINT64)((_x) & 0xff00000000000000ull) >> 56) | \
((UINT64)((_x ) & 0xff000000000000ull) >> 40) | \
((UINT64)((_x ) & 0xff0000000000ull) >> 24) | \
((UINT64)((_x ) & 0xff00000000ull) >> 8) | \
((UINT64)((_x ) & 0xff000000ull) << 8) | \
((UINT64)((_x ) & 0xff0000ull) << 24) | \
((UINT64)((_x ) & 0xff00ull) << 40) | \
((UINT64)((_x ) & 0xffull) << 56))
#else
#define NAL_LITTLE_ENDIAN_16(_x) (_x)
#define NAL_LITTLE_ENDIAN_32(_x) (_x)
#define NAL_LITTLE_ENDIAN_64(_x) (_x)
#endif
UINT8
NalReadPort8(
IN PORT_ADDR Port
);
UINT16
NalReadPort16(
IN PORT_ADDR Port
);
UINT32
NalReadPort32(
IN PORT_ADDR Port
);
BOOLEAN
NalWritePort8(
IN PORT_ADDR Port,
IN UINT8 Value
);
BOOLEAN
NalWritePort16(
IN PORT_ADDR Port,
IN UINT16 Value
);
BOOLEAN
NalWritePort32(
IN PORT_ADDR Port,
IN UINT32 Value
);
UINT8
NalReadRegister8(
IN KVOID* Address
);
UINT16
NalReadRegister16(
IN KVOID* Address
);
UINT32
NalReadRegister32(
IN KVOID* Address
);
BOOLEAN
NalWriteRegister8(
IN KVOID* Address,
IN UINT8 Value
);
BOOLEAN
NalWriteRegister16(
IN KVOID* Address,
IN UINT16 Value
);
BOOLEAN
NalWriteRegister32(
IN KVOID* Address,
IN UINT32 Value
);
NAL_STATUS
NalMmapAddress(
OUT KVOID** VirtualAddress,
IN NAL_PHYSICAL_ADDRESS PhysicalAddress,
IN OUT UINT32* Length
);
NAL_STATUS
NalUnmapAddress(
IN KVOID* VirtualAddress,
IN NAL_PHYSICAL_ADDRESS PhysicalAddress,
IN UINT32 Length
);
UINT64
NalGetTimeStamp(VOID);
UINT64
NalGetTimeStampsPerMicrosecond(VOID);
UINT64
NalGetTimeStampsPerMillisecond(VOID);
NAL_STATUS
NalRegisterTimerCallback(
IN NAL_TIMER_CALLBACK TimerCallback,
IN OUT UINT32* TimerInterval,
IN VOID* Context,
OUT UINT32* CallbackId
);
NAL_STATUS
NalUnregisterTimerCallback(
IN UINT32 CallbackId
);
VOID
NalDelayMilliseconds(
IN UINT32 Milliseconds
);
VOID
NalDelayMicroseconds(
IN UINT32 Microseconds
);
NAL_PHYSICAL_ADDRESS
NalGetPhysicalMemoryAddress(
IN KVOID* VirtualAddress
);
VOID*
_NalAllocateMemory(
IN UINT32 ByteCount,
IN CHAR* NamedLocator,
IN UINT32 LineNumber
);
VOID
_NalFreeMemory(
IN VOID* Address,
IN CHAR* NamedLocator,
IN UINT32 LineNumber
);
KVOID*
_NalAllocateMemoryNonPaged(
IN UINT32 ByteCount,
IN UINT32 Alignment,
OUT NAL_PHYSICAL_ADDRESS* PhysicalAddress,
IN CHAR* NamedLocator,
IN UINT32 LineNumber
);
VOID
_NalFreeMemoryNonPaged(
IN KVOID* Address,
IN CHAR* NamedLocator,
IN UINT32 LineNumber
);
#define NalAllocateMemory(ByteCount) \
_NalAllocateMemory((ByteCount), __FILE__, __LINE__)
#define NalFreeMemory(VirtualAddress) \
_NalFreeMemory((VirtualAddress), __FILE__, __LINE__)
#define NalAllocateMemoryNonPaged(ByteCount,Alignment,PhysicalAddress) \
_NalAllocateMemoryNonPaged((ByteCount), (Alignment), (PhysicalAddress), \
__FILE__, __LINE__)
#define NalFreeMemoryNonPaged(VirtualAddress) \
_NalFreeMemoryNonPaged((VirtualAddress), __FILE__, __LINE__)
UINT32
NalAtomicIncrement32(
IN UINT32* Address
);
UINT32
NalAtomicDecrement32(
IN UINT32* Address
);
UINT32
NalAtomicTestSet32(
IN UINT32* Address,
IN UINT32 Test,
IN UINT32 Set
);
VOID
NalAcquireSpinLock(
IN NAL_SPIN_LOCK* SpinLock
);
VOID
NalReleaseSpinLock(
IN NAL_SPIN_LOCK* SpinLock
);
VOID
NalInitializeSpinLock(
IN NAL_SPIN_LOCK* SpinLock
);
VOID
NalFreeSpinLock(
IN NAL_SPIN_LOCK* SpinLock
);
NAL_STATUS
NalCheckSecurity(VOID);
NAL_STATUS
NalDebugPrint(
IN CHAR* Format,
...
);
NAL_STATUS
_NalDebugPrintToDebugger(
IN CHAR* StringToPrint
);
NAL_STATUS
NalDebugPrintSupport(
OUT UINT32* DebugCapabilities
);
NAL_STATUS
NalDebugPrintOpenFile(
IN CHAR* DebugFileName
);
NAL_STATUS
NalDebugPrintCloseFile(VOID);
#if defined(NAL_DRIVER)
VOID
NalEnableDebugPrint(
IN BOOLEAN Enable
);
#else
VOID
NalEnableDebugPrint(
IN UINT32 Mask
);
#endif
BOOLEAN
_NalCheckSystemVariableForDebugMask(
OUT UINT32* Mask
);
NAL_STATUS
_NalSdkDebugPrintOpenFile(VOID);
VOID
_NalEnableSdkDebugPrint(
IN UINT32 Mask
);
NAL_STATUS
_NalSdkDebugPrintCloseFile(VOID);
VOID
_NalClearScreen(VOID);
VOID
NalRebootSystem(VOID);
BOOLEAN
NalIsTargetOperatingSystem(
OUT NAL_OS_TYPE* OsType
);
NAL_STATUS
NalMaskedDebugPrint(
IN UINT32 Mask,
IN CHAR* Format,
...
);
NAL_STATUS
NalDebugPrintPushMask(
IN UINT32 Mask
);
NAL_STATUS
NalDebugPrintCheckAndPushMask(
IN UINT32 MaskToCheck,
IN UINT32 MaskToPush,
OUT UINT32* IndexToCheck,
IN BOOLEAN AddToExisting
);
UINT32
NalDebugPrintPopMask(VOID);
UINT32
NalDebugPrintCheckAndPopMask(
IN UINT32 MaskToCheck,
IN UINT32 IndexToCheck
);
UINT32
NalGetCurrentDebugPrintMask(VOID);
VOID
_NalEnableDebugPrint(
IN BOOLEAN Enable
);
BOOLEAN
NalIsDebugFileOpen(VOID);
UINT32
NalGetMaximumContiguousAllocationSize(VOID);
BOOLEAN
NalCanMapMemoryToUserSpace(VOID);
#if defined(NAL_DRIVER)
NAL_STATUS
NalMmapAddressEx(
IN OUT KVOID** VirtualAddress,
IN NAL_PHYSICAL_ADDRESS PhysicalAddress,
IN OUT UINT32* Length,
IN UINTN ProcessId
);
NAL_STATUS
NalUnmapAddressEx(
IN KVOID* VirtualAddress,
IN NAL_PHYSICAL_ADDRESS PhysicalAddress,
IN UINT32 Length,
IN UINTN ProcessId
);
KVOID*
_NalAllocateMemoryNonPagedEx(
IN UINT32 ByteCount,
IN UINT32 Alignment,
IN UINTN ProcessId,
OUT NAL_PHYSICAL_ADDRESS* PhysicalAddress,
IN CHAR* NamedLocator,
IN UINT32 LineNumber
);
VOID
_NalFreeMemoryNonPagedEx(
IN KVOID* Address,
IN UINTN ProcessId,
IN CHAR* NamedLocator,
IN UINT32 LineNumber
);
NAL_PHYSICAL_ADDRESS
NalGetPhysicalMemoryAddressEx(
IN KVOID* VirtualAddress,
IN UINTN ProcessId
);
#endif
VOID
NalDisableMapMemoryToUserSpace(VOID);
BOOLEAN
NalOsSupportsIoMode(VOID);
UINT32
_NalBitSwap(
IN UINT32 Data,
IN UINT32 Bits
);
char*
NalGetCopyrightYear(VOID);
#if !defined(NAL_DRIVER)
UINT32
NalGetLogicalCpuCount(VOID);
NAL_STATUS
NalCreateThread(
IN NAL_THREAD_FUNC ThreadFunction,
IN VOID* Context,
OUT NAL_THREAD_ID* ThreadId
);
NAL_STATUS
NalTerminateThread(
IN NAL_THREAD_ID* ThreadId
);
BOOLEAN
NalIsThreadRunning(
IN NAL_THREAD_ID* ThreadId
);
#endif
#endif