* If not, write to the Free Software Foundation,
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
- * $Id: videoprt.h,v 1.1 2004/01/19 15:56:53 navaraf Exp $
+ * $Id$
*/
#ifndef VIDEOPRT_H
#define VIDEOPRT_H
-#include <ddk/miniport.h>
-#include <ddk/video.h>
-#include <ddk/ntddvdeo.h>
-#include "internal/ps.h"
+#include <stdio.h>
+#include <ntddk.h>
+#include <miniport.h>
+#include <video.h>
+#include <ntddvdeo.h>
+#include <ntagp.h>
+#include <ntifs.h>
+#include <ndk/ntndk.h>
+#include <reactos/helper.h>
+
#define NDEBUG
#include <debug.h>
-/*
- * FIXME: Definition missing from w32api!
- */
-#ifndef SYNCH_LEVEL
-#define SYNCH_LEVEL (IPI_LEVEL - 2)
-#endif
-VOID FASTCALL KfLowerIrql(IN KIRQL NewIrql);
-#define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a)
-KIRQL FASTCALL KfRaiseIrql(IN KIRQL NewIrql);
-NTKERNELAPI VOID HalAcquireDisplayOwnership(IN PHAL_RESET_DISPLAY_PARAMETERS ResetDisplayParameters);
-
#define TAG_VIDEO_PORT TAG('V', 'I', 'D', 'P')
-extern PEPROCESS Csrss;
+#define DPFLTR_IHVVIDEO_ID 0 /* FIXME */
typedef struct _VIDEO_PORT_ADDRESS_MAPPING
{
UINT MappingCount;
} VIDEO_PORT_ADDRESS_MAPPING, *PVIDEO_PORT_ADDRESS_MAPPING;
+struct _VIDEO_PORT_AGP_VIRTUAL_MAPPING;
+
+typedef struct _VIDEO_PORT_AGP_MAPPING
+{
+ ULONG NumberOfPages;
+ PVOID MapHandle;
+ PHYSICAL_ADDRESS PhysicalAddress;
+} VIDEO_PORT_AGP_MAPPING, *PVIDEO_PORT_AGP_MAPPING;
+
+typedef struct _VIDEO_PORT_AGP_VIRTUAL_MAPPING
+{
+ PVIDEO_PORT_AGP_MAPPING AgpMapping;
+ HANDLE ProcessHandle;
+ PVOID MappedAddress;
+} VIDEO_PORT_AGP_VIRTUAL_MAPPING, *PVIDEO_PORT_AGP_VIRTUAL_MAPPING;
+
+typedef struct _VIDEO_PORT_DRIVER_EXTENSION
+{
+ VIDEO_HW_INITIALIZATION_DATA InitializationData;
+ PVOID HwContext;
+ UNICODE_STRING RegistryPath;
+} VIDEO_PORT_DRIVER_EXTENSION, *PVIDEO_PORT_DRIVER_EXTENSION;
+
typedef struct _VIDEO_PORT_DEVICE_EXTENSTION
{
- PDEVICE_OBJECT DeviceObject;
+ ULONG DeviceNumber;
+ PDRIVER_OBJECT DriverObject;
+ PDEVICE_OBJECT PhysicalDeviceObject;
+ PDEVICE_OBJECT FunctionalDeviceObject;
+ PDEVICE_OBJECT NextDeviceObject;
+ UNICODE_STRING RegistryPath;
PKINTERRUPT InterruptObject;
KSPIN_LOCK InterruptSpinLock;
+ PCM_RESOURCE_LIST AllocatedResources;
ULONG InterruptVector;
ULONG InterruptLevel;
- PVIDEO_HW_INITIALIZE HwInitialize;
- PVIDEO_HW_RESET_HW HwResetHw;
- PVIDEO_HW_TIMER HwTimer;
- PVIDEO_HW_INTERRUPT HwInterrupt;
- LIST_ENTRY AddressMappingListHead;
+ BOOLEAN InterruptShared;
INTERFACE_TYPE AdapterInterfaceType;
ULONG SystemIoBusNumber;
- UNICODE_STRING RegistryPath;
- UCHAR MiniPortDeviceExtension[1]; /* must be the last entry */
+ ULONG SystemIoSlotNumber;
+ LIST_ENTRY AddressMappingListHead;
+ KDPC DpcObject;
+ VIDEO_PORT_DRIVER_EXTENSION *DriverExtension;
+ ULONG DeviceOpened;
+ AGP_BUS_INTERFACE_STANDARD AgpInterface;
+ KMUTEX DeviceLock;
+ CHAR MiniPortDeviceExtension[1];
} VIDEO_PORT_DEVICE_EXTENSION, *PVIDEO_PORT_DEVICE_EXTENSION;
-NTSTATUS STDCALL
-VidDispatchOpen(IN PDEVICE_OBJECT pDO, IN PIRP Irp);
+#define VIDEO_PORT_GET_DEVICE_EXTENSION(MiniportExtension) \
+ CONTAINING_RECORD( \
+ HwDeviceExtension, \
+ VIDEO_PORT_DEVICE_EXTENSION, \
+ MiniPortDeviceExtension)
+
+/* agp.c */
+
+NTSTATUS
+IopInitiatePnpIrp(
+ PDEVICE_OBJECT DeviceObject,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ ULONG MinorFunction,
+ PIO_STACK_LOCATION Stack OPTIONAL);
+
+NTSTATUS NTAPI
+IntAgpGetInterface(
+ IN PVOID HwDeviceExtension,
+ IN OUT PINTERFACE Interface);
+
+/* dispatch.c */
-NTSTATUS STDCALL
-VidDispatchClose(IN PDEVICE_OBJECT pDO, IN PIRP Irp);
+NTSTATUS NTAPI
+IntVideoPortAddDevice(
+ IN PDRIVER_OBJECT DriverObject,
+ IN PDEVICE_OBJECT PhysicalDeviceObject);
-NTSTATUS STDCALL
-VidDispatchDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
+NTSTATUS NTAPI
+IntVideoPortDispatchOpen(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PIRP Irp);
-PVOID STDCALL
-InternalMapMemory(
- IN PVIDEO_PORT_DEVICE_EXTENSION DeviceExtension,
- IN PHYSICAL_ADDRESS IoAddress,
- IN ULONG NumberOfUchars,
- IN UCHAR InIoSpace);
+NTSTATUS NTAPI
+IntVideoPortDispatchClose(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PIRP Irp);
-VOID STDCALL
-InternalUnmapMemory(
- IN PVIDEO_PORT_DEVICE_EXTENSION DeviceExtension,
- IN PVOID MappedAddress);
+NTSTATUS NTAPI
+IntVideoPortDispatchCleanup(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PIRP Irp);
-VP_STATUS STDCALL
+NTSTATUS NTAPI
+IntVideoPortDispatchDeviceControl(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PIRP Irp);
+
+NTSTATUS NTAPI
+IntVideoPortDispatchPnp(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PIRP Irp);
+
+NTSTATUS NTAPI
+IntVideoPortDispatchPower(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PIRP Irp);
+
+NTSTATUS NTAPI
+IntVideoPortDispatchWrite(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PIRP Irp);
+
+VOID NTAPI
+IntVideoPortUnload(PDRIVER_OBJECT DriverObject);
+
+/* timer.c */
+
+BOOLEAN NTAPI
+IntVideoPortSetupTimer(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension);
+
+/* interrupt.c */
+
+BOOLEAN NTAPI
+IntVideoPortSetupInterrupt(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension,
+ IN PVIDEO_PORT_CONFIG_INFO ConfigInfo);
+
+/* resource.c */
+
+NTSTATUS NTAPI
+IntVideoPortMapPhysicalMemory(
+ IN HANDLE Process,
+ IN PHYSICAL_ADDRESS PhysicalAddress,
+ IN ULONG SizeInBytes,
+ IN ULONG Protect,
+ IN OUT PVOID *VirtualAddress OPTIONAL);
+
+/* videoprt.c */
+
+extern ULONG CsrssInitialized;
+extern PKPROCESS Csrss;
+
+VP_STATUS NTAPI
+VideoPortEnumerateChildren(
+ IN PVOID HwDeviceExtension,
+ IN PVOID Reserved);
+
+PVOID NTAPI
+VideoPortGetProcAddress(
+ IN PVOID HwDeviceExtension,
+ IN PUCHAR FunctionName);
+
+VOID FASTCALL
+IntAttachToCSRSS(PKPROCESS *CallingProcess, PKAPC_STATE ApcState);
+
+VOID FASTCALL
+IntDetachFromCSRSS(PKPROCESS *CallingProcess, PKAPC_STATE ApcState);
+
+NTSTATUS NTAPI
+IntVideoPortCreateAdapterDeviceObject(
+ IN PDRIVER_OBJECT DriverObject,
+ IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension,
+ IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL,
+ OUT PDEVICE_OBJECT *DeviceObject OPTIONAL);
+
+NTSTATUS NTAPI
+IntVideoPortFindAdapter(
+ IN PDRIVER_OBJECT DriverObject,
+ IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension,
+ IN PDEVICE_OBJECT DeviceObject);
+
+/* int10.c */
+
+VP_STATUS NTAPI
IntInt10AllocateBuffer(
IN PVOID Context,
OUT PUSHORT Seg,
OUT PUSHORT Off,
IN OUT PULONG Length);
-VP_STATUS STDCALL
+VP_STATUS NTAPI
IntInt10FreeBuffer(
IN PVOID Context,
IN USHORT Seg,
IN USHORT Off);
-VP_STATUS STDCALL
+VP_STATUS NTAPI
IntInt10ReadMemory(
IN PVOID Context,
IN USHORT Seg,
OUT PVOID Buffer,
IN ULONG Length);
-VP_STATUS STDCALL
+VP_STATUS NTAPI
IntInt10WriteMemory(
IN PVOID Context,
IN USHORT Seg,
IN PVOID Buffer,
IN ULONG Length);
-VP_STATUS STDCALL
+VP_STATUS NTAPI
IntInt10CallBios(
IN PVOID Context,
IN OUT PINT10_BIOS_ARGUMENTS BiosArguments);
+VP_STATUS NTAPI
+VideoPortInt10(
+ IN PVOID HwDeviceExtension,
+ IN PVIDEO_X86_BIOS_ARGUMENTS BiosArguments);
+
#endif /* VIDEOPRT_H */