reactos/win32ss/drivers/miniport/xboxvmp/xboxvmp.h

156 lines
3.5 KiB
C
Raw Normal View History

/*
2019-09-01 19:30:09 +00:00
* PROJECT: ReactOS Xbox miniport video driver
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
* PURPOSE: Simple framebuffer driver for NVIDIA NV2A XGPU
* COPYRIGHT: Copyright 2004 Ge van Geldorp
* Copyright 2004 Filip Navara
* Copyright 2019 Stanislav Motylkov (x86corez@gmail.com)
*/
#pragma once
/* INCLUDES *******************************************************************/
#include "ntdef.h"
#define PAGE_SIZE 4096
#include "dderror.h"
#include "devioctl.h"
#include "miniport.h"
#include "video.h"
/* FIXME: NDK not compatible with miniport drivers */
#define SystemBasicInformation 0
typedef struct _SYSTEM_BASIC_INFORMATION
{
ULONG Reserved;
ULONG TimerResolution;
ULONG PageSize;
ULONG NumberOfPhysicalPages;
ULONG LowestPhysicalPageNumber;
ULONG HighestPhysicalPageNumber;
ULONG AllocationGranularity;
ULONG MinimumUserModeAddress;
ULONG MaximumUserModeAddress;
KAFFINITY ActiveProcessorsAffinityMask;
CCHAR NumberOfProcessors;
} SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
LONG
__stdcall
ZwQuerySystemInformation(
IN ULONG SystemInformationClass,
OUT PVOID SystemInformation,
IN ULONG Length,
OUT PULONG ResultLength
);
2019-09-01 19:44:24 +00:00
#define I2C_IO_BASE 0xC000
#define NV2A_CONTROL_FRAMEBUFFER_ADDRESS_OFFSET 0x600800
typedef struct
{
2019-09-01 19:30:09 +00:00
PHYSICAL_ADDRESS PhysControlStart;
ULONG ControlLength;
PVOID VirtControlStart;
PHYSICAL_ADDRESS PhysFrameBufferStart;
} XBOXVMP_DEVICE_EXTENSION, *PXBOXVMP_DEVICE_EXTENSION;
2019-09-01 19:30:09 +00:00
VP_STATUS
NTAPI
XboxVmpFindAdapter(
2019-09-01 19:30:09 +00:00
IN PVOID HwDeviceExtension,
IN PVOID HwContext,
IN PWSTR ArgumentString,
IN OUT PVIDEO_PORT_CONFIG_INFO ConfigInfo,
OUT PUCHAR Again);
BOOLEAN
NTAPI
XboxVmpInitialize(
PVOID HwDeviceExtension);
BOOLEAN
NTAPI
XboxVmpStartIO(
2019-09-01 19:30:09 +00:00
PVOID HwDeviceExtension,
PVIDEO_REQUEST_PACKET RequestPacket);
2019-09-01 19:30:09 +00:00
BOOLEAN
NTAPI
XboxVmpResetHw(
2019-09-01 19:30:09 +00:00
PVOID DeviceExtension,
ULONG Columns,
ULONG Rows);
2019-09-01 19:30:09 +00:00
VP_STATUS
NTAPI
XboxVmpGetPowerState(
2019-09-01 19:30:09 +00:00
PVOID HwDeviceExtension,
ULONG HwId,
PVIDEO_POWER_MANAGEMENT VideoPowerControl);
2019-09-01 19:30:09 +00:00
VP_STATUS
NTAPI
XboxVmpSetPowerState(
2019-09-01 19:30:09 +00:00
PVOID HwDeviceExtension,
ULONG HwId,
PVIDEO_POWER_MANAGEMENT VideoPowerControl);
2019-09-01 19:30:09 +00:00
BOOLEAN
FASTCALL
XboxVmpSetCurrentMode(
2019-09-01 19:30:09 +00:00
PXBOXVMP_DEVICE_EXTENSION DeviceExtension,
PVIDEO_MODE RequestedMode,
PSTATUS_BLOCK StatusBlock);
2019-09-01 19:30:09 +00:00
BOOLEAN
FASTCALL
XboxVmpResetDevice(
2019-09-01 19:30:09 +00:00
PXBOXVMP_DEVICE_EXTENSION DeviceExtension,
PSTATUS_BLOCK StatusBlock);
2019-09-01 19:30:09 +00:00
BOOLEAN
FASTCALL
XboxVmpMapVideoMemory(
2019-09-01 19:30:09 +00:00
PXBOXVMP_DEVICE_EXTENSION DeviceExtension,
PVIDEO_MEMORY RequestedAddress,
PVIDEO_MEMORY_INFORMATION MapInformation,
PSTATUS_BLOCK StatusBlock);
2019-09-01 19:30:09 +00:00
BOOLEAN
FASTCALL
XboxVmpUnmapVideoMemory(
2019-09-01 19:30:09 +00:00
PXBOXVMP_DEVICE_EXTENSION DeviceExtension,
PVIDEO_MEMORY VideoMemory,
PSTATUS_BLOCK StatusBlock);
2019-09-01 19:30:09 +00:00
BOOLEAN
FASTCALL
XboxVmpQueryNumAvailModes(
2019-09-01 19:30:09 +00:00
PXBOXVMP_DEVICE_EXTENSION DeviceExtension,
PVIDEO_NUM_MODES Modes,
PSTATUS_BLOCK StatusBlock);
2019-09-01 19:30:09 +00:00
BOOLEAN
FASTCALL
XboxVmpQueryAvailModes(
2019-09-01 19:30:09 +00:00
PXBOXVMP_DEVICE_EXTENSION DeviceExtension,
PVIDEO_MODE_INFORMATION ReturnedModes,
PSTATUS_BLOCK StatusBlock);
2019-09-01 19:30:09 +00:00
BOOLEAN
FASTCALL
XboxVmpQueryCurrentMode(
2019-09-01 19:30:09 +00:00
PXBOXVMP_DEVICE_EXTENSION DeviceExtension,
PVIDEO_MODE_INFORMATION VideoModeInfo,
PSTATUS_BLOCK StatusBlock);
2019-09-01 19:30:09 +00:00
BOOLEAN
FASTCALL
XboxVmpSetColorRegisters(
2019-09-01 19:30:09 +00:00
PXBOXVMP_DEVICE_EXTENSION DeviceExtension,
PVIDEO_CLUT ColorLookUpTable,
PSTATUS_BLOCK StatusBlock);
/* EOF */