[XBOXVMP] Fix broken pixels and general refactoring (#1896)
[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 /*
15 * FIXME: specify headers properly in the triangle brackets and rearrange them
16 * in a way so it would be simpler to add NDK and other headers for debugging.
17 */
18 #include "ntdef.h"
19 #define PAGE_SIZE 4096
20 #include "dderror.h"
21 #include "devioctl.h"
22 #include "miniport.h"
23 #include "video.h"
24
25 #define I2C_IO_BASE 0xC000
26 #define NV2A_CONTROL_FRAMEBUFFER_ADDRESS_OFFSET 0x600800
27
28 BOOLEAN
29 I2CTransmitByteGetReturn(
30 UCHAR bPicAddressI2cFormat,
31 UCHAR bDataToWrite,
32 ULONG *Return);
33
34 typedef struct
35 {
36 PHYSICAL_ADDRESS PhysControlStart;
37 ULONG ControlLength;
38 PVOID VirtControlStart;
39 PHYSICAL_ADDRESS PhysFrameBufferStart;
40 } XBOXVMP_DEVICE_EXTENSION, *PXBOXVMP_DEVICE_EXTENSION;
41
42 VP_STATUS
43 NTAPI
44 XboxVmpFindAdapter(
45 IN PVOID HwDeviceExtension,
46 IN PVOID HwContext,
47 IN PWSTR ArgumentString,
48 IN OUT PVIDEO_PORT_CONFIG_INFO ConfigInfo,
49 OUT PUCHAR Again);
50
51 BOOLEAN
52 NTAPI
53 XboxVmpInitialize(
54 PVOID HwDeviceExtension);
55
56 BOOLEAN
57 NTAPI
58 XboxVmpStartIO(
59 PVOID HwDeviceExtension,
60 PVIDEO_REQUEST_PACKET RequestPacket);
61
62 BOOLEAN
63 NTAPI
64 XboxVmpResetHw(
65 PVOID DeviceExtension,
66 ULONG Columns,
67 ULONG Rows);
68
69 VP_STATUS
70 NTAPI
71 XboxVmpGetPowerState(
72 PVOID HwDeviceExtension,
73 ULONG HwId,
74 PVIDEO_POWER_MANAGEMENT VideoPowerControl);
75
76 VP_STATUS
77 NTAPI
78 XboxVmpSetPowerState(
79 PVOID HwDeviceExtension,
80 ULONG HwId,
81 PVIDEO_POWER_MANAGEMENT VideoPowerControl);
82
83 BOOLEAN
84 FASTCALL
85 XboxVmpSetCurrentMode(
86 PXBOXVMP_DEVICE_EXTENSION DeviceExtension,
87 PVIDEO_MODE RequestedMode,
88 PSTATUS_BLOCK StatusBlock);
89
90 BOOLEAN
91 FASTCALL
92 XboxVmpResetDevice(
93 PXBOXVMP_DEVICE_EXTENSION DeviceExtension,
94 PSTATUS_BLOCK StatusBlock);
95
96 BOOLEAN
97 FASTCALL
98 XboxVmpMapVideoMemory(
99 PXBOXVMP_DEVICE_EXTENSION DeviceExtension,
100 PVIDEO_MEMORY RequestedAddress,
101 PVIDEO_MEMORY_INFORMATION MapInformation,
102 PSTATUS_BLOCK StatusBlock);
103
104 BOOLEAN
105 FASTCALL
106 XboxVmpUnmapVideoMemory(
107 PXBOXVMP_DEVICE_EXTENSION DeviceExtension,
108 PVIDEO_MEMORY VideoMemory,
109 PSTATUS_BLOCK StatusBlock);
110
111 BOOLEAN
112 FASTCALL
113 XboxVmpQueryNumAvailModes(
114 PXBOXVMP_DEVICE_EXTENSION DeviceExtension,
115 PVIDEO_NUM_MODES Modes,
116 PSTATUS_BLOCK StatusBlock);
117
118 BOOLEAN
119 FASTCALL
120 XboxVmpQueryAvailModes(
121 PXBOXVMP_DEVICE_EXTENSION DeviceExtension,
122 PVIDEO_MODE_INFORMATION ReturnedModes,
123 PSTATUS_BLOCK StatusBlock);
124
125 BOOLEAN
126 FASTCALL
127 XboxVmpQueryCurrentMode(
128 PXBOXVMP_DEVICE_EXTENSION DeviceExtension,
129 PVIDEO_MODE_INFORMATION VideoModeInfo,
130 PSTATUS_BLOCK StatusBlock);
131
132 BOOLEAN
133 FASTCALL
134 XboxVmpSetColorRegisters(
135 PXBOXVMP_DEVICE_EXTENSION DeviceExtension,
136 PVIDEO_CLUT ColorLookUpTable,
137 PSTATUS_BLOCK StatusBlock);
138
139 /* EOF */