Merge from amd64-branch:
[reactos.git] / reactos / drivers / bus / isapnp / isapnp.c
index 656e28d..37262c3 100644 (file)
@@ -153,7 +153,7 @@ static VOID WriteUlong(UCHAR Index, ULONG Value)
 }
 #endif
 
-static __inline VOID SetReadDataPort(ULONG Port)
+static __inline VOID SetReadDataPort(ULONG_PTR Port)
 {
   IsaPnPReadPort = (PUCHAR)Port;
        WriteUchar(0x00, (UCHAR) (Port >> 2));
@@ -214,13 +214,13 @@ static VOID DeactivateLogicalDevice(UCHAR LogicalDevice)
 
 #define READ_DATA_PORT_STEP 32  /* Minimum is 4 */
 
-static ULONG FindNextReadPort(VOID)
+static ULONG_PTR FindNextReadPort(VOID)
 {
-       ULONG Port;
+       ULONG_PTR Port;
 
 
 
-       Port = (ULONG)IsaPnPReadPort;
+       Port = (ULONG_PTR)IsaPnPReadPort;
 
        while (TRUE) {
 
@@ -260,7 +260,7 @@ static ULONG FindNextReadPort(VOID)
 
 static BOOLEAN IsolateReadDataPortSelect(VOID)
 {
-  ULONG Port;
+  ULONG_PTR Port;
 
        SendWait();
        SendKey();
@@ -301,7 +301,7 @@ static ULONG IsolatePnPCards(VOID)
 
   DPRINT("Called\n");
 
-       IsaPnPReadPort = (PUCHAR)ISAPNP_MIN_READ_PORT;
+       IsaPnPReadPort = (PUCHAR)(ISAPNP_MIN_READ_PORT - READ_DATA_PORT_STEP);
   if (!IsolateReadDataPortSelect()) {
     DPRINT("Could not set read data port\n");
                return 0;
@@ -333,14 +333,13 @@ static ULONG IsolatePnPCards(VOID)
                        KeStallExecutionProcessor(250);
                        iteration++;
                        SendWake(0x00);
-                       SetReadDataPort((ULONG)IsaPnPReadPort);
+                       SetReadDataPort((ULONG_PTR)IsaPnPReadPort);
                        KeStallExecutionProcessor(1000);
                        WriteAddress(0x01);
                        KeStallExecutionProcessor(1000);
                        goto next;
                }
                if (iteration == 1) {
-                       IsaPnPReadPort += READ_DATA_PORT_STEP;
       if (!IsolateReadDataPortSelect()) {
         DPRINT("Could not set read data port\n");
                                return 0;
@@ -1305,7 +1304,7 @@ static NTSTATUS BuildResourceLists(PISAPNP_LOGICAL_DEVICE LogicalDevice)
   do {
     Status = BuildResourceList(LogicalDevice, p, Priority);
     if (NT_SUCCESS(Status)) {
-      p = (PIO_RESOURCE_LIST)((ULONG)p + SingleListSize);
+      p = (PIO_RESOURCE_LIST)((ULONG_PTR)p + SingleListSize);
       Priority++;
     }
   } while (Status != STATUS_NOT_FOUND);
@@ -1477,7 +1476,7 @@ ISAPNPQueryBusRelations(
     CurrentEntry = CurrentEntry->Flink;
   }
 
-  Irp->IoStatus.Information = (ULONG)Relations;
+  Irp->IoStatus.Information = (ULONG_PTR)Relations;
 
   return Status;
 }
@@ -1574,7 +1573,7 @@ ISAPNPStopDevice(
 
 static DRIVER_DISPATCH ISAPNPDispatchOpenClose;
 static NTSTATUS
-STDCALL
+NTAPI
 ISAPNPDispatchOpenClose(
   IN PDEVICE_OBJECT DeviceObject,
   IN PIRP Irp)
@@ -1590,7 +1589,7 @@ ISAPNPDispatchOpenClose(
 
 static DRIVER_DISPATCH ISAPNPDispatchReadWrite;
 static NTSTATUS
-STDCALL
+NTAPI
 ISAPNPDispatchReadWrite(
   IN PDEVICE_OBJECT PhysicalDeviceObject,
   IN PIRP Irp)
@@ -1606,7 +1605,7 @@ ISAPNPDispatchReadWrite(
 
 static DRIVER_DISPATCH ISAPNPDispatchDeviceControl;
 static NTSTATUS
-STDCALL
+NTAPI
 ISAPNPDispatchDeviceControl(
   IN PDEVICE_OBJECT DeviceObject,
   IN PIRP Irp)
@@ -1638,7 +1637,7 @@ ISAPNPDispatchDeviceControl(
 
 static DRIVER_DISPATCH ISAPNPControl;
 static NTSTATUS
-STDCALL
+NTAPI
 ISAPNPControl(
   IN PDEVICE_OBJECT DeviceObject,
   IN PIRP Irp)
@@ -1662,6 +1661,12 @@ ISAPNPControl(
     Status = ISAPNPStopDevice(DeviceObject, Irp, IrpSp);
     break;
 
+  case IRP_MN_FILTER_RESOURCE_REQUIREMENTS:
+    /* Nothing to do here */
+    DPRINT("IRP_MN_FILTER_RESOURCE_REQUIREMENTS\n");
+    Status = Irp->IoStatus.Status;
+    break;
+
   default:
     DPRINT("Unknown IOCTL 0x%X\n", IrpSp->MinorFunction);
     Status = STATUS_NOT_IMPLEMENTED;
@@ -1680,7 +1685,7 @@ ISAPNPControl(
 
 
 static NTSTATUS
-STDCALL
+NTAPI
 ISAPNPAddDevice(
   IN PDRIVER_OBJECT DriverObject,
   IN PDEVICE_OBJECT PhysicalDeviceObject)
@@ -1721,7 +1726,7 @@ ISAPNPAddDevice(
 
 
 NTSTATUS
-STDCALL
+NTAPI
 DriverEntry(
   IN PDRIVER_OBJECT DriverObject,
   IN PUNICODE_STRING RegistryPath)