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)
12 /* INCLUDES *******************************************************************/
15 #define PAGE_SIZE 4096
21 /* FIXME: NDK not compatible with miniport drivers */
22 #define SystemBasicInformation 0
23 typedef struct _SYSTEM_BASIC_INFORMATION
26 ULONG TimerResolution
;
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
;
40 ZwQuerySystemInformation(
41 IN ULONG SystemInformationClass
,
42 OUT PVOID SystemInformation
,
44 OUT PULONG ResultLength
47 #define I2C_IO_BASE 0xC000
48 #define NV2A_CONTROL_FRAMEBUFFER_ADDRESS_OFFSET 0x600800
52 PHYSICAL_ADDRESS PhysControlStart
;
54 PVOID VirtControlStart
;
55 PHYSICAL_ADDRESS PhysFrameBufferStart
;
56 } XBOXVMP_DEVICE_EXTENSION
, *PXBOXVMP_DEVICE_EXTENSION
;
61 IN PVOID HwDeviceExtension
,
63 IN PWSTR ArgumentString
,
64 IN OUT PVIDEO_PORT_CONFIG_INFO ConfigInfo
,
70 PVOID HwDeviceExtension
);
75 PVOID HwDeviceExtension
,
76 PVIDEO_REQUEST_PACKET RequestPacket
);
81 PVOID DeviceExtension
,
88 PVOID HwDeviceExtension
,
90 PVIDEO_POWER_MANAGEMENT VideoPowerControl
);
95 PVOID HwDeviceExtension
,
97 PVIDEO_POWER_MANAGEMENT VideoPowerControl
);
101 XboxVmpSetCurrentMode(
102 PXBOXVMP_DEVICE_EXTENSION DeviceExtension
,
103 PVIDEO_MODE RequestedMode
,
104 PSTATUS_BLOCK StatusBlock
);
109 PXBOXVMP_DEVICE_EXTENSION DeviceExtension
,
110 PSTATUS_BLOCK StatusBlock
);
114 XboxVmpMapVideoMemory(
115 PXBOXVMP_DEVICE_EXTENSION DeviceExtension
,
116 PVIDEO_MEMORY RequestedAddress
,
117 PVIDEO_MEMORY_INFORMATION MapInformation
,
118 PSTATUS_BLOCK StatusBlock
);
122 XboxVmpUnmapVideoMemory(
123 PXBOXVMP_DEVICE_EXTENSION DeviceExtension
,
124 PVIDEO_MEMORY VideoMemory
,
125 PSTATUS_BLOCK StatusBlock
);
129 XboxVmpQueryNumAvailModes(
130 PXBOXVMP_DEVICE_EXTENSION DeviceExtension
,
131 PVIDEO_NUM_MODES Modes
,
132 PSTATUS_BLOCK StatusBlock
);
136 XboxVmpQueryAvailModes(
137 PXBOXVMP_DEVICE_EXTENSION DeviceExtension
,
138 PVIDEO_MODE_INFORMATION ReturnedModes
,
139 PSTATUS_BLOCK StatusBlock
);
143 XboxVmpQueryCurrentMode(
144 PXBOXVMP_DEVICE_EXTENSION DeviceExtension
,
145 PVIDEO_MODE_INFORMATION VideoModeInfo
,
146 PSTATUS_BLOCK StatusBlock
);
150 XboxVmpSetColorRegisters(
151 PXBOXVMP_DEVICE_EXTENSION DeviceExtension
,
152 PVIDEO_CLUT ColorLookUpTable
,
153 PSTATUS_BLOCK StatusBlock
);