Reinstate a lot of the original build environment
[msysgit.git] / mingw / include / ddk / video.h
blob52e821221bf971c6c834334d4f6fe11d40b8c527
1 /*
2 * video.h
4 * Video port and miniport driver interface
6 * This file is part of the w32api package.
8 * Contributors:
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
11 * THIS SOFTWARE IS NOT COPYRIGHTED
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
23 #ifndef __VIDEO_H
24 #define __VIDEO_H
27 #if __GNUC__ >=3
28 #pragma GCC system_header
29 #endif
31 #ifdef __WINDDI_H
32 #error winddi.h cannot be included with video.h
33 #else
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
39 #include "ntddk.h"
41 #if defined(_VIDEOPORT_)
42 #define VPAPI DECLSPEC_EXPORT
43 #else
44 #define VPAPI DECLSPEC_IMPORT
45 #endif
47 #include "videoagp.h"
48 #include "ntddvdeo.h"
51 typedef LONG VP_STATUS;
52 typedef VP_STATUS *PVP_STATUS;
53 typedef struct __DMA_PARAMETERS * PDMA;
54 typedef struct _VIDEO_PORT_EVENT *PEVENT;
55 typedef struct _VIDEO_PORT_SPIN_LOCK *PSPIN_LOCK;
56 typedef struct __VP_DMA_ADAPTER *PVP_DMA_ADAPTER;
58 #define DISPLAY_ADAPTER_HW_ID 0xFFFFFFFF
60 #define EVENT_TYPE_MASK 1
61 #define SYNCHRONIZATION_EVENT 0
62 #define NOTIFICATION_EVENT 1
64 #define INITIAL_EVENT_STATE_MASK 2
65 #define INITIAL_EVENT_NOT_SIGNALED 0
66 #define INITIAL_EVENT_SIGNALED 2
68 typedef enum VIDEO_DEBUG_LEVEL {
69 Error = 0,
70 Warn,
71 Trace,
72 Info
73 } VIDEO_DEBUG_LEVEL, *PVIDEO_DEBUG_LEVEL;
75 typedef enum {
76 VideoPortUnlockAfterDma = 1,
77 VideoPortKeepPagesLocked,
78 VideoPortDmaInitOnly
79 } DMA_FLAGS;
81 typedef enum _HW_DMA_RETURN {
82 DmaAsyncReturn,
83 DmaSyncReturn
84 } HW_DMA_RETURN, *PHW_DMA_RETURN;
86 typedef HW_DMA_RETURN
87 (*PVIDEO_HW_START_DMA)(
88 PVOID HwDeviceExtension,
89 PDMA pDma);
92 #ifdef DBG
94 #define PAGED_CODE() \
95 if (VideoPortGetCurrentIrql() > 1 /* APC_LEVEL */) \
96 { \
97 VideoPortDebugPrint(Error, "Video: Pageable code called at IRQL %d\n", VideoPortGetCurrentIrql() ); \
98 ASSERT(FALSE); \
101 #else
103 #define PAGED_CODE()
105 #endif
107 typedef struct _VIDEO_HARDWARE_CONFIGURATION_DATA {
108 INTERFACE_TYPE InterfaceType;
109 ULONG BusNumber;
110 USHORT Version;
111 USHORT Revision;
112 USHORT Irql;
113 USHORT Vector;
114 ULONG ControlBase;
115 ULONG ControlSize;
116 ULONG CursorBase;
117 ULONG CursorSize;
118 ULONG FrameBase;
119 ULONG FrameSize;
120 } VIDEO_HARDWARE_CONFIGURATION_DATA, *PVIDEO_HARDWARE_CONFIGURATION_DATA;
122 #define SIZE_OF_NT4_VIDEO_PORT_CONFIG_INFO 0x42
123 #define SIZE_OF_NT4_VIDEO_HW_INITIALIZATION_DATA 0x28
124 #define SIZE_OF_W2K_VIDEO_HW_INITIALIZATION_DATA 0x50
126 typedef enum _VIDEO_DEVICE_DATA_TYPE {
127 VpMachineData = 0,
128 VpCmosData,
129 VpBusData,
130 VpControllerData,
131 VpMonitorData
132 } VIDEO_DEVICE_DATA_TYPE, *PVIDEO_DEVICE_DATA_TYPE;
136 /* Video miniport driver functions */
138 typedef struct _VP_SCATTER_GATHER_ELEMENT {
139 PHYSICAL_ADDRESS Address;
140 ULONG Length;
141 ULONG_PTR Reserved;
142 } VP_SCATTER_GATHER_ELEMENT, *PVP_SCATTER_GATHER_ELEMENT;
144 typedef struct _VP_SCATTER_GATHER_LIST {
145 ULONG NumberOfElements;
146 ULONG_PTR Reserved;
147 VP_SCATTER_GATHER_ELEMENT Elements[0];
148 } VP_SCATTER_GATHER_LIST, *PVP_SCATTER_GATHER_LIST;
150 typedef VOID DDKAPI
151 (*PEXECUTE_DMA)(
152 /*IN*/ PVOID HwDeviceExtension,
153 /*IN*/ PVP_DMA_ADAPTER VpDmaAdapter,
154 /*IN*/ PVP_SCATTER_GATHER_LIST SGList,
155 /*IN*/ PVOID Context);
157 typedef PVOID DDKAPI
158 (*PVIDEO_PORT_GET_PROC_ADDRESS)(
159 /*IN*/ PVOID HwDeviceExtension,
160 /*IN*/ PUCHAR FunctionName);
162 typedef struct _VIDEO_PORT_CONFIG_INFO {
163 ULONG Length;
164 ULONG SystemIoBusNumber;
165 INTERFACE_TYPE AdapterInterfaceType;
166 ULONG BusInterruptLevel;
167 ULONG BusInterruptVector;
168 KINTERRUPT_MODE InterruptMode;
169 ULONG NumEmulatorAccessEntries;
170 PEMULATOR_ACCESS_ENTRY EmulatorAccessEntries;
171 ULONG_PTR EmulatorAccessEntriesContext;
172 PHYSICAL_ADDRESS VdmPhysicalVideoMemoryAddress;
173 ULONG VdmPhysicalVideoMemoryLength;
174 ULONG HardwareStateSize;
175 ULONG DmaChannel;
176 ULONG DmaPort;
177 UCHAR DmaShareable;
178 UCHAR InterruptShareable;
179 BOOLEAN Master;
180 DMA_WIDTH DmaWidth;
181 DMA_SPEED DmaSpeed;
182 BOOLEAN bMapBuffers;
183 BOOLEAN NeedPhysicalAddresses;
184 BOOLEAN DemandMode;
185 ULONG MaximumTransferLength;
186 ULONG NumberOfPhysicalBreaks;
187 BOOLEAN ScatterGather;
188 ULONG MaximumScatterGatherChunkSize;
189 PVIDEO_PORT_GET_PROC_ADDRESS VideoPortGetProcAddress;
190 PWSTR DriverRegistryPath;
191 ULONGLONG SystemMemorySize;
192 } VIDEO_PORT_CONFIG_INFO, *PVIDEO_PORT_CONFIG_INFO;
194 typedef VP_STATUS DDKAPI
195 (*PVIDEO_HW_FIND_ADAPTER)(
196 /*IN*/ PVOID HwDeviceExtension,
197 /*IN*/ PVOID HwContext,
198 /*IN*/ PWSTR ArgumentString,
199 /*IN OUT*/ PVIDEO_PORT_CONFIG_INFO ConfigInfo,
200 /*OUT*/ PUCHAR Again);
202 typedef VP_STATUS DDKAPI
203 (*PVIDEO_HW_POWER_GET)(
204 /*IN*/ PVOID HwDeviceExtension,
205 /*IN*/ ULONG HwId,
206 /*IN OUT*/ PVIDEO_POWER_MANAGEMENT VideoPowerControl);
208 /* PVIDEO_HW_GET_CHILD_DESCRIPTOR return values */
209 #define VIDEO_ENUM_MORE_DEVICES ERROR_CONTINUE
210 #define VIDEO_ENUM_NO_MORE_DEVICES ERROR_NO_MORE_DEVICES
211 #define VIDEO_ENUM_INVALID_DEVICE ERROR_INVALID_NAME
213 /* PVIDEO_HW_GET_CHILD_DESCRIPTOR.ChildEnumInfo constants */
214 typedef struct _VIDEO_CHILD_ENUM_INFO {
215 ULONG Size;
216 ULONG ChildDescriptorSize;
217 ULONG ChildIndex;
218 ULONG ACPIHwId;
219 PVOID ChildHwDeviceExtension;
220 } VIDEO_CHILD_ENUM_INFO, *PVIDEO_CHILD_ENUM_INFO;
222 /* PVIDEO_HW_GET_CHILD_DESCRIPTOR.VideoChildType constants */
223 typedef enum _VIDEO_CHILD_TYPE {
224 Monitor = 1,
225 NonPrimaryChip,
226 VideoChip,
227 Other
228 } VIDEO_CHILD_TYPE, *PVIDEO_CHILD_TYPE;
230 typedef VP_STATUS DDKAPI
231 (*PVIDEO_HW_GET_CHILD_DESCRIPTOR)(
232 /*IN*/ PVOID HwDeviceExtension,
233 /*IN*/ PVIDEO_CHILD_ENUM_INFO ChildEnumInfo,
234 /*OUT*/ PVIDEO_CHILD_TYPE VideoChildType,
235 /*OUT*/ PUCHAR pChildDescriptor,
236 /*OUT*/ PULONG UId,
237 /*OUT*/ PULONG pUnused);
239 typedef BOOLEAN DDKAPI
240 (*PVIDEO_HW_INITIALIZE)(
241 /*IN*/ PVOID HwDeviceExtension);
243 typedef BOOLEAN DDKAPI
244 (*PVIDEO_HW_INTERRUPT)(
245 /*IN*/ PVOID HwDeviceExtension);
247 /* VIDEO_ACCESS_RANGE.RangePassive */
248 #define VIDEO_RANGE_PASSIVE_DECODE 1
249 #define VIDEO_RANGE_10_BIT_DECODE 2
251 #ifndef VIDEO_ACCESS_RANGE_DEFINED /* also in miniport.h */
252 #define VIDEO_ACCESS_RANGE_DEFINED
253 typedef struct _VIDEO_ACCESS_RANGE {
254 PHYSICAL_ADDRESS RangeStart;
255 ULONG RangeLength;
256 UCHAR RangeInIoSpace;
257 UCHAR RangeVisible;
258 UCHAR RangeShareable;
259 UCHAR RangePassive;
260 } VIDEO_ACCESS_RANGE, *PVIDEO_ACCESS_RANGE;
261 #endif
263 typedef VOID DDKAPI
264 (*PVIDEO_HW_LEGACYRESOURCES)(
265 /*IN*/ ULONG VendorId,
266 /*IN*/ ULONG DeviceId,
267 /*IN OUT*/ PVIDEO_ACCESS_RANGE *LegacyResourceList,
268 /*IN OUT*/ PULONG LegacyResourceCount);
270 typedef VP_STATUS DDKAPI
271 (*PMINIPORT_QUERY_DEVICE_ROUTINE)(
272 /*IN*/ PVOID HwDeviceExtension,
273 /*IN*/ PVOID Context,
274 /*IN*/ VIDEO_DEVICE_DATA_TYPE DeviceDataType,
275 /*IN*/ PVOID Identifier,
276 /*IN*/ ULONG IdentifierLength,
277 /*IN*/ PVOID ConfigurationData,
278 /*IN*/ ULONG ConfigurationDataLength,
279 /*IN OUT*/ PVOID ComponentInformation,
280 /*IN*/ ULONG ComponentInformationLength);
282 typedef struct _QUERY_INTERFACE {
283 CONST GUID *InterfaceType;
284 USHORT Size;
285 USHORT Version;
286 PINTERFACE Interface;
287 PVOID InterfaceSpecificData;
288 } QUERY_INTERFACE, *PQUERY_INTERFACE;
290 typedef VP_STATUS DDKAPI
291 (*PVIDEO_HW_QUERY_INTERFACE)(
292 /*IN*/ PVOID HwDeviceExtension,
293 /*IN OUT*/ PQUERY_INTERFACE QueryInterface);
295 typedef VP_STATUS DDKAPI
296 (*PMINIPORT_GET_REGISTRY_ROUTINE)(
297 /*IN*/ PVOID HwDeviceExtension,
298 /*IN*/ PVOID Context,
299 /*IN OUT*/ PWSTR ValueName,
300 /*IN OUT*/ PVOID ValueData,
301 /*IN*/ ULONG ValueLength);
303 typedef BOOLEAN DDKAPI
304 (*PVIDEO_HW_RESET_HW)(
305 /*IN*/ PVOID HwDeviceExtension,
306 /*IN*/ ULONG Columns,
307 /*IN*/ ULONG Rows);
309 typedef VP_STATUS DDKAPI
310 (*PVIDEO_HW_POWER_SET)(
311 /*IN*/ PVOID HwDeviceExtension,
312 /*IN*/ ULONG HwId,
313 /*IN*/ PVIDEO_POWER_MANAGEMENT VideoPowerControl);
315 typedef struct _STATUS_BLOCK {
316 _ANONYMOUS_UNION union {
317 VP_STATUS Status;
318 PVOID Pointer;
319 } DUMMYUNIONNAME;
320 ULONG_PTR Information;
321 } STATUS_BLOCK, *PSTATUS_BLOCK;
323 typedef struct _VIDEO_REQUEST_PACKET {
324 ULONG IoControlCode;
325 PSTATUS_BLOCK StatusBlock;
326 PVOID InputBuffer;
327 ULONG InputBufferLength;
328 PVOID OutputBuffer;
329 ULONG OutputBufferLength;
330 } VIDEO_REQUEST_PACKET, *PVIDEO_REQUEST_PACKET;
332 typedef BOOLEAN DDKAPI
333 (*PVIDEO_HW_START_IO)(
334 /*IN*/ PVOID HwDeviceExtension,
335 /*IN*/ PVIDEO_REQUEST_PACKET RequestPacket);
337 typedef BOOLEAN DDKAPI
338 (*PMINIPORT_SYNCHRONIZE_ROUTINE)(
339 /*IN*/ PVOID Context);
341 typedef VOID DDKAPI
342 (*PVIDEO_HW_TIMER)(
343 /*IN*/ PVOID HwDeviceExtension);
345 typedef VOID DDKAPI
346 (*PMINIPORT_DPC_ROUTINE)(
347 /*IN*/ PVOID HwDeviceExtension,
348 /*IN*/ PVOID Context);
350 typedef VP_STATUS DDKAPI
351 (*PDRIVER_IO_PORT_UCHAR)(
352 /*IN*/ ULONG_PTR Context,
353 /*IN*/ ULONG Port,
354 /*IN*/ UCHAR AccessMode,
355 /*IN*/ PUCHAR Data);
357 typedef VP_STATUS DDKAPI
358 (*PDRIVER_IO_PORT_UCHAR_STRING)(
359 /*IN*/ ULONG_PTR Context,
360 /*IN*/ ULONG Port,
361 /*IN*/ UCHAR AccessMode,
362 /*IN*/ PUCHAR Data,
363 /*IN*/ ULONG DataLength);
365 typedef VP_STATUS DDKAPI
366 (*PDRIVER_IO_PORT_ULONG)(
367 /*IN*/ ULONG_PTR Context,
368 /*IN*/ ULONG Port,
369 /*IN*/ UCHAR AccessMode,
370 /*IN*/ PULONG Data);
372 typedef VP_STATUS DDKAPI
373 (*PDRIVER_IO_PORT_ULONG_STRING)(
374 /*IN*/ ULONG_PTR Context,
375 /*IN*/ ULONG Port,
376 /*IN*/ UCHAR AccessMode,
377 /*IN*/ PULONG Data,
378 /*IN*/ ULONG DataLength);
380 typedef VP_STATUS DDKAPI
381 (*PDRIVER_IO_PORT_USHORT)(
382 /*IN*/ ULONG_PTR Context,
383 /*IN*/ ULONG Port,
384 /*IN*/ UCHAR AccessMode,
385 /*IN*/ PUSHORT Data);
387 typedef VP_STATUS DDKAPI
388 (*PDRIVER_IO_PORT_USHORT_STRING)(
389 /*IN*/ ULONG_PTR Context,
390 /*IN*/ ULONG Port,
391 /*IN*/ UCHAR AccessMode,
392 /*IN*/ PUSHORT Data,
393 /*IN*/ ULONG DataLength);
397 typedef struct _INT10_BIOS_ARGUMENTS {
398 ULONG Eax;
399 ULONG Ebx;
400 ULONG Ecx;
401 ULONG Edx;
402 ULONG Esi;
403 ULONG Edi;
404 ULONG Ebp;
405 USHORT SegDs;
406 USHORT SegEs;
407 } INT10_BIOS_ARGUMENTS, *PINT10_BIOS_ARGUMENTS;
409 typedef struct _VIDEO_CHILD_STATE {
410 ULONG Id;
411 ULONG State;
412 } VIDEO_CHILD_STATE, *PVIDEO_CHILD_STATE;
414 typedef struct _VIDEO_CHILD_STATE_CONFIGURATION {
415 ULONG Count;
416 VIDEO_CHILD_STATE ChildStateArray[ANYSIZE_ARRAY];
417 } VIDEO_CHILD_STATE_CONFIGURATION, *PVIDEO_CHILD_STATE_CONFIGURATION;
419 typedef struct _VIDEO_HW_INITIALIZATION_DATA {
420 ULONG HwInitDataSize;
421 INTERFACE_TYPE AdapterInterfaceType;
422 PVIDEO_HW_FIND_ADAPTER HwFindAdapter;
423 PVIDEO_HW_INITIALIZE HwInitialize;
424 PVIDEO_HW_INTERRUPT HwInterrupt;
425 PVIDEO_HW_START_IO HwStartIO;
426 ULONG HwDeviceExtensionSize;
427 ULONG StartingDeviceNumber;
428 PVIDEO_HW_RESET_HW HwResetHw;
429 PVIDEO_HW_TIMER HwTimer;
430 PVIDEO_HW_START_DMA HwStartDma;
431 PVIDEO_HW_POWER_SET HwSetPowerState;
432 PVIDEO_HW_POWER_GET HwGetPowerState;
433 PVIDEO_HW_GET_CHILD_DESCRIPTOR HwGetVideoChildDescriptor;
434 PVIDEO_HW_QUERY_INTERFACE HwQueryInterface;
435 ULONG HwChildDeviceExtensionSize;
436 PVIDEO_ACCESS_RANGE HwLegacyResourceList;
437 ULONG HwLegacyResourceCount;
438 PVIDEO_HW_LEGACYRESOURCES HwGetLegacyResources;
439 BOOLEAN AllowEarlyEnumeration;
440 ULONG Reserved;
441 } VIDEO_HW_INITIALIZATION_DATA, *PVIDEO_HW_INITIALIZATION_DATA;
443 /* VIDEO_PORT_AGP_INTERFACE.Version contants */
444 #define VIDEO_PORT_AGP_INTERFACE_VERSION_1 1
446 typedef struct _VIDEO_PORT_AGP_INTERFACE {
447 SHORT Size;
448 SHORT Version;
449 PVOID Context;
450 PINTERFACE_REFERENCE InterfaceReference;
451 PINTERFACE_DEREFERENCE InterfaceDereference;
452 PAGP_RESERVE_PHYSICAL AgpReservePhysical;
453 PAGP_RELEASE_PHYSICAL AgpReleasePhysical;
454 PAGP_COMMIT_PHYSICAL AgpCommitPhysical;
455 PAGP_FREE_PHYSICAL AgpFreePhysical;
456 PAGP_RESERVE_VIRTUAL AgpReserveVirtual;
457 PAGP_RELEASE_VIRTUAL AgpReleaseVirtual;
458 PAGP_COMMIT_VIRTUAL AgpCommitVirtual;
459 PAGP_FREE_VIRTUAL AgpFreeVirtual;
460 ULONGLONG AgpAllocationLimit;
461 } VIDEO_PORT_AGP_INTERFACE, *PVIDEO_PORT_AGP_INTERFACE;
463 /* VIDEO_PORT_AGP_INTERFACE_2.Version constants */
464 #define VIDEO_PORT_AGP_INTERFACE_VERSION_2 2
466 typedef struct _VIDEO_PORT_AGP_INTERFACE_2 {
467 /*IN*/ USHORT Size;
468 /*IN*/ USHORT Version;
469 /*OUT*/ PVOID Context;
470 /*OUT*/ PINTERFACE_REFERENCE InterfaceReference;
471 /*OUT*/ PINTERFACE_DEREFERENCE InterfaceDereference;
472 /*OUT*/ PAGP_RESERVE_PHYSICAL AgpReservePhysical;
473 /*OUT*/ PAGP_RELEASE_PHYSICAL AgpReleasePhysical;
474 /*OUT*/ PAGP_COMMIT_PHYSICAL AgpCommitPhysical;
475 /*OUT*/ PAGP_FREE_PHYSICAL AgpFreePhysical;
476 /*OUT*/ PAGP_RESERVE_VIRTUAL AgpReserveVirtual;
477 /*OUT*/ PAGP_RELEASE_VIRTUAL AgpReleaseVirtual;
478 /*OUT*/ PAGP_COMMIT_VIRTUAL AgpCommitVirtual;
479 /*OUT*/ PAGP_FREE_VIRTUAL AgpFreeVirtual;
480 /*OUT*/ ULONGLONG AgpAllocationLimit;
481 /*OUT*/ PAGP_SET_RATE AgpSetRate;
482 } VIDEO_PORT_AGP_INTERFACE_2, *PVIDEO_PORT_AGP_INTERFACE_2;
484 #define VIDEO_PORT_I2C_INTERFACE_VERSION_1 1
486 typedef VOID DDKAPI
487 (*PVIDEO_WRITE_CLOCK_LINE)(
488 PVOID HwDeviceExtension,
489 UCHAR Data);
491 typedef VOID DDKAPI
492 (*PVIDEO_WRITE_DATA_LINE)(
493 PVOID HwDeviceExtension,
494 UCHAR Data);
496 typedef BOOLEAN DDKAPI
497 (*PVIDEO_READ_CLOCK_LINE)(
498 PVOID HwDeviceExtension);
500 typedef BOOLEAN DDKAPI
501 (*PVIDEO_READ_DATA_LINE)(
502 PVOID HwDeviceExtension);
504 typedef struct _I2C_CALLBACKS
506 /*IN*/ PVIDEO_WRITE_CLOCK_LINE WriteClockLine;
507 /*IN*/ PVIDEO_WRITE_DATA_LINE WriteDataLine;
508 /*IN*/ PVIDEO_READ_CLOCK_LINE ReadClockLine;
509 /*IN*/ PVIDEO_READ_DATA_LINE ReadDataLine;
510 } I2C_CALLBACKS, *PI2C_CALLBACKS;
512 typedef BOOLEAN DDKAPI
513 (*PI2C_START)(
514 /*IN*/ PVOID HwDeviceExtension,
515 /*IN*/ PI2C_CALLBACKS I2CCallbacks);
517 typedef BOOLEAN DDKAPI
518 (*PI2C_STOP)(
519 /*IN*/ PVOID HwDeviceExtension,
520 /*IN*/ PI2C_CALLBACKS I2CCallbacks);
522 typedef BOOLEAN DDKAPI
523 (*PI2C_WRITE)(
524 /*IN*/ PVOID HwDeviceExtension,
525 /*IN*/ PI2C_CALLBACKS I2CCallbacks,
526 /*IN*/ PUCHAR Buffer,
527 /*IN*/ ULONG Length);
529 typedef BOOLEAN DDKAPI
530 (*PI2C_READ)(
531 /*IN*/ PVOID HwDeviceExtension,
532 /*IN*/ PI2C_CALLBACKS I2CCallbacks,
533 /*OUT*/ PUCHAR Buffer,
534 /*IN*/ ULONG Length);
536 typedef struct _VIDEO_PORT_I2C_INTERFACE {
537 USHORT Size;
538 USHORT Version;
539 PVOID Context;
540 PINTERFACE_REFERENCE InterfaceReference;
541 PINTERFACE_DEREFERENCE InterfaceDereference;
542 PI2C_START I2CStart;
543 PI2C_STOP I2CStop;
544 PI2C_WRITE I2CWrite;
545 PI2C_READ I2CRead;
546 } VIDEO_PORT_I2C_INTERFACE, *PVIDEO_PORT_I2C_INTERFACE;
548 /* VIDEO_PORT_INT10_INTERFACE.Version constants */
549 #define VIDEO_PORT_INT10_INTERFACE_VERSION_1 1
551 typedef VP_STATUS DDKAPI
552 (*PINT10_ALLOCATE_BUFFER)(
553 /*IN*/ PVOID Context,
554 /*OUT*/ PUSHORT Seg,
555 /*OUT*/ PUSHORT Off,
556 /*IN OUT*/ PULONG Length);
558 typedef VP_STATUS DDKAPI
559 (*PINT10_CALL_BIOS)(
560 /*IN*/ PVOID Context,
561 /*IN OUT*/ PINT10_BIOS_ARGUMENTS BiosArguments);
563 typedef VP_STATUS DDKAPI
564 (*PINT10_FREE_BUFFER)(
565 /*IN*/ PVOID Context,
566 /*IN*/ USHORT Seg,
567 /*IN*/ USHORT Off);
569 typedef VP_STATUS DDKAPI
570 (*PINT10_READ_MEMORY)(
571 /*IN*/ PVOID Context,
572 /*IN*/ USHORT Seg,
573 /*IN*/ USHORT Off,
574 /*OUT*/ PVOID Buffer,
575 /*IN*/ ULONG Length);
577 typedef VP_STATUS DDKAPI
578 (*PINT10_WRITE_MEMORY)(
579 /*IN*/ PVOID Context,
580 /*IN*/ USHORT Seg,
581 /*IN*/ USHORT Off,
582 /*IN*/ PVOID Buffer,
583 /*IN*/ ULONG Length);
585 typedef struct _VIDEO_PORT_INT10_INTERFACE {
586 /*IN*/ USHORT Size;
587 /*IN*/ USHORT Version;
588 /*OUT*/ PVOID Context;
589 /*OUT*/ PINTERFACE_REFERENCE InterfaceReference;
590 /*OUT*/ PINTERFACE_DEREFERENCE InterfaceDereference;
591 /*OUT*/ PINT10_ALLOCATE_BUFFER Int10AllocateBuffer;
592 /*OUT*/ PINT10_FREE_BUFFER Int10FreeBuffer;
593 /*OUT*/ PINT10_READ_MEMORY Int10ReadMemory;
594 /*OUT*/ PINT10_WRITE_MEMORY Int10WriteMemory;
595 /*OUT*/ PINT10_CALL_BIOS Int10CallBios;
596 } VIDEO_PORT_INT10_INTERFACE, *PVIDEO_PORT_INT10_INTERFACE;
598 /* Flags for VideoPortGetDeviceBase and VideoPortMapMemory */
599 #define VIDEO_MEMORY_SPACE_MEMORY 0x00
600 #define VIDEO_MEMORY_SPACE_IO 0x01
601 #define VIDEO_MEMORY_SPACE_USER_MODE 0x02
602 #define VIDEO_MEMORY_SPACE_DENSE 0x04
603 #define VIDEO_MEMORY_SPACE_P6CACHE 0x08
605 typedef struct _VIDEO_X86_BIOS_ARGUMENTS {
606 ULONG Eax;
607 ULONG Ebx;
608 ULONG Ecx;
609 ULONG Edx;
610 ULONG Esi;
611 ULONG Edi;
612 ULONG Ebp;
613 } VIDEO_X86_BIOS_ARGUMENTS, *PVIDEO_X86_BIOS_ARGUMENTS;
615 typedef struct _VP_DEVICE_DESCRIPTION {
616 BOOLEAN ScatterGather;
617 BOOLEAN Dma32BitAddresses;
618 BOOLEAN Dma64BitAddresses;
619 ULONG MaximumLength;
620 } VP_DEVICE_DESCRIPTION, *PVP_DEVICE_DESCRIPTION;
622 typedef struct _VPOSVERSIONINFO {
623 /*IN*/ ULONG Size;
624 /*OUT*/ ULONG MajorVersion;
625 /*OUT*/ ULONG MinorVersion;
626 /*OUT*/ ULONG BuildNumber;
627 /*OUT*/ USHORT ServicePackMajor;
628 /*OUT*/ USHORT ServicePackMinor;
629 } VPOSVERSIONINFO, *PVPOSVERSIONINFO;
633 /* Video port functions for miniports */
635 VPAPI
636 VOID
637 DDKAPI
638 VideoDebugPrint(
639 /*IN*/ ULONG DebugPrintLevel,
640 /*IN*/ PCHAR DebugMessage,
641 /*IN*/ ...);
643 VPAPI
644 VOID
645 DDKAPI
646 VideoPortAcquireDeviceLock(
647 /*IN*/ PVOID HwDeviceExtension);
649 VPAPI
650 VOID
651 DDKAPI
652 VideoPortAcquireSpinLock(
653 /*IN*/ PVOID HwDeviceExtension,
654 /*IN*/ PSPIN_LOCK SpinLock,
655 /*OUT*/ PUCHAR OldIrql);
657 VPAPI
658 VOID
659 DDKAPI
660 VideoPortAcquireSpinLockAtDpcLevel(
661 /*IN*/ PVOID HwDeviceExtension,
662 /*IN*/ PSPIN_LOCK SpinLock);
664 VPAPI
665 VP_STATUS
666 DDKAPI
667 VideoPortAllocateBuffer(
668 /*IN*/ PVOID HwDeviceExtension,
669 /*IN*/ ULONG Size,
670 /*OUT*/ PVOID *Buffer);
672 VPAPI
673 PVOID
674 DDKAPI
675 VideoPortAllocateCommonBuffer(
676 /*IN*/ PVOID HwDeviceExtension,
677 /*IN*/ PVP_DMA_ADAPTER VpDmaAdapter,
678 /*IN*/ ULONG DesiredLength,
679 /*OUT*/ PPHYSICAL_ADDRESS LogicalAddress,
680 /*IN*/ BOOLEAN CacheEnabled,
681 PVOID Reserved);
683 VPAPI
684 PVOID
685 DDKAPI
686 VideoPortAllocateContiguousMemory(
687 /*IN*/ PVOID HwDeviceExtension,
688 /*IN*/ ULONG NumberOfBytes,
689 /*IN*/ PHYSICAL_ADDRESS HighestAcceptableAddress);
691 /* VideoPortAllocatePool.PoolType constants */
692 typedef enum _VP_POOL_TYPE {
693 VpNonPagedPool = 0,
694 VpPagedPool,
695 VpNonPagedPoolCacheAligned = 4,
696 VpPagedPoolCacheAligned
697 } VP_POOL_TYPE, *PVP_POOL_TYPE;
699 VPAPI
700 PVOID
701 DDKAPI
702 VideoPortAllocatePool(
703 /*IN*/ PVOID HwDeviceExtension,
704 /*IN*/ VP_POOL_TYPE PoolType,
705 /*IN*/ SIZE_T NumberOfBytes,
706 /*IN*/ ULONG Tag);
708 VPAPI
709 PDMA
710 DDKAPI
711 VideoPortAssociateEventsWithDmaHandle(
712 /*IN*/ PVOID HwDeviceExtension,
713 /*IN OUT*/ PVIDEO_REQUEST_PACKET pVrp,
714 /*IN*/ PVOID MappedUserEvent,
715 /*IN*/ PVOID DisplayDriverEvent);
717 /* VideoPortCheckForDeviceExistence.Flags constants */
718 #define CDE_USE_SUBSYSTEM_IDS 0x00000001
719 #define CDE_USE_REVISION 0x00000002
721 VPAPI
722 BOOLEAN
723 DDKAPI
724 VideoPortCheckForDeviceExistence(
725 /*IN*/ PVOID HwDeviceExtension,
726 /*IN*/ USHORT VendorId,
727 /*IN*/ USHORT DeviceId,
728 /*IN*/ UCHAR RevisionId,
729 /*IN*/ USHORT SubVendorId,
730 /*IN*/ USHORT SubSystemId,
731 /*IN*/ ULONG Flags);
733 VPAPI
734 VOID
735 DDKAPI
736 VideoPortClearEvent(
737 /*IN*/ PVOID HwDeviceExtension,
738 /*IN*/ PEVENT pEvent);
740 VPAPI
741 ULONG
742 DDKAPI
743 VideoPortCompareMemory(
744 /*IN*/ PVOID Source1,
745 /*IN*/ PVOID Source2,
746 /*IN*/ ULONG Length);
748 VPAPI
749 VP_STATUS
750 DDKAPI
751 VideoPortCompleteDma(
752 /*IN*/ PVOID HwDeviceExtension,
753 /*IN*/ PVP_DMA_ADAPTER VpDmaAdapter,
754 /*IN*/ PVP_SCATTER_GATHER_LIST VpScatterGather,
755 /*IN*/ BOOLEAN WriteToDevice);
757 VPAPI
758 VP_STATUS
759 DDKAPI
760 VideoPortCreateEvent(
761 /*IN*/ PVOID HwDeviceExtension,
762 /*IN*/ ULONG EventFlag,
763 /*IN*/ PVOID Unused,
764 /*OUT*/ PEVENT *ppEvent);
766 VPAPI
767 VP_STATUS
768 DDKAPI
769 VideoPortCreateSecondaryDisplay(
770 /*IN*/ PVOID HwDeviceExtension,
771 /*IN OUT*/ PVOID *SecondaryDeviceExtension,
772 /*IN*/ ULONG ulFlag);
774 VPAPI
775 VP_STATUS
776 DDKAPI
777 VideoPortCreateSpinLock(
778 /*IN*/ PVOID HwDeviceExtension,
779 /*OUT*/ PSPIN_LOCK *SpinLock);
781 typedef struct _DDC_CONTROL {
782 /*IN*/ ULONG Size;
783 /*IN*/ I2C_CALLBACKS I2CCallbacks;
784 /*IN*/ UCHAR EdidSegment;
785 } DDC_CONTROL, *PDDC_CONTROL;
787 VPAPI
788 BOOLEAN
789 DDKAPI
790 VideoPortDDCMonitorHelper(
791 /*IN*/ PVOID HwDeviceExtension,
792 /*IN*/ PVOID DDCControl,
793 /*IN OUT*/ PUCHAR EdidBuffer,
794 /*IN*/ ULONG EdidBufferSize);
796 VPAPI
797 VOID
798 DDKCDECLAPI
799 VideoPortDebugPrint(
800 /*IN*/ VIDEO_DEBUG_LEVEL DebugPrintLevel,
801 /*IN*/ PCHAR DebugMessage,
802 /*IN*/ ...);
804 VPAPI
805 VP_STATUS
806 DDKAPI
807 VideoPortDeleteEvent(
808 /*IN*/ PVOID HwDeviceExtension,
809 /*IN*/ PEVENT pEvent);
811 VPAPI
812 VP_STATUS
813 DDKAPI
814 VideoPortDeleteSpinLock(
815 /*IN*/ PVOID HwDeviceExtension,
816 /*IN*/ PSPIN_LOCK SpinLock);
818 VPAPI
819 VP_STATUS
820 DDKAPI
821 VideoPortDisableInterrupt(
822 /*IN*/ PVOID HwDeviceExtension);
824 VPAPI
825 PDMA
826 DDKAPI
827 VideoPortDoDma(
828 /*IN*/ PVOID HwDeviceExtension,
829 /*IN*/ PDMA pDma,
830 /*IN*/ DMA_FLAGS DmaFlags);
832 VPAPI
833 VP_STATUS
834 DDKAPI
835 VideoPortEnableInterrupt(
836 /*IN*/ PVOID HwDeviceExtension);
838 VPAPI
839 VP_STATUS
840 DDKAPI
841 VideoPortEnumerateChildren(
842 /*IN*/ PVOID HwDeviceExtension,
843 /*IN*/ PVOID Reserved);
845 VPAPI
846 VOID
847 DDKAPI
848 VideoPortFreeCommonBuffer(
849 /*IN*/ PVOID HwDeviceExtension,
850 /*IN*/ ULONG Length,
851 /*IN*/ PVOID VirtualAddress,
852 /*IN*/ PHYSICAL_ADDRESS LogicalAddress,
853 /*IN*/ BOOLEAN CacheEnabled);
855 VPAPI
856 VOID
857 DDKAPI
858 VideoPortFreeDeviceBase(
859 /*IN*/ PVOID HwDeviceExtension,
860 /*IN*/ PVOID MappedAddress);
862 VPAPI
863 VOID
864 DDKAPI
865 VideoPortFreePool(
866 /*IN*/ PVOID HwDeviceExtension,
867 /*IN*/ PVOID Ptr);
869 VPAPI
870 VP_STATUS
871 DDKAPI
872 VideoPortGetAccessRanges(
873 /*IN*/ PVOID HwDeviceExtension,
874 /*IN*/ ULONG NumRequestedResources,
875 /*IN*/ PIO_RESOURCE_DESCRIPTOR RequestedResources /*OPTIONAL*/,
876 /*IN*/ ULONG NumAccessRanges,
877 /*OUT*/ PVIDEO_ACCESS_RANGE AccessRanges,
878 /*IN*/ PVOID VendorId,
879 /*IN*/ PVOID DeviceId,
880 /*OUT*/ PULONG Slot);
882 VPAPI
883 PVOID
884 DDKAPI
885 VideoPortGetAssociatedDeviceExtension(
886 /*IN*/ PVOID DeviceObject);
888 VPAPI
889 ULONG
890 DDKAPI
891 VideoPortGetAssociatedDeviceID(
892 /*IN*/ PVOID DeviceObject);
894 VPAPI
895 ULONG
896 DDKAPI
897 VideoPortGetBusData(
898 /*IN*/ PVOID HwDeviceExtension,
899 /*IN*/ BUS_DATA_TYPE BusDataType,
900 /*IN*/ ULONG SlotNumber,
901 /*IN OUT*/ PVOID Buffer,
902 /*IN*/ ULONG Offset,
903 /*IN*/ ULONG Length);
905 VPAPI
906 ULONG
907 DDKAPI
908 VideoPortGetBytesUsed(
909 /*IN*/ PVOID HwDeviceExtension,
910 /*IN*/ PDMA pDma);
912 VPAPI
913 PVOID
914 DDKAPI
915 VideoPortGetCommonBuffer(
916 /*IN*/ PVOID HwDeviceExtension,
917 /*IN*/ ULONG DesiredLength,
918 /*IN*/ ULONG Alignment,
919 /*OUT*/ PPHYSICAL_ADDRESS LogicalAddress,
920 /*OUT*/ PULONG pActualLength,
921 /*IN*/ BOOLEAN CacheEnabled);
923 VPAPI
924 UCHAR
925 DDKAPI
926 VideoPortGetCurrentIrql(
927 VOID);
929 VPAPI
930 PVOID
931 DDKAPI
932 VideoPortGetDeviceBase(
933 /*IN*/ PVOID HwDeviceExtension,
934 /*IN*/ PHYSICAL_ADDRESS IoAddress,
935 /*IN*/ ULONG NumberOfUchars,
936 /*IN*/ UCHAR InIoSpace);
938 VPAPI
939 VP_STATUS
940 DDKAPI
941 VideoPortGetDeviceData(
942 /*IN*/ PVOID HwDeviceExtension,
943 /*IN*/ VIDEO_DEVICE_DATA_TYPE DeviceDataType,
944 /*IN*/ PMINIPORT_QUERY_DEVICE_ROUTINE CallbackRoutine,
945 /*IN*/ PVOID Context);
947 VPAPI
948 PVP_DMA_ADAPTER
949 DDKAPI
950 VideoPortGetDmaAdapter(
951 /*IN*/ PVOID HwDeviceExtension,
952 /*IN*/ PVP_DEVICE_DESCRIPTION VpDeviceDescription);
954 VPAPI
955 PVOID
956 DDKAPI
957 VideoPortGetDmaContext(
958 /*IN*/ PVOID HwDeviceExtension,
959 /*IN*/ PDMA pDma);
961 VPAPI
962 PVOID
963 DDKAPI
964 VideoPortGetMdl(
965 /*IN*/ PVOID HwDeviceExtension,
966 /*IN*/ PDMA pDma);
968 VPAPI
969 VP_STATUS
970 DDKAPI
971 VideoPortGetRegistryParameters(
972 /*IN*/ PVOID HwDeviceExtension,
973 /*IN*/ PWSTR ParameterName,
974 /*IN*/ UCHAR IsParameterFileName,
975 /*IN*/ PMINIPORT_GET_REGISTRY_ROUTINE CallbackRoutine,
976 /*IN*/ PVOID Context);
978 VPAPI
979 PVOID
980 DDKAPI
981 VideoPortGetRomImage(
982 /*IN*/ PVOID HwDeviceExtension,
983 /*IN*/ PVOID Unused1,
984 /*IN*/ ULONG Unused2,
985 /*IN*/ ULONG Length);
987 VPAPI
988 VP_STATUS
989 DDKAPI
990 VideoPortGetVersion(
991 /*IN*/ PVOID HwDeviceExtension,
992 /*IN OUT*/ PVPOSVERSIONINFO pVpOsVersionInfo);
994 VPAPI
995 VP_STATUS
996 DDKAPI
997 VideoPortGetVgaStatus(
998 /*IN*/ PVOID HwDeviceExtension,
999 /*OUT*/ PULONG VgaStatus);
1001 VPAPI
1002 ULONG
1003 DDKAPI
1004 VideoPortInitialize(
1005 /*IN*/ PVOID Argument1,
1006 /*IN*/ PVOID Argument2,
1007 /*IN*/ PVIDEO_HW_INITIALIZATION_DATA HwInitializationData,
1008 /*IN*/ PVOID HwContext);
1010 VPAPI
1011 VP_STATUS
1012 DDKAPI
1013 VideoPortInt10(
1014 /*IN*/ PVOID HwDeviceExtension,
1015 /*IN*/ PVIDEO_X86_BIOS_ARGUMENTS BiosArguments);
1017 VPAPI
1018 LONG
1019 DDKFASTAPI
1020 VideoPortInterlockedDecrement(
1021 /*IN*/ PLONG Addend);
1023 VPAPI
1024 LONG
1025 DDKFASTAPI
1026 VideoPortInterlockedExchange(
1027 /*IN OUT*/ PLONG Target,
1028 /*IN*/ LONG Value);
1030 VPAPI
1031 LONG
1032 DDKFASTAPI
1033 VideoPortInterlockedIncrement(
1034 /*IN*/ PLONG Addend);
1036 typedef enum _VP_LOCK_OPERATION {
1037 VpReadAccess = 0,
1038 VpWriteAccess,
1039 VpModifyAccess
1040 } VP_LOCK_OPERATION;
1042 VPAPI
1043 PVOID
1044 DDKAPI
1045 VideoPortLockBuffer(
1046 /*IN*/ PVOID HwDeviceExtension,
1047 /*IN*/ PVOID BaseAddress,
1048 /*IN*/ ULONG Length,
1049 /*IN*/ VP_LOCK_OPERATION Operation);
1051 VPAPI
1052 BOOLEAN
1053 DDKAPI
1054 VideoPortLockPages(
1055 /*IN*/ PVOID HwDeviceExtension,
1056 /*IN OUT*/ PVIDEO_REQUEST_PACKET pVrp,
1057 /*IN OUT*/ PEVENT pUEvent,
1058 /*IN*/ PEVENT pDisplayEvent,
1059 /*IN*/ DMA_FLAGS DmaFlags);
1061 VPAPI
1062 VOID
1063 DDKAPI
1064 VideoPortLogError(
1065 /*IN*/ PVOID HwDeviceExtension,
1066 /*IN*/ PVIDEO_REQUEST_PACKET Vrp /*OPTIONAL*/,
1067 /*IN*/ VP_STATUS ErrorCode,
1068 /*IN*/ ULONG UniqueId);
1070 VPAPI
1071 VP_STATUS
1072 DDKAPI
1073 VideoPortMapBankedMemory(
1074 /*IN*/ PVOID HwDeviceExtension,
1075 /*IN*/ PHYSICAL_ADDRESS PhysicalAddress,
1076 /*IN OUT*/ PULONG Length,
1077 PULONG InIoSpace,
1078 PVOID *VirtualAddress,
1079 ULONG BankLength,
1080 UCHAR ReadWriteBank,
1081 PBANKED_SECTION_ROUTINE BankRoutine,
1082 PVOID Context);
1084 VPAPI
1085 PDMA
1086 DDKAPI
1087 VideoPortMapDmaMemory(
1088 /*IN*/ PVOID HwDeviceExtension,
1089 /*IN*/ PVIDEO_REQUEST_PACKET pVrp,
1090 /*IN*/ PHYSICAL_ADDRESS BoardAddress,
1091 /*IN*/ PULONG Length,
1092 /*IN*/ PULONG InIoSpace,
1093 /*IN*/ PVOID MappedUserEvent,
1094 /*IN*/ PVOID DisplayDriverEvent,
1095 /*IN OUT*/ PVOID *VirtualAddress);
1097 VPAPI
1098 VP_STATUS
1099 DDKAPI
1100 VideoPortMapMemory(
1101 /*IN*/ PVOID HwDeviceExtension,
1102 /*IN*/ PHYSICAL_ADDRESS PhysicalAddress,
1103 /*IN OUT*/ PULONG Length,
1104 /*IN*/ PULONG InIoSpace,
1105 /*IN OUT*/ PVOID *VirtualAddress);
1107 VPAPI
1108 VOID
1109 DDKAPI
1110 VideoPortMoveMemory(
1111 /*IN*/ PVOID Destination,
1112 /*IN*/ PVOID Source,
1113 /*IN*/ ULONG Length);
1115 VPAPI
1116 VOID
1117 DDKAPI
1118 VideoPortPutDmaAdapter(
1119 /*IN*/ PVOID HwDeviceExtension,
1120 /*IN*/ PVP_DMA_ADAPTER VpDmaAdapter);
1122 VPAPI
1123 LONGLONG
1124 DDKAPI
1125 VideoPortQueryPerformanceCounter(
1126 /*IN*/ PVOID HwDeviceExtension,
1127 /*OUT*/ PLONGLONG PerformanceFrequency /*OPTIONAL*/);
1129 /* VideoPortQueryServices.ServicesType constants */
1130 typedef enum _VIDEO_PORT_SERVICES {
1131 VideoPortServicesAGP = 1,
1132 VideoPortServicesI2C,
1133 VideoPortServicesHeadless,
1134 VideoPortServicesInt10
1135 } VIDEO_PORT_SERVICES;
1137 VPAPI
1138 VP_STATUS
1139 DDKAPI
1140 VideoPortQueryServices(
1141 /*IN*/ PVOID HwDeviceExtension,
1142 /*IN*/ VIDEO_PORT_SERVICES ServicesType,
1143 /*IN OUT*/ PINTERFACE Interface);
1145 VPAPI
1146 VOID
1147 DDKAPI
1148 VideoPortQuerySystemTime(
1149 /*OUT*/ PLARGE_INTEGER CurrentTime);
1151 VPAPI
1152 BOOLEAN
1153 DDKAPI
1154 VideoPortQueueDpc(
1155 /*IN*/ PVOID HwDeviceExtension,
1156 /*IN*/ PMINIPORT_DPC_ROUTINE CallbackRoutine,
1157 /*IN*/ PVOID Context);
1159 VPAPI
1160 VOID
1161 DDKAPI
1162 VideoPortReadPortBufferUchar(
1163 /*IN*/ PUCHAR Port,
1164 /*OUT*/ PUCHAR Buffer,
1165 /*IN*/ ULONG Count);
1167 VPAPI
1168 VOID
1169 DDKAPI
1170 VideoPortReadPortBufferUlong(
1171 /*IN*/ PULONG Port,
1172 /*OUT*/ PULONG Buffer,
1173 /*IN*/ ULONG Count);
1175 VPAPI
1176 VOID
1177 DDKAPI
1178 VideoPortReadPortBufferUshort(
1179 /*IN*/ PUSHORT Port,
1180 /*OUT*/ PUSHORT Buffer,
1181 /*IN*/ ULONG Count);
1183 VPAPI
1184 UCHAR
1185 DDKAPI
1186 VideoPortReadPortUchar(
1187 /*IN*/ PUCHAR Port);
1189 VPAPI
1190 ULONG
1191 DDKAPI
1192 VideoPortReadPortUlong(
1193 /*IN*/ PULONG Port);
1195 VPAPI
1196 USHORT
1197 DDKAPI
1198 VideoPortReadPortUshort(
1199 /*IN*/ PUSHORT Port);
1201 VPAPI
1202 VOID
1203 DDKAPI
1204 VideoPortReadRegisterBufferUchar(
1205 /*IN*/ PUCHAR Register,
1206 /*OUT*/ PUCHAR Buffer,
1207 /*IN*/ ULONG Count);
1209 VPAPI
1210 VOID
1211 DDKAPI
1212 VideoPortReadRegisterBufferUlong(
1213 /*IN*/ PULONG Register,
1214 /*OUT*/ PULONG Buffer,
1215 /*IN*/ ULONG Count);
1217 VPAPI
1218 VOID
1219 DDKAPI
1220 VideoPortReadRegisterBufferUshort(
1221 /*IN*/ PUSHORT Register,
1222 /*OUT*/ PUSHORT Buffer,
1223 /*IN*/ ULONG Count);
1225 VPAPI
1226 UCHAR
1227 DDKAPI
1228 VideoPortReadRegisterUchar(
1229 /*IN*/ PUCHAR Register);
1231 VPAPI
1232 ULONG
1233 DDKAPI
1234 VideoPortReadRegisterUlong(
1235 /*IN*/ PULONG Register);
1237 VPAPI
1238 USHORT
1239 DDKAPI
1240 VideoPortReadRegisterUshort(
1241 /*IN*/ PUSHORT Register);
1243 VPAPI
1244 LONG
1245 DDKAPI
1246 VideoPortReadStateEvent(
1247 /*IN*/ PVOID HwDeviceExtension,
1248 /*IN*/ PEVENT pEvent);
1250 VPAPI
1251 VOID
1252 DDKAPI
1253 VideoPortReleaseBuffer(
1254 /*IN*/ PVOID HwDeviceExtension,
1255 /*IN*/ PVOID Buffer);
1257 VPAPI
1258 VOID
1259 DDKAPI
1260 VideoPortReleaseCommonBuffer(
1261 /*IN*/ PVOID HwDeviceExtension,
1262 /*IN*/ PVP_DMA_ADAPTER VpDmaAdapter,
1263 /*IN*/ ULONG Length,
1264 /*IN*/ PHYSICAL_ADDRESS LogicalAddress,
1265 /*IN*/ PVOID VirtualAddress,
1266 /*IN*/ BOOLEAN CacheEnabled);
1268 VPAPI
1269 VOID
1270 DDKAPI
1271 VideoPortReleaseDeviceLock(
1272 /*IN*/ PVOID HwDeviceExtension);
1274 VPAPI
1275 VOID
1276 DDKAPI
1277 VideoPortReleaseSpinLock(
1278 /*IN*/ PVOID HwDeviceExtension,
1279 /*IN*/ PSPIN_LOCK SpinLock,
1280 /*IN*/ UCHAR NewIrql);
1282 VPAPI
1283 VOID
1284 DDKAPI
1285 VideoPortReleaseSpinLockFromDpcLevel(
1286 /*IN*/ PVOID HwDeviceExtension,
1287 /*IN*/ PSPIN_LOCK SpinLock);
1289 VPAPI
1290 BOOLEAN
1291 DDKAPI
1292 VideoPortScanRom(
1293 PVOID HwDeviceExtension,
1294 PUCHAR RomBase,
1295 ULONG RomLength,
1296 PUCHAR String);
1298 VPAPI
1299 ULONG
1300 DDKAPI
1301 VideoPortSetBusData(
1302 /*IN*/ PVOID HwDeviceExtension,
1303 /*IN*/ BUS_DATA_TYPE BusDataType,
1304 /*IN*/ ULONG SlotNumber,
1305 /*IN*/ PVOID Buffer,
1306 /*IN*/ ULONG Offset,
1307 /*IN*/ ULONG Length);
1309 VPAPI
1310 VOID
1311 DDKAPI
1312 VideoPortSetBytesUsed(
1313 /*IN*/ PVOID HwDeviceExtension,
1314 /*IN OUT*/ PDMA pDma,
1315 /*IN*/ ULONG BytesUsed);
1317 VPAPI
1318 VOID
1319 DDKAPI
1320 VideoPortSetDmaContext(
1321 /*IN*/ PVOID HwDeviceExtension,
1322 /*OUT*/ PDMA pDma,
1323 /*IN*/ PVOID InstanceContext);
1325 VPAPI
1326 LONG
1327 DDKAPI
1328 VideoPortSetEvent(
1329 /*IN*/ PVOID HwDeviceExtension,
1330 /*IN*/ PEVENT pEvent);
1332 VPAPI
1333 VP_STATUS
1334 DDKAPI
1335 VideoPortSetRegistryParameters(
1336 /*IN*/ PVOID HwDeviceExtension,
1337 /*IN*/ PWSTR ValueName,
1338 /*IN*/ PVOID ValueData,
1339 /*IN*/ ULONG ValueLength);
1341 VPAPI
1342 VP_STATUS
1343 DDKAPI
1344 VideoPortSetTrappedEmulatorPorts(
1345 /*IN*/ PVOID HwDeviceExtension,
1346 /*IN*/ ULONG NumAccessRanges,
1347 /*IN*/ PVIDEO_ACCESS_RANGE AccessRange);
1349 VPAPI
1350 BOOLEAN
1351 DDKAPI
1352 VideoPortSignalDmaComplete(
1353 /*IN*/ PVOID HwDeviceExtension,
1354 /*IN*/ PVOID pDmaHandle);
1356 VPAPI
1357 VOID
1358 DDKAPI
1359 VideoPortStallExecution(
1360 /*IN*/ ULONG Microseconds);
1362 VPAPI
1363 VP_STATUS
1364 DDKAPI
1365 VideoPortStartDma(
1366 /*IN*/ PVOID HwDeviceExtension,
1367 /*IN*/ PVP_DMA_ADAPTER VpDmaAdapter,
1368 /*IN*/ PVOID Mdl,
1369 /*IN*/ ULONG Offset,
1370 /*IN OUT*/ PULONG pLength,
1371 /*IN*/ PEXECUTE_DMA ExecuteDmaRoutine,
1372 /*IN*/ PVOID Context,
1373 /*IN*/ BOOLEAN WriteToDevice);
1375 VPAPI
1376 VOID
1377 DDKAPI
1378 VideoPortStartTimer(
1379 /*IN*/ PVOID HwDeviceExtension);
1381 VPAPI
1382 VOID
1383 DDKAPI
1384 VideoPortStopTimer(
1385 /*IN*/ PVOID HwDeviceExtension);
1387 /* VideoPortSynchronizeExecution.Priority constants */
1388 typedef enum VIDEO_SYNCHRONIZE_PRIORITY {
1389 VpLowPriority = 0,
1390 VpMediumPriority,
1391 VpHighPriority
1392 } VIDEO_SYNCHRONIZE_PRIORITY, *PVIDEO_SYNCHRONIZE_PRIORITY;
1394 VPAPI
1395 BOOLEAN
1396 DDKAPI
1397 VideoPortSynchronizeExecution(
1398 /*IN*/ PVOID HwDeviceExtension,
1399 /*IN*/ VIDEO_SYNCHRONIZE_PRIORITY Priority,
1400 /*IN*/ PMINIPORT_SYNCHRONIZE_ROUTINE SynchronizeRoutine,
1401 /*IN*/ PVOID Context);
1403 VPAPI
1404 VOID
1405 DDKAPI
1406 VideoPortUnLockBuffer(
1407 /*IN*/ PVOID HwDeviceExtension,
1408 /*IN*/ PVOID Mdl);
1410 VPAPI
1411 BOOLEAN
1412 DDKAPI
1413 VideoPortUnlockPages(
1414 /*IN*/ PVOID hwDeviceExtension,
1415 /*IN OUT*/ PDMA pDma);
1417 VPAPI
1418 BOOLEAN
1419 DDKAPI
1420 VideoPortUnmapDmaMemory(
1421 /*IN*/ PVOID HwDeviceExtension,
1422 /*IN*/ PVOID VirtualAddress,
1423 /*IN*/ HANDLE ProcessHandle,
1424 /*IN*/ PDMA BoardMemoryHandle);
1426 VPAPI
1427 VP_STATUS
1428 DDKAPI
1429 VideoPortUnmapMemory(
1430 /*IN*/ PVOID HwDeviceExtension,
1431 /*IN OUT*/ PVOID VirtualAddress,
1432 /*IN*/ HANDLE ProcessHandle);
1434 VPAPI
1435 VP_STATUS
1436 DDKAPI
1437 VideoPortVerifyAccessRanges(
1438 /*IN*/ PVOID HwDeviceExtension,
1439 /*IN*/ ULONG NumAccessRanges,
1440 /*IN*/ PVIDEO_ACCESS_RANGE AccessRanges);
1442 VPAPI
1443 VP_STATUS
1444 DDKAPI
1445 VideoPortWaitForSingleObject(
1446 /*IN*/ PVOID HwDeviceExtension,
1447 /*IN*/ PVOID Object,
1448 /*IN*/ PLARGE_INTEGER Timeout /*OPTIONAL*/);
1450 VPAPI
1451 VOID
1452 DDKAPI
1453 VideoPortWritePortBufferUchar(
1454 /*IN*/ PUCHAR Port,
1455 /*IN*/ PUCHAR Buffer,
1456 /*IN*/ ULONG Count);
1458 VPAPI
1459 VOID
1460 DDKAPI
1461 VideoPortWritePortBufferUlong(
1462 /*IN*/ PULONG Port,
1463 /*IN*/ PULONG Buffer,
1464 /*IN*/ ULONG Count);
1466 VPAPI
1467 VOID
1468 DDKAPI
1469 VideoPortWritePortBufferUshort(
1470 /*IN*/ PUSHORT Port,
1471 /*IN*/ PUSHORT Buffer,
1472 /*IN*/ ULONG Count);
1474 VPAPI
1475 VOID
1476 DDKAPI
1477 VideoPortWritePortUchar(
1478 /*IN*/ PUCHAR Port,
1479 /*IN*/ UCHAR Value);
1481 VPAPI
1482 VOID
1483 DDKAPI
1484 VideoPortWritePortUlong(
1485 /*IN*/ PULONG Port,
1486 /*IN*/ ULONG Value);
1488 VPAPI
1489 VOID
1490 DDKAPI
1491 VideoPortWritePortUshort(
1492 /*IN*/ PUSHORT Port,
1493 /*IN*/ USHORT Value);
1495 VPAPI
1496 VOID
1497 DDKAPI
1498 VideoPortWriteRegisterBufferUchar(
1499 /*IN*/ PUCHAR Register,
1500 /*IN*/ PUCHAR Buffer,
1501 /*IN*/ ULONG Count);
1503 VPAPI
1504 VOID
1505 DDKAPI
1506 VideoPortWriteRegisterBufferUlong(
1507 /*IN*/ PULONG Register,
1508 /*IN*/ PULONG Buffer,
1509 /*IN*/ ULONG Count);
1511 VPAPI
1512 VOID
1513 DDKAPI
1514 VideoPortWriteRegisterBufferUshort(
1515 /*IN*/ PUSHORT Register,
1516 /*IN*/ PUSHORT Buffer,
1517 /*IN*/ ULONG Count);
1519 VPAPI
1520 VOID
1521 DDKAPI
1522 VideoPortWriteRegisterUchar(
1523 /*IN*/ PUCHAR Register,
1524 /*IN*/ UCHAR Value);
1526 VPAPI
1527 VOID
1528 DDKAPI
1529 VideoPortWriteRegisterUlong(
1530 /*IN*/ PULONG Register,
1531 /*IN*/ ULONG Value);
1533 VPAPI
1534 VOID
1535 DDKAPI
1536 VideoPortWriteRegisterUshort(
1537 /*IN*/ PUSHORT Register,
1538 /*IN*/ USHORT Value);
1540 VPAPI
1541 VOID
1542 DDKAPI
1543 VideoPortZeroDeviceMemory(
1544 /*IN*/ PVOID Destination,
1545 /*IN*/ ULONG Length);
1547 VPAPI
1548 VOID
1549 DDKAPI
1550 VideoPortZeroMemory(
1551 /*IN*/ PVOID Destination,
1552 /*2IN*/ ULONG Length);
1554 #ifdef DBG
1555 #define VideoDebugPrint(x) VideoPortDebugPrint x
1556 #else
1557 #define VideoDebugPrint(x)
1558 #endif
1560 #ifdef __cplusplus
1562 #endif
1564 #endif /* defined __WINDDI_H */
1566 #endif /* __VIDEO_H */