f7014cc1166b4e659b4113690b809326c6069b30
[reactos.git] / win32ss / drivers / miniport / xboxvmp / xboxvmp.h
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 */