914 lines
35 KiB
C
914 lines
35 KiB
C
/***************************************************************************\
|
|
|* *|
|
|
|* Copyright 1993-1998 NVIDIA, Corporation. All rights reserved. *|
|
|
|* *|
|
|
|* NOTICE TO USER: The source code is copyrighted under U.S. and *|
|
|
|* international laws. NVIDIA, Corp. of Sunnyvale, California owns *|
|
|
|* copyrights, patents, and has design patents pending on the design *|
|
|
|* and interface of the NV chips. Users and possessors of this *|
|
|
|* source code are hereby granted a nonexclusive, royalty-free copy- *|
|
|
|* right and design patent license to use this code in individual *|
|
|
|* and commercial software. *|
|
|
|* *|
|
|
|* Any use of this source code must include, in the user documenta- *|
|
|
|* tion and internal comments to the code, notices to the end user *|
|
|
|* as follows: *|
|
|
|* *|
|
|
|* Copyright 1993-1998 NVIDIA, Corporation. NVIDIA has design *|
|
|
|* patents and patents pending in the U.S. and foreign countries. *|
|
|
|* *|
|
|
|* NVIDIA, CORPORATION MAKES NO REPRESENTATION ABOUT THE SUITABILITY *|
|
|
|* OF THIS SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITH- *|
|
|
|* OUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND. NVIDIA, CORPORATION *|
|
|
|* DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOURCE CODE, INCLUD- *|
|
|
|* ING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *|
|
|
|* PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA, CORPORATION BE *|
|
|
|* LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL *|
|
|
|* DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, *|
|
|
|* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR *|
|
|
|* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE *|
|
|
|* USE OR PERFORMANCE OF THIS SOURCE CODE. *|
|
|
|* *|
|
|
|* RESTRICTED RIGHTS LEGEND: Use, duplication, or disclosure by the *|
|
|
|* Government is subject to restrictions as set forth in subpara- *|
|
|
|* graph (c) (1) (ii) of the Rights in Technical Data and Computer *|
|
|
|* Software clause at DFARS 52.227-7013 and in similar clauses in *|
|
|
|* the FAR and NASA FAR Supplement. *|
|
|
|* *|
|
|
\***************************************************************************/
|
|
|
|
|
|
|
|
/***************************************************************************\
|
|
|* *|
|
|
|* NV Architecture Interface *|
|
|
|* *|
|
|
|* <nvos.h> defines the Operating System function and ioctl interfaces to *|
|
|
|* NVIDIA's Unified Media Architecture (TM). *|
|
|
|* *|
|
|
\***************************************************************************/
|
|
|
|
|
|
#ifndef NVOS_INCLUDED
|
|
#define NVOS_INCLUDED
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <nvtypes.h>
|
|
|
|
// local defines here
|
|
#define FILE_DEVICE_NV 0x00008000
|
|
#define NV_IOCTL_FCT_BASE 0x00000800
|
|
|
|
// Use these defines if you are opening the RM vxd or the minivdd using the
|
|
// CreateFile inetrface.
|
|
// NV3 Resource Manager VXDs
|
|
#define NV3_PRIMARY_MINIVDD "\\\\.\\NV3.VXD"
|
|
#define NV3_SECONDARY_MINIVDD "\\\\.\\NV3MINI2.VXD"
|
|
#define NV3_RESMAN_VXD "\\\\.\\NV3RM.VXD"
|
|
// NV4/NV10 Resource Manager VXDs
|
|
#define NVX_PRIMARY_MINIVDD "\\\\.\\NVMINI.VXD"
|
|
#define NVX_SECONDARY_MINIVDD "\\\\.\\NVMINI2.VXD"
|
|
#define NVX_RESMAN_VXD "\\\\.\\NVCORE.VXD"
|
|
|
|
// Use this define for the resman vxd name if you use the VXDLDR_LoadDevice
|
|
// interface.
|
|
#define VXDLDR_NV3_RESMAN_VXD_NAME "NV3RM.VXD"
|
|
#define VXDLDR_NVX_RESMAN_VXD_NAME "NVCORE.VXD"
|
|
#define VXDLDR_NVA_RESMAN_VXD_NAME "NVACORE.VXD"
|
|
|
|
#if defined(WIN32)
|
|
#if !defined(NV_APIENTRY)
|
|
#define NV_APIENTRY __stdcall
|
|
#ifndef APIENTRY
|
|
#define APIENTRY NV_APIENTRY // APIENTRY deprecated; use NV_APIENTRY
|
|
#endif
|
|
#define CAPI NV_APIENTRY // CAPI deprecated; use NV_APIENTRY
|
|
#endif
|
|
#if !defined(NV_FASTCALL)
|
|
#define NV_FASTCALL __fastcall
|
|
//#define FASTCALL NV_FASTCALL // FASTCALL deprecated; use NV_FASTCALL
|
|
#endif
|
|
#if !defined(NV_INLINE)
|
|
#define NV_INLINE __inline
|
|
#define INLINE NV_INLINE // INLINE deprecated; use NV_INLINE
|
|
#endif
|
|
#if !defined(NV_CDECLCALL)
|
|
#define NV_CDECLCALL __cdecl
|
|
#define CDECLCALL NV_CDECLCALL // CDECLCALL deprecated; use NV_CDECLCALL
|
|
#endif
|
|
#if !defined(NV_STDCALL)
|
|
#define NV_STDCALL __stdcall
|
|
#define STDCALL NV_STDCALL // STDCALL deprecated; use NV_STDCALL
|
|
#endif
|
|
|
|
#else /* ! defined(WIN32) */
|
|
|
|
#define NV_APIENTRY
|
|
#define NV_FASTCALL
|
|
#define NV_CDECLCALL
|
|
#define NV_STDCALL
|
|
#ifdef __GNUC__
|
|
#define NV_INLINE __inline__
|
|
#elif defined (macintosh)
|
|
#define NV_INLINE inline
|
|
#else
|
|
#define NV_INLINE
|
|
#endif
|
|
|
|
#endif /* ! WIN32 */
|
|
|
|
#define NV_CAPI NV_APIENTRY
|
|
|
|
|
|
/***************************************************************************\
|
|
|* NV OS Functions *|
|
|
\***************************************************************************/
|
|
|
|
/*
|
|
Note:
|
|
This version of the architecture has been changed to allow the
|
|
RM to return a client handle that will subsequently used to
|
|
identify the client. NvAllocRoot() returns the handle. All
|
|
other functions must specify this client handle.
|
|
|
|
*/
|
|
/* macro NV01_FREE */
|
|
#define NV01_FREE (0x00000000)
|
|
|
|
/* parameter values */
|
|
#define NVOS00_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS00_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS00_STATUS_ERROR_BAD_OBJECT_PARENT (0x00000002)
|
|
#define NVOS00_STATUS_ERROR_BAD_OBJECT_OLD (0x00000003)
|
|
#define NVOS00_STATUS_ERROR_OBJECT_IN_USE (0x00000004)
|
|
#define NVOS00_STATUS_ERROR_OBJECT_HAS_CHILDERN (0x00000005)
|
|
|
|
|
|
/* NT ioctl data structure */
|
|
typedef struct
|
|
{
|
|
NvV32 hRoot;
|
|
NvV32 hObjectParent;
|
|
NvV32 hObjectOld;
|
|
NvV32 status;
|
|
} NVOS00_PARAMETERS;
|
|
|
|
/* macro NV01_ALLOC_ROOT */
|
|
#define NV01_ALLOC_ROOT (0x00000001)
|
|
|
|
/* status values */
|
|
#define NVOS01_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS01_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS01_STATUS_ERROR_BAD_OBJECT_PARENT (0x00000002)
|
|
#define NVOS01_STATUS_ERROR_BAD_OBJECT_NEW (0x00000003)
|
|
#define NVOS01_STATUS_ERROR_BAD_CLASS (0x00000004)
|
|
#define NVOS01_STATUS_ERROR_INSUFFICIENT_RESOURCES (0x00000005)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hObjectNew;
|
|
NvV32 hClass;
|
|
NvV32 status;
|
|
} NVOS01_PARAMETERS;
|
|
|
|
/* valid hClass values. */
|
|
#define NV01_ROOT (0x00000000)
|
|
#define NV01_ROOT_USER (0x00000041)
|
|
|
|
/* macro NV01_ALLOC_MEMORY */
|
|
#define NV01_ALLOC_MEMORY (0x00000002)
|
|
|
|
/* parameter values */
|
|
#define NVOS02_FLAGS_PHYSICALITY 7:4
|
|
#define NVOS02_FLAGS_PHYSICALITY_CONTIGUOUS (0x00000000)
|
|
#define NVOS02_FLAGS_PHYSICALITY_NONCONTIGUOUS (0x00000001)
|
|
#define NVOS02_FLAGS_LOCATION 11:8
|
|
#define NVOS02_FLAGS_LOCATION_PCI (0x00000000)
|
|
#define NVOS02_FLAGS_LOCATION_AGP (0x00000001)
|
|
#define NVOS02_FLAGS_COHERENCY 15:12
|
|
#define NVOS02_FLAGS_COHERENCY_UNCACHED (0x00000000)
|
|
#define NVOS02_FLAGS_COHERENCY_CACHED (0x00000001)
|
|
#define NVOS02_FLAGS_COHERENCY_WRITE_COMBINE (0x00000002)
|
|
#define NVOS02_FLAGS_COHERENCY_WRITE_THROUGH (0x00000003)
|
|
#define NVOS02_FLAGS_COHERENCY_WRITE_PROTECT (0x00000004)
|
|
#define NVOS02_FLAGS_COHERENCY_WRITE_BACK (0x00000005)
|
|
#define NVOS02_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS02_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS02_STATUS_ERROR_BAD_OBJECT_PARENT (0x00000002)
|
|
#define NVOS02_STATUS_ERROR_BAD_OBJECT_NEW (0x00000003)
|
|
#define NVOS02_STATUS_ERROR_BAD_CLASS (0x00000004)
|
|
#define NVOS02_STATUS_ERROR_BAD_FLAGS (0x00000005)
|
|
#define NVOS02_STATUS_ERROR_INSUFFICIENT_RESOURCES (0x00000006)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hRoot;
|
|
NvV32 hObjectParent;
|
|
NvV32 hObjectNew;
|
|
NvV32 hClass;
|
|
NvV32 flags;
|
|
NvP64 pMemory;
|
|
NvU64 pLimit;
|
|
NvV32 status;
|
|
} NVOS02_PARAMETERS;
|
|
|
|
/* macro NV01_ALLOC_CONTEXT_DMA */
|
|
#define NV01_ALLOC_CONTEXT_DMA (0x00000003)
|
|
|
|
/* parameter values */
|
|
#define NVOS03_FLAGS_ACCESS 3:0
|
|
#define NVOS03_FLAGS_ACCESS_READ_WRITE (0x00000000)
|
|
#define NVOS03_FLAGS_ACCESS_READ_ONLY (0x00000001)
|
|
#define NVOS03_FLAGS_ACCESS_WRITE_ONLY (0x00000002)
|
|
#define NVOS03_FLAGS_PHYSICALITY 7:4
|
|
#define NVOS03_FLAGS_PHYSICALITY_CONTIGUOUS (0x00000000)
|
|
#define NVOS03_FLAGS_PHYSICALITY_NONCONTIGUOUS (0x00000001)
|
|
#define NVOS03_FLAGS_LOCKED 11:8
|
|
#define NVOS03_FLAGS_LOCKED_ALWAYS (0x00000000)
|
|
#define NVOS03_FLAGS_LOCKED_IN_TRANSIT (0x00000001)
|
|
#define NVOS03_FLAGS_COHERENCY 31:12
|
|
#define NVOS03_FLAGS_COHERENCY_UNCACHED (0x00000000)
|
|
#define NVOS03_FLAGS_COHERENCY_CACHED (0x00000001)
|
|
#define NVOS03_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS03_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS03_STATUS_ERROR_BAD_OBJECT_PARENT (0x00000002)
|
|
#define NVOS03_STATUS_ERROR_BAD_OBJECT_NEW (0x00000003)
|
|
#define NVOS03_STATUS_ERROR_BAD_CLASS (0x00000004)
|
|
#define NVOS03_STATUS_ERROR_BAD_FLAGS (0x00000005)
|
|
#define NVOS03_STATUS_ERROR_BAD_BASE (0x00000006)
|
|
#define NVOS03_STATUS_ERROR_BAD_LIMIT (0x00000007)
|
|
#define NVOS03_STATUS_ERROR_PROTECTION_FAULT (0x00000008)
|
|
#define NVOS03_STATUS_ERROR_MULTIPLE_MEMORY_TYPES (0x00000009)
|
|
#define NVOS03_STATUS_ERROR_INSUFFICIENT_RESOURCES (0x0000000A)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hObjectParent;
|
|
NvV32 hObjectNew;
|
|
NvV32 hClass;
|
|
NvV32 flags;
|
|
NvP64 pBase;
|
|
NvU64 limit;
|
|
NvV32 status;
|
|
} NVOS03_PARAMETERS;
|
|
|
|
/* macro NV01_ALLOC_CHANNEL_PIO */
|
|
#define NV01_ALLOC_CHANNEL_PIO (0x00000004)
|
|
|
|
/* parameter values */
|
|
#define NVOS04_FLAGS_FIFO_RUNOUT_IGNORE (0x00000000)
|
|
#define NVOS04_FLAGS_FIFO_RUNOUT_ERROR (0x00000001)
|
|
#define NVOS04_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS04_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS04_STATUS_ERROR_BAD_OBJECT_PARENT (0x00000002)
|
|
#define NVOS04_STATUS_ERROR_BAD_OBJECT_NEW (0x00000003)
|
|
#define NVOS04_STATUS_ERROR_BAD_CLASS (0x00000004)
|
|
#define NVOS04_STATUS_ERROR_BAD_OBJECT_ERROR (0x00000005)
|
|
#define NVOS04_STATUS_ERROR_BAD_FLAGS (0x00000006)
|
|
#define NVOS04_STATUS_ERROR_INSUFFICIENT_RESOURCES (0x00000007)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hRoot;
|
|
NvV32 hObjectParent;
|
|
NvV32 hObjectNew;
|
|
NvV32 hClass;
|
|
NvV32 hObjectError;
|
|
NvP64 pChannel;
|
|
NvV32 flags;
|
|
NvV32 status;
|
|
} NVOS04_PARAMETERS;
|
|
|
|
/* macro NV01_ALLOC_OBJECT */
|
|
#define NV01_ALLOC_OBJECT (0x00000005)
|
|
|
|
/* parameter values */
|
|
#define NVOS05_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS05_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS05_STATUS_ERROR_BAD_OBJECT_PARENT (0x00000002)
|
|
#define NVOS05_STATUS_ERROR_BAD_OBJECT_NEW (0x00000003)
|
|
#define NVOS05_STATUS_ERROR_BAD_CLASS (0x00000004)
|
|
#define NVOS05_STATUS_ERROR_INSUFFICIENT_RESOURCES (0x00000005)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hRoot;
|
|
NvV32 hObjectParent;
|
|
NvV32 hObjectNew;
|
|
NvV32 hClass;
|
|
NvV32 status;
|
|
} NVOS05_PARAMETERS;
|
|
|
|
// ***** this has been changed to allow a device name string to be returned
|
|
/* macro NV01_ALLOC_DEVICE */
|
|
#define NV01_ALLOC_DEVICE (0x00000006)
|
|
|
|
/* parameter values */
|
|
#define NVOS06_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS06_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS06_STATUS_ERROR_BAD_OBJECT_PARENT (0x00000002)
|
|
#define NVOS06_STATUS_ERROR_BAD_OBJECT_NEW (0x00000003)
|
|
#define NVOS06_STATUS_ERROR_BAD_CLASS (0x00000004)
|
|
#define NVOS06_STATUS_ERROR_INSUFFICIENT_RESOURCES (0x00000005)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hObjectParent;
|
|
NvV32 hObjectNew;
|
|
NvV32 hClass;
|
|
#if _WIN32_WINNT >= 0x0400
|
|
NvP64 szName;
|
|
#else
|
|
NvV32 szName;
|
|
#endif
|
|
NvV32 status;
|
|
} NVOS06_PARAMETERS;
|
|
|
|
/* macro NV03_ALLOC_CHANNEL_DMA */
|
|
#define NV03_ALLOC_CHANNEL_DMA (0x00000007)
|
|
|
|
/* parameter values */
|
|
#define NVOS07_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS07_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS07_STATUS_ERROR_BAD_OBJECT_PARENT (0x00000002)
|
|
#define NVOS07_STATUS_ERROR_BAD_OBJECT_NEW (0x00000003)
|
|
#define NVOS07_STATUS_ERROR_BAD_CLASS (0x00000004)
|
|
#define NVOS07_STATUS_ERROR_BAD_OBJECT_ERROR (0x00000005)
|
|
#define NVOS07_STATUS_ERROR_BAD_OBJECT_BUFFER (0x00000006)
|
|
#define NVOS07_STATUS_ERROR_BAD_OFFSET (0x00000007)
|
|
#define NVOS07_STATUS_ERROR_INSUFFICIENT_RESOURCES (0x00000008)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hRoot;
|
|
NvV32 hObjectParent;
|
|
NvV32 hObjectNew;
|
|
NvV32 hClass;
|
|
NvV32 hObjectError;
|
|
NvV32 hObjectBuffer;
|
|
NvU32 offset;
|
|
NvP64 pControl;
|
|
NvV32 status;
|
|
} NVOS07_PARAMETERS;
|
|
|
|
/* macro NV03_DMA_FLOW_CONTROL */
|
|
#define NV03_DMA_FLOW_CONTROL (0x00000008)
|
|
|
|
/* parameter values */
|
|
#define NVOS08_FLAGS_PUT 3:0
|
|
#define NVOS08_FLAGS_PUT_IGNORE (0x00000000)
|
|
#define NVOS08_FLAGS_PUT_UPDATE (0x00000001)
|
|
#define NVOS08_FLAGS_JUMP 31:4
|
|
#define NVOS08_FLAGS_JUMP_IGNORE (0x00000000)
|
|
#define NVOS08_FLAGS_JUMP_UPDATE (0x00000001)
|
|
#define NVOS08_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS08_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS08_STATUS_ERROR_BAD_OBJECT_PARENT (0x00000002)
|
|
#define NVOS08_STATUS_ERROR_BAD_FLAGS (0x00000003)
|
|
#define NVOS08_STATUS_ERROR_BAD_PUT (0x00000004)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hChannel;
|
|
NvV32 flags;
|
|
NvU32 put;
|
|
NvU32 get;
|
|
NvV32 status;
|
|
} NVOS08_PARAMETERS;
|
|
|
|
/* macro NV01_INTERRUPT */
|
|
#define NV01_INTERRUPT (0x00000009)
|
|
|
|
/* parameter values */
|
|
#define NVOS09_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS09_STATUS_ERROR_BAD_CLIENT (0x00000001)
|
|
#define NVOS09_STATUS_ERROR_BAD_DEVICE (0x00000002)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hClient;
|
|
NvV32 hDevice;
|
|
NvV32 status;
|
|
} NVOS09_PARAMETERS;
|
|
|
|
/* macro NV01_ALLOC_EVENT */
|
|
#define NV01_ALLOC_EVENT (0x0000000A)
|
|
|
|
/* parameter values */
|
|
#define NVOS10_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS10_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS10_STATUS_ERROR_BAD_OBJECT_PARENT (0x00000002)
|
|
#define NVOS10_STATUS_ERROR_BAD_OBJECT_NEW (0x00000003)
|
|
#define NVOS10_STATUS_ERROR_BAD_CLASS (0x00000004)
|
|
#define NVOS10_STATUS_ERROR_BAD_INDEX (0x00000005)
|
|
#define NVOS10_STATUS_ERROR_BAD_EVENT (0x00000006)
|
|
#define NVOS10_STATUS_ERROR_OBJECT_IN_USE (0x00000007)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hRoot;
|
|
NvV32 hObjectParent;
|
|
NvV32 hObjectNew;
|
|
NvV32 hClass;
|
|
NvV32 index;
|
|
NvU64 hEvent;
|
|
NvV32 status;
|
|
} NVOS10_PARAMETERS;
|
|
|
|
/* Valid values for hClass in Nv01AllocEvent */
|
|
/* Note that NV01_EVENT_OS_EVENT is same as NV01_EVENT_WIN32_EVENT */
|
|
/* TODO: delete the WIN32 name */
|
|
#define NV01_EVENT_KERNEL_CALLBACK (0x00000078)
|
|
#define NV01_EVENT_OS_EVENT (0x00000079)
|
|
#define NV01_EVENT_WIN32_EVENT NV01_EVENT_OS_EVENT
|
|
|
|
//
|
|
// There's some definite ugly reuse of args in NV01_ARCH_HEAP for the various
|
|
// functions. We'd like to rename field names when adding funcs, so the args
|
|
// go in the appropriate places.
|
|
//
|
|
// For example, adding HEAP_INFO_FREE_BLOCKS, should take offset/offset2 args,
|
|
// but because it's not a union and some of the drivers refer to their own typedef
|
|
// for the struct, we reuse field names that don't apply to the func.
|
|
//
|
|
|
|
/* funct NV03_HEAP */
|
|
#define NV01_ARCH_HEAP (0x0000000B)
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hRoot;
|
|
NvV32 hObjectParent;
|
|
NvU32 function;
|
|
NvU32 owner;
|
|
NvU32 type; /* holds 16bits of flags and 16bits of type */
|
|
NvU32 depth;
|
|
NvU32 width;
|
|
NvU32 height;
|
|
NvS32 pitch;
|
|
NvU32 offset; // for NVOS11_HEAP_INFO_FREE_BLOCKS, offset to be considered freed
|
|
NvU32 size; // for NVOS11_HEAP_INFO, size of largest free block
|
|
#if _WIN32_WINNT >= 0x0400
|
|
NvP64 address; // for NVOS11_HEAP_INFO, base address of heap
|
|
#else
|
|
NvU32 address; // for NVOS11_HEAP_INFO, base address of heap
|
|
#endif
|
|
NvU32 limit; // for NVOS11_HEAP_INFO_FREE_BLOCKS, offset to be considered freed
|
|
NvU32 total;
|
|
NvU32 free;
|
|
NvV32 status;
|
|
} NVOS11_PARAMETERS;
|
|
/* parameter values */
|
|
#define NVOS11_HEAP_ALLOC_DEPTH_WIDTH_HEIGHT 1
|
|
#define NVOS11_HEAP_ALLOC_SIZE 2
|
|
#define NVOS11_HEAP_FREE 3
|
|
#define NVOS11_HEAP_PURGE 4
|
|
#define NVOS11_HEAP_INFO 5
|
|
#define NVOS11_HEAP_ALLOC_TILED_PITCH_HEIGHT 6
|
|
#define NVOS11_HEAP_DESTROY 7
|
|
#define NVOS11_HEAP_INFO_FREE_BLOCKS 8
|
|
#define NVOS11_TYPE_IMAGE 0
|
|
#define NVOS11_TYPE_DEPTH 1
|
|
#define NVOS11_TYPE_TEXTURE 2
|
|
#define NVOS11_TYPE_VIDEO_OVERLAY 3
|
|
#define NVOS11_TYPE_FONT 4
|
|
#define NVOS11_TYPE_CURSOR 5
|
|
#define NVOS11_TYPE_DMA 6
|
|
#define NVOS11_TYPE_INSTANCE 7
|
|
#define NVOS11_TYPE_PRIMARY 8
|
|
#define NVOS11_TYPE_IMAGE_TILED 9
|
|
#define NVOS11_TYPE_DEPTH_COMPR16 10
|
|
#define NVOS11_TYPE_DEPTH_COMPR32 11
|
|
#define NVOS11_TYPE_FLAGS 31:16
|
|
#define NVOS11_TYPE_FLAGS_IGNORE_BANK_PLACEMENT 0x00000001
|
|
#define NVOS11_TYPE_FLAGS_FORCE_MEM_GROWS_UP 0x00000002
|
|
#define NVOS11_TYPE_FLAGS_FORCE_MEM_GROWS_DOWN 0x00000004
|
|
#define NVOS11_INVALID_BLOCK_FREE_OFFSET 0xFFFFFFFF
|
|
#define NVOS11_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS11_STATUS_ERROR_INSUFFICIENT_RESOURCES (0x00000001)
|
|
#define NVOS11_STATUS_ERROR_INVALID_FUNCTION (0x00000002)
|
|
#define NVOS11_STATUS_ERROR_INVALID_OWNER (0x00000003)
|
|
#define NVOS11_STATUS_ERROR_INVALID_HEAP (0x00000004)
|
|
|
|
/* function OS0C */
|
|
#define NV01_CONFIG_VERSION (0x0000000C)
|
|
|
|
/* parameter values */
|
|
#define NVOS12_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS12_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS12_STATUS_ERROR_BAD_CLIENT (0x00000002)
|
|
#define NVOS12_STATUS_ERROR_BAD_DEVICE (0x00000003)
|
|
#define NVOS12_STATUS_ERROR_INSUFFICIENT_RESOURCES (0x00000005)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hClient;
|
|
NvV32 hDevice;
|
|
NvV32 version;
|
|
NvV32 status;
|
|
} NVOS12_PARAMETERS;
|
|
|
|
/* function OS0D */
|
|
#define NV01_CONFIG_GET (0x0000000D)
|
|
|
|
/* parameter values */
|
|
#define NVOS13_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS13_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS13_STATUS_ERROR_BAD_CLIENT (0x00000002)
|
|
#define NVOS13_STATUS_ERROR_BAD_DEVICE (0x00000003)
|
|
#define NVOS13_STATUS_ERROR_BAD_INDEX (0x00000004)
|
|
#define NVOS13_STATUS_ERROR_INSUFFICIENT_RESOURCES (0x00000005)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hClient;
|
|
NvV32 hDevice;
|
|
NvV32 index;
|
|
NvV32 value;
|
|
NvV32 status;
|
|
} NVOS13_PARAMETERS;
|
|
|
|
/* function OS0E */
|
|
#define NV01_CONFIG_SET (0x0000000E)
|
|
|
|
/* parameter values */
|
|
#define NVOS14_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS14_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS14_STATUS_ERROR_BAD_CLIENT (0x00000002)
|
|
#define NVOS14_STATUS_ERROR_BAD_DEVICE (0x00000003)
|
|
#define NVOS14_STATUS_ERROR_BAD_INDEX (0x00000004)
|
|
#define NVOS14_STATUS_ERROR_INSUFFICIENT_RESOURCES (0x00000005)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hClient;
|
|
NvV32 hDevice;
|
|
NvV32 index;
|
|
NvV32 oldValue;
|
|
NvV32 newValue;
|
|
NvV32 status;
|
|
} NVOS14_PARAMETERS;
|
|
|
|
/* function OS0F */
|
|
#define NV01_CONFIG_UPDATE (0x0000000F)
|
|
|
|
/* parameter values */
|
|
#define NVOS15_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS15_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS15_STATUS_ERROR_BAD_CLIENT (0x00000002)
|
|
#define NVOS15_STATUS_ERROR_BAD_DEVICE (0x00000003)
|
|
#define NVOS15_STATUS_ERROR_BAD_FLAGS (0x00000004)
|
|
#define NVOS15_STATUS_ERROR_INSUFFICIENT_RESOURCES (0x00000005)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hClient;
|
|
NvV32 hDevice;
|
|
NvV32 flags;
|
|
NvV32 status;
|
|
} NVOS15_PARAMETERS;
|
|
|
|
/* function OS16 */
|
|
#define NV04_RING0_CALLBACK (0x00000010)
|
|
|
|
/* parameter values */
|
|
#define NVOS16_STATUS_SUCCESS (0x00000000)
|
|
|
|
/* callback function prototype */
|
|
typedef NvU32 (*RING0CALLBACKPROC)(NvU32, NvU32);
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hClient;
|
|
NvV32 hDevice;
|
|
#if _WIN32_WINNT >= 0x0400
|
|
NvP64 functionPtr;
|
|
#else
|
|
RING0CALLBACKPROC functionPtr;
|
|
#endif
|
|
NvU32 param1;
|
|
NvU32 param2;
|
|
NvV32 status;
|
|
} NVRM_RING0CALLBACK_PARAMS;
|
|
|
|
/* function OS17 */
|
|
#define NV04_CONFIG_GET_EX (0x00000011)
|
|
|
|
/* parameter values */
|
|
#define NVOS_CGE_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS_CGE_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS_CGE_STATUS_ERROR_BAD_CLIENT (0x00000002)
|
|
#define NVOS_CGE_STATUS_ERROR_BAD_DEVICE (0x00000003)
|
|
#define NVOS_CGE_STATUS_ERROR_BAD_INDEX (0x00000004)
|
|
#define NVOS_CGE_STATUS_ERROR_INSUFFICIENT_RESOURCES (0x00000005)
|
|
#define NVOS_CGE_STATUS_ERROR_BAD_PARAM_STRUCT (0x00000006)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hClient;
|
|
NvV32 hDevice;
|
|
NvV32 index;
|
|
#if _WIN32_WINNT >= 0x0400
|
|
NvP64 paramStructPtr;
|
|
#else
|
|
NvV32 paramStructPtr;
|
|
#endif
|
|
NvU32 paramSize;
|
|
NvV32 status;
|
|
} NVOS_CONFIG_GET_EX_PARAMS;
|
|
|
|
/* function OS18 */
|
|
#define NV04_CONFIG_SET_EX (0x00000012)
|
|
|
|
/* parameter values */
|
|
#define NVOS_CSE_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS_CSE_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS_CSE_STATUS_ERROR_BAD_CLIENT (0x00000002)
|
|
#define NVOS_CSE_STATUS_ERROR_BAD_DEVICE (0x00000003)
|
|
#define NVOS_CSE_STATUS_ERROR_BAD_INDEX (0x00000004)
|
|
#define NVOS_CSE_STATUS_ERROR_INSUFFICIENT_RESOURCES (0x00000005)
|
|
#define NVOS_CSE_STATUS_ERROR_BAD_PARAM_STRUCT (0x00000006)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hClient;
|
|
NvV32 hDevice;
|
|
NvV32 index;
|
|
#if _WIN32_WINNT >= 0x0400
|
|
NvP64 paramStructPtr;
|
|
#else
|
|
NvV32 paramStructPtr;
|
|
#endif
|
|
NvU32 paramSize;
|
|
NvV32 status;
|
|
} NVOS_CONFIG_SET_EX_PARAMS;
|
|
|
|
/* function OS19 */
|
|
#define NV04_I2C_ACCESS (0x00000013)
|
|
|
|
/* parameter values */
|
|
#define NVOS_I2C_ACCESS_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS_I2C_ACCESS_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS_I2C_ACCESS_STATUS_ERROR_BAD_CLIENT (0x00000002)
|
|
#define NVOS_I2C_ACCESS_STATUS_ERROR_BAD_DEVICE (0x00000003)
|
|
#define NVOS_I2C_ACCESS_STATUS_ERROR_INSUFFICIENT_RESOURCES (0x00000004)
|
|
#define NVOS_I2C_ACCESS_STATUS_ERROR_BAD_PARAM_STRUCT (0x00000005)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hClient;
|
|
NvV32 hDevice;
|
|
#if _WIN32_WINNT >= 0x0400
|
|
NvP64 paramStructPtr;
|
|
#else
|
|
NvV32 paramStructPtr;
|
|
#endif
|
|
NvU32 paramSize;
|
|
NvV32 status;
|
|
} NVOS_I2C_ACCESS_PARAMS;
|
|
|
|
/* function OS20 */
|
|
#define NV01_DEBUG_CONTROL (0x000000014)
|
|
|
|
/* parameter values */
|
|
#define NVOS20_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS20_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS20_STATUS_ERROR_BAD_DEVICE (0x00000002)
|
|
#define NVOS20_STATUS_ERROR_BAD_FLAGS (0x00000003)
|
|
#define NVOS20_STATUS_ERROR_INSUFFICIENT_RESOURCES (0x00000004)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hRoot;
|
|
NvV32 command;
|
|
NvP64 pArgs;
|
|
NvV32 status;
|
|
} NVOS20_PARAMETERS;
|
|
|
|
/* current values for command */
|
|
#define NVOS20_COMMAND_RM_FAILURE_ENABLE 0x0001
|
|
#define NVOS20_COMMAND_RM_FAILURE_DISABLE 0x0002
|
|
|
|
/* function OS21 */
|
|
#define NV04_ALLOC (0x00000015)
|
|
|
|
/* parameter values */
|
|
#define NVOS21_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS21_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS21_STATUS_ERROR_BAD_ROOT (0x00000002)
|
|
#define NVOS21_STATUS_ERROR_BAD_OBJECT_PARENT (0x00000003)
|
|
#define NVOS21_STATUS_ERROR_BAD_OBJECT_NEW (0x00000004)
|
|
#define NVOS21_STATUS_ERROR_BAD_CLASS (0x00000005)
|
|
#define NVOS21_STATUS_ERROR_INSUFFICIENT_RESOURCES (0x00000006)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hRoot;
|
|
NvV32 hObjectParent;
|
|
NvV32 hObjectNew;
|
|
NvV32 hClass;
|
|
NvP64 pAllocParms;
|
|
NvV32 status;
|
|
} NVOS21_PARAMETERS;
|
|
|
|
/* function OS22 */
|
|
#define NV04_POWER_MANAGEMENT (0x00000016)
|
|
|
|
/* parameter values */
|
|
#define NVOS22_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS22_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS22_STATUS_ERROR_BAD_ROOT (0x00000002)
|
|
#define NVOS22_STATUS_ERROR_BAD_OBJECT_PARENT (0x00000003)
|
|
#define NVOS22_STATUS_ERROR_BAD_CLASS (0x00000005)
|
|
#define NVOS22_STATUS_ERROR_INSUFFICIENT_RESOURCES (0x00000006)
|
|
#define NVOS22_STATUS_ERROR_NO_DEVICE (0x00000007)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hRoot;
|
|
NvV32 hDevice;
|
|
NvV32 command;
|
|
NvV32 head;
|
|
void *params;
|
|
NvV32 status;
|
|
} NVOS22_PARAMETERS;
|
|
|
|
/* Command values */
|
|
|
|
#define NVOS22_POWER_SLEEP 0x0001
|
|
#define NVOS22_POWER_WAKE 0x0002
|
|
#define NVOS22_POWER_WAKE_BIOS_HAS_RUN 0x0003
|
|
#define NVOS22_POWER_DOZE 0x0004
|
|
#define NVOS22_POWER_WAKE_TO_DOZE 0x0005
|
|
#define NVOS22_POWER_GET_LEVEL 0x0008
|
|
|
|
/* function OS21 */
|
|
#define NV10_AGP_INIT (0x000000015)
|
|
#define NV10_AGP_TEARDOWN (0x000000016)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hDevice;
|
|
NvV32 config;
|
|
NvV32 status;
|
|
} NVOS_AGP_PARAMS;
|
|
|
|
/* parameter values */
|
|
#define NVOS_AGP_CONFIG_DISABLE_AGP (0x00000000)
|
|
#define NVOS_AGP_CONFIG_NVAGP (0x00000001)
|
|
#define NVOS_AGP_CONFIG_AGPGART (0x00000002)
|
|
#define NVOS_AGP_CONFIG_ANYAGP (0x00000003)
|
|
|
|
#define NVOS_AGP_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS_AGP_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS_AGP_STATUS_ERROR_BAD_CLIENT (0x00000002)
|
|
#define NVOS_AGP_STATUS_ERROR_BAD_DEVICE (0x00000003)
|
|
|
|
/* function OS25 */
|
|
#define NV04_OSCONFIG_SET (0x00000019)
|
|
|
|
/* parameter values */
|
|
#define NVOS25_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS25_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS25_STATUS_ERROR_BAD_CLIENT (0x00000002)
|
|
#define NVOS25_STATUS_ERROR_BAD_DEVICE (0x00000003)
|
|
#define NVOS25_STATUS_ERROR_BAD_INDEX (0x00000004)
|
|
#define NVOS25_STATUS_ERROR_INSUFFICIENT_RESOURCES (0x00000005)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hClient;
|
|
NvV32 hDevice;
|
|
NvV32 index;
|
|
NvV32 oldValue;
|
|
NvV32 newValue;
|
|
NvV32 status;
|
|
} NVOS25_PARAMETERS;
|
|
|
|
/* function OS26 */
|
|
#define NV04_OSCONFIG_GET (0x0000001A)
|
|
|
|
/* parameter values */
|
|
#define NVOS26_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS26_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS26_STATUS_ERROR_BAD_CLIENT (0x00000002)
|
|
#define NVOS26_STATUS_ERROR_BAD_DEVICE (0x00000003)
|
|
#define NVOS26_STATUS_ERROR_BAD_INDEX (0x00000004)
|
|
#define NVOS26_STATUS_ERROR_INSUFFICIENT_RESOURCES (0x00000005)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hClient;
|
|
NvV32 hDevice;
|
|
NvV32 index;
|
|
NvV32 value;
|
|
NvV32 status;
|
|
} NVOS26_PARAMETERS;
|
|
|
|
/* function OS27 */
|
|
#define NV04_OSCONFIG_GET_EX (0x0000001B)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hClient;
|
|
NvV32 hDevice;
|
|
NvV32 index;
|
|
#if _WIN32_WINNT >= 0x0400
|
|
NvP64 paramStructPtr;
|
|
#else
|
|
NvV32 paramStructPtr;
|
|
#endif
|
|
NvU32 paramSize;
|
|
NvV32 status;
|
|
} NVOS_OSCONFIG_GET_EX_PARAMS;
|
|
|
|
/* function OS28 */
|
|
#define NV04_OSCONFIG_SET_EX (0x0000001C)
|
|
|
|
/* parameters */
|
|
typedef struct
|
|
{
|
|
NvV32 hClient;
|
|
NvV32 hDevice;
|
|
NvV32 index;
|
|
#if _WIN32_WINNT >= 0x0400
|
|
NvP64 paramStructPtr;
|
|
#else
|
|
NvV32 paramStructPtr;
|
|
#endif
|
|
NvU32 paramSize;
|
|
NvV32 status;
|
|
} NVOS_OSCONFIG_SET_EX_PARAMS;
|
|
|
|
/* macro NV04_DIRECT_METHOD_CALL */
|
|
#define NV04_DIRECT_METHOD_CALL (0x0000001D)
|
|
|
|
/* parameter values */
|
|
#define NVOS1D_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS1D_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS1D_STATUS_ERROR_BAD_OBJECT_PARENT (0x00000002)
|
|
#define NVOS1D_STATUS_ERROR_BAD_OBJECT_OLD (0x00000003)
|
|
#define NVOS1D_STATUS_ERROR_BAD_METHOD (0x00000004)
|
|
#define NVOS1D_STATUS_ERROR_BAD_DATA (0x00000005)
|
|
|
|
/* NT ioctl data structure */
|
|
typedef struct
|
|
{
|
|
NvV32 hRoot;
|
|
NvV32 hObjectParent;
|
|
NvV32 hObjectOld;
|
|
NvV32 method;
|
|
NvV32 data;
|
|
NvV32 status;
|
|
} NVOS1D_PARAMETERS;
|
|
|
|
#define NV04_UNIFIED_FREE (0x0000001E)
|
|
|
|
#define NVOS1E_STATUS_SUCCESS (0x00000000)
|
|
#define NVOS1E_STATUS_ERROR_OPERATING_SYSTEM (0x00000001)
|
|
#define NVOS1E_STATUS_ERROR_OBJECT_IN_USE (0x00000004)
|
|
|
|
/* NT ioctl data structure */
|
|
typedef struct
|
|
{
|
|
NvV32 hClient;
|
|
NvV32 hClass;
|
|
NvU32 uDeviceRef;
|
|
NvP64 pParam;
|
|
NvV32 status;
|
|
} NV_UNIFIED_FREE;
|
|
|
|
|
|
#ifdef __cplusplus
|
|
};
|
|
#endif
|
|
#endif /* NVOS_INCLUDED */
|
|
|