1 /* 2 * PROJECT: ReactOS Xbox miniport video driver 3 * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) 4 * PURPOSE: Simple framebuffer driver for NVIDIA NV2A XGPU 5 * COPYRIGHT: Copyright 2004 Ge van Geldorp 6 * Copyright 2004 Filip Navara 7 * Copyright 2019 Stanislav Motylkov (x86corez@gmail.com) 8 */ 9 10 #pragma once 11 12 /* INCLUDES *******************************************************************/ 13 14 #include "ntdef.h" 15 #define PAGE_SIZE 4096 16 #include "dderror.h" 17 #include "devioctl.h" 18 #include "miniport.h" 19 #include "video.h" 20 21 /* FIXME: NDK not compatible with miniport drivers */ 22 #define SystemBasicInformation 0 23 typedef struct _SYSTEM_BASIC_INFORMATION 24 { 25 ULONG Reserved; 26 ULONG TimerResolution; 27 ULONG PageSize; 28 ULONG NumberOfPhysicalPages; 29 ULONG LowestPhysicalPageNumber; 30 ULONG HighestPhysicalPageNumber; 31 ULONG AllocationGranularity; 32 ULONG MinimumUserModeAddress; 33 ULONG MaximumUserModeAddress; 34 KAFFINITY ActiveProcessorsAffinityMask; 35 CCHAR NumberOfProcessors; 36 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION; 37 38 LONG 39 __stdcall 40 ZwQuerySystemInformation( 41 IN ULONG SystemInformationClass, 42 OUT PVOID SystemInformation, 43 IN ULONG Length, 44 OUT PULONG ResultLength 45 ); 46 47 #define I2C_IO_BASE 0xC000 48 #define NV2A_CONTROL_FRAMEBUFFER_ADDRESS_OFFSET 0x600800 49 50 typedef struct 51 { 52 PHYSICAL_ADDRESS PhysControlStart; 53 ULONG ControlLength; 54 PVOID VirtControlStart; 55 PHYSICAL_ADDRESS PhysFrameBufferStart; 56 } XBOXVMP_DEVICE_EXTENSION, *PXBOXVMP_DEVICE_EXTENSION; 57 58 VP_STATUS 59 NTAPI 60 XboxVmpFindAdapter( 61 IN PVOID HwDeviceExtension, 62 IN PVOID HwContext, 63 IN PWSTR ArgumentString, 64 IN OUT PVIDEO_PORT_CONFIG_INFO ConfigInfo, 65 OUT PUCHAR Again); 66 67 BOOLEAN 68 NTAPI 69 XboxVmpInitialize( 70 PVOID HwDeviceExtension); 71 72 BOOLEAN 73 NTAPI 74 XboxVmpStartIO( 75 PVOID HwDeviceExtension, 76 PVIDEO_REQUEST_PACKET RequestPacket); 77 78 BOOLEAN 79 NTAPI 80 XboxVmpResetHw( 81 PVOID DeviceExtension, 82 ULONG Columns, 83 ULONG Rows); 84 85 VP_STATUS 86 NTAPI 87 XboxVmpGetPowerState( 88 PVOID HwDeviceExtension, 89 ULONG HwId, 90 PVIDEO_POWER_MANAGEMENT VideoPowerControl); 91 92 VP_STATUS 93 NTAPI 94 XboxVmpSetPowerState( 95 PVOID HwDeviceExtension, 96 ULONG HwId, 97 PVIDEO_POWER_MANAGEMENT VideoPowerControl); 98 99 BOOLEAN 100 FASTCALL 101 XboxVmpSetCurrentMode( 102 PXBOXVMP_DEVICE_EXTENSION DeviceExtension, 103 PVIDEO_MODE RequestedMode, 104 PSTATUS_BLOCK StatusBlock); 105 106 BOOLEAN 107 FASTCALL 108 XboxVmpResetDevice( 109 PXBOXVMP_DEVICE_EXTENSION DeviceExtension, 110 PSTATUS_BLOCK StatusBlock); 111 112 BOOLEAN 113 FASTCALL 114 XboxVmpMapVideoMemory( 115 PXBOXVMP_DEVICE_EXTENSION DeviceExtension, 116 PVIDEO_MEMORY RequestedAddress, 117 PVIDEO_MEMORY_INFORMATION MapInformation, 118 PSTATUS_BLOCK StatusBlock); 119 120 BOOLEAN 121 FASTCALL 122 XboxVmpUnmapVideoMemory( 123 PXBOXVMP_DEVICE_EXTENSION DeviceExtension, 124 PVIDEO_MEMORY VideoMemory, 125 PSTATUS_BLOCK StatusBlock); 126 127 BOOLEAN 128 FASTCALL 129 XboxVmpQueryNumAvailModes( 130 PXBOXVMP_DEVICE_EXTENSION DeviceExtension, 131 PVIDEO_NUM_MODES Modes, 132 PSTATUS_BLOCK StatusBlock); 133 134 BOOLEAN 135 FASTCALL 136 XboxVmpQueryAvailModes( 137 PXBOXVMP_DEVICE_EXTENSION DeviceExtension, 138 PVIDEO_MODE_INFORMATION ReturnedModes, 139 PSTATUS_BLOCK StatusBlock); 140 141 BOOLEAN 142 FASTCALL 143 XboxVmpQueryCurrentMode( 144 PXBOXVMP_DEVICE_EXTENSION DeviceExtension, 145 PVIDEO_MODE_INFORMATION VideoModeInfo, 146 PSTATUS_BLOCK StatusBlock); 147 148 BOOLEAN 149 FASTCALL 150 XboxVmpSetColorRegisters( 151 PXBOXVMP_DEVICE_EXTENSION DeviceExtension, 152 PVIDEO_CLUT ColorLookUpTable, 153 PSTATUS_BLOCK StatusBlock); 154 155 /* EOF */ 156