Merged changes from videoport_pnp_14032004 branch:
[reactos.git] / reactos / drivers / video / videoprt / videoprt.h
1 /*
2 * VideoPort driver
3 *
4 * Copyright (C) 2002, 2003, 2004 ReactOS Team
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Library General Public License for more details.
15 *
16 * You should have received a copy of the GNU Library General Public
17 * License along with this library; see the file COPYING.LIB.
18 * If not, write to the Free Software Foundation,
19 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 *
21 * $Id: videoprt.h,v 1.7 2004/03/19 20:58:32 navaraf Exp $
22 */
23
24 #ifndef VIDEOPRT_H
25 #define VIDEOPRT_H
26
27 #include <ddk/miniport.h>
28 #include <ddk/video.h>
29 #include <ddk/ntddvdeo.h>
30 #include <ddk/ntapi.h>
31 /* #define NDEBUG */
32 #include <debug.h>
33
34 int swprintf(wchar_t *buf, const wchar_t *fmt, ...);
35 int vsprintf(char *buf, const char *fmt, va_list args);
36 BOOLEAN STDCALL HalDisableSystemInterrupt(ULONG Vector, ULONG Unknown2);
37 BOOLEAN STDCALL HalEnableSystemInterrupt(ULONG Vector, ULONG Unknown2, ULONG Unknown3);
38 PIMAGE_NT_HEADERS STDCALL RtlImageNtHeader(IN PVOID BaseAddress);
39 #define NtCurrentProcess() ((HANDLE)0xFFFFFFFF)
40
41 #define TAG_VIDEO_PORT TAG('V', 'I', 'D', 'P')
42
43 typedef struct _VIDEO_PORT_ADDRESS_MAPPING
44 {
45 LIST_ENTRY List;
46 PVOID MappedAddress;
47 ULONG NumberOfUchars;
48 PHYSICAL_ADDRESS IoAddress;
49 ULONG SystemIoBusNumber;
50 UINT MappingCount;
51 } VIDEO_PORT_ADDRESS_MAPPING, *PVIDEO_PORT_ADDRESS_MAPPING;
52
53 typedef struct _VIDEO_PORT_DRIVER_EXTENSION
54 {
55 VIDEO_HW_INITIALIZATION_DATA InitializationData;
56 PVOID HwContext;
57 UNICODE_STRING RegistryPath;
58 } VIDEO_PORT_DRIVER_EXTENSION, *PVIDEO_PORT_DRIVER_EXTENSION;
59
60 typedef struct _VIDEO_PORT_DEVICE_EXTENSTION
61 {
62 PDEVICE_OBJECT PhysicalDeviceObject;
63 PDEVICE_OBJECT FunctionalDeviceObject;
64 UNICODE_STRING RegistryPath;
65 PKINTERRUPT InterruptObject;
66 KSPIN_LOCK InterruptSpinLock;
67 ULONG InterruptVector;
68 ULONG InterruptLevel;
69 ULONG AdapterInterfaceType;
70 ULONG SystemIoBusNumber;
71 ULONG SystemIoSlotNumber;
72 LIST_ENTRY AddressMappingListHead;
73 KDPC DpcObject;
74 VIDEO_PORT_DRIVER_EXTENSION *DriverExtension;
75 CHAR MiniPortDeviceExtension[1];
76 } VIDEO_PORT_DEVICE_EXTENSION, *PVIDEO_PORT_DEVICE_EXTENSION;
77
78 #define VIDEO_PORT_GET_DEVICE_EXTENSION(MiniportExtension) \
79 CONTAINING_RECORD( \
80 HwDeviceExtension, \
81 VIDEO_PORT_DEVICE_EXTENSION, \
82 MiniPortDeviceExtension)
83
84 /* dispatch.c */
85
86 NTSTATUS STDCALL
87 IntVideoPortAddDevice(
88 IN PDRIVER_OBJECT DriverObject,
89 IN PDEVICE_OBJECT PhysicalDeviceObject);
90
91 NTSTATUS STDCALL
92 IntVideoPortDispatchOpen(
93 IN PDEVICE_OBJECT DeviceObject,
94 IN PIRP Irp);
95
96 NTSTATUS STDCALL
97 IntVideoPortDispatchClose(
98 IN PDEVICE_OBJECT DeviceObject,
99 IN PIRP Irp);
100
101 NTSTATUS STDCALL
102 IntVideoPortDispatchCleanup(
103 IN PDEVICE_OBJECT DeviceObject,
104 IN PIRP Irp);
105
106 NTSTATUS STDCALL
107 IntVideoPortDispatchDeviceControl(
108 IN PDEVICE_OBJECT DeviceObject,
109 IN PIRP Irp);
110
111 NTSTATUS STDCALL
112 IntVideoPortDispatchPnp(
113 IN PDEVICE_OBJECT DeviceObject,
114 IN PIRP Irp);
115
116 NTSTATUS STDCALL
117 IntVideoPortDispatchPower(
118 IN PDEVICE_OBJECT DeviceObject,
119 IN PIRP Irp);
120
121 VOID STDCALL
122 IntVideoPortUnload(PDRIVER_OBJECT DriverObject);
123
124 /* timer.c */
125
126 BOOLEAN STDCALL
127 IntVideoPortSetupTimer(
128 IN PDEVICE_OBJECT DeviceObject,
129 IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension);
130
131 /* interrupt.c */
132
133 BOOLEAN STDCALL
134 IntVideoPortSetupInterrupt(
135 IN PDEVICE_OBJECT DeviceObject,
136 IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension,
137 IN PVIDEO_PORT_CONFIG_INFO ConfigInfo);
138
139 /* videoprt.c */
140
141 extern ULONG CsrssInitialized;
142 extern PEPROCESS Csrss;
143
144 PVOID STDCALL
145 VideoPortGetProcAddress(
146 IN PVOID HwDeviceExtension,
147 IN PUCHAR FunctionName);
148
149 VOID FASTCALL
150 IntAttachToCSRSS(PEPROCESS *CallingProcess, PEPROCESS *PrevAttachedProcess);
151
152 VOID FASTCALL
153 IntDetachFromCSRSS(PEPROCESS *CallingProcess, PEPROCESS *PrevAttachedProcess);
154
155 NTSTATUS STDCALL
156 IntVideoPortFindAdapter(
157 IN PDRIVER_OBJECT DriverObject,
158 IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension,
159 IN PDEVICE_OBJECT PhysicalDeviceObject);
160
161 /* int10.c */
162
163 VP_STATUS STDCALL
164 IntInt10AllocateBuffer(
165 IN PVOID Context,
166 OUT PUSHORT Seg,
167 OUT PUSHORT Off,
168 IN OUT PULONG Length);
169
170 VP_STATUS STDCALL
171 IntInt10FreeBuffer(
172 IN PVOID Context,
173 IN USHORT Seg,
174 IN USHORT Off);
175
176 VP_STATUS STDCALL
177 IntInt10ReadMemory(
178 IN PVOID Context,
179 IN USHORT Seg,
180 IN USHORT Off,
181 OUT PVOID Buffer,
182 IN ULONG Length);
183
184 VP_STATUS STDCALL
185 IntInt10WriteMemory(
186 IN PVOID Context,
187 IN USHORT Seg,
188 IN USHORT Off,
189 IN PVOID Buffer,
190 IN ULONG Length);
191
192 VP_STATUS STDCALL
193 IntInt10CallBios(
194 IN PVOID Context,
195 IN OUT PINT10_BIOS_ARGUMENTS BiosArguments);
196
197 VP_STATUS STDCALL
198 VideoPortInt10(
199 IN PVOID HwDeviceExtension,
200 IN PVIDEO_X86_BIOS_ARGUMENTS BiosArguments);
201
202 #endif /* VIDEOPRT_H */