Index: keyboard.c =================================================================== --- keyboard.c (revision 17025) +++ keyboard.c (working copy) @@ -605,7 +605,7 @@ } Status = I8042ReadDataWait(DevExt, &Value); - if (Status != STATUS_SUCCESS) { + if (!NT_SUCCESS(Status)) { DPRINT1("No response after read i8042 mode\n"); return FALSE; } @@ -640,13 +640,13 @@ Status = I8042SynchWritePort(DevExt, 0, KBD_GET_ID, TRUE); } while (STATUS_TIMEOUT == Status && RetryCount--); - if (Status != STATUS_SUCCESS) { + if (!NT_SUCCESS(Status)) { DPRINT1("Can't write GET_ID (%x)\n", Status); return FALSE; } Status = I8042ReadDataWait(DevExt, &Value); - if (Status != STATUS_SUCCESS) { + if (!NT_SUCCESS(Status)) { DPRINT1("No response after GET_ID\n"); /* Could be an AT keyboard */ DevExt->KeyboardIsAT = TRUE; @@ -663,7 +663,7 @@ DPRINT("Keyboard ID: %x", Value); Status = I8042ReadDataWait(DevExt, &Value); - if (Status != STATUS_SUCCESS) { + if (!NT_SUCCESS(Status)) { DPRINT("Partial ID\n"); return FALSE; } @@ -672,12 +672,12 @@ detectsetleds: Status = I8042SynchWritePort(DevExt, 0, KBD_SET_LEDS, TRUE); - if (Status != STATUS_SUCCESS) { + if (!NT_SUCCESS(Status)) { DPRINT("Can't write SET_LEDS (%x)\n", Status); return FALSE; } Status = I8042SynchWritePort(DevExt, 0, 0, TRUE); - if (Status != STATUS_SUCCESS) { + if (!NT_SUCCESS(Status)) { DPRINT("Can't finish SET_LEDS (%x)\n", Status); return FALSE; } @@ -690,7 +690,7 @@ } Status = I8042ReadDataWait(DevExt, &Value); - if (Status != STATUS_SUCCESS) { + if (!NT_SUCCESS(Status)) { DPRINT1("No response after read i8042 mode\n"); return FALSE; } Index: mouse.c =================================================================== --- mouse.c (revision 17025) +++ mouse.c (working copy) @@ -833,7 +833,7 @@ } Status = I8042ReadDataWait(DevExt, &Value); - if (Status != STATUS_SUCCESS) { + if (!NT_SUCCESS(Status)) { DPRINT1("No response after read i8042 mode\n"); return FALSE; } @@ -869,7 +869,7 @@ } Status = I8042ReadDataWait(DevExt, &Value); - if (Status != STATUS_SUCCESS) { + if (!NT_SUCCESS(Status)) { DPRINT1("No response after read i8042 mode\n"); return FALSE; } Index: registry.c =================================================================== --- registry.c (revision 17025) +++ registry.c (working copy) @@ -211,7 +211,7 @@ NULL, NULL); - if (Status != STATUS_SUCCESS) { + if (!NT_SUCCESS(Status)) { DPRINT1 ("Can't read registry: %x\n", Status); /* Actually, the defaults are not set when the function * fails, as would happen during setup, so you have to Index: i8042prt.c =================================================================== --- i8042prt.c (revision 17025) +++ i8042prt.c (working copy) @@ -153,7 +153,7 @@ if (WaitForAck) { Status = I8042ReadDataWait(DevExt, &Ack); - if (Status != STATUS_SUCCESS) + if (!NT_SUCCESS(Status)) return Status; if (Ack == KBD_ACK) return STATUS_SUCCESS; @@ -426,7 +426,7 @@ I8042SynchReadPort, I8042SynchWritePortKbd, FALSE); - if (Status != STATUS_SUCCESS) { + if (!NT_SUCCESS(Status)) { WorkItemData->Irp->IoStatus.Status = Status; goto hookworkitemdone; } @@ -514,6 +514,9 @@ UCHAR Value = 0; UINT Counter; + DevExt->MouseExists = FALSE; + DevExt->KeyboardExists = FALSE; + I8042Flush(); if (!I8042Write(DevExt, I8042_CTRL_PORT, KBD_SELF_TEST)) @@ -525,37 +528,34 @@ Status = I8042ReadDataWait(DevExt, &Value); } while ((Counter--) && (STATUS_TIMEOUT == Status)); - if (Status != STATUS_SUCCESS) + if (!NT_SUCCESS(Status)) return Status; if (Value != 0x55) { DPRINT1("Got %x instead of 55\n", Value); return STATUS_IO_DEVICE_ERROR; } - if (!I8042Write(DevExt, I8042_CTRL_PORT, KBD_LINE_TEST)) - return STATUS_TIMEOUT; - Status = I8042ReadDataWait(DevExt, &Value); - if (Status != STATUS_SUCCESS) - return Status; + if (I8042Write(DevExt, I8042_CTRL_PORT, KBD_LINE_TEST)) + { + Status = I8042ReadDataWait(DevExt, &Value); + if (!NT_SUCCESS(Status)) + return Status; - if (Value == 0) { - DevExt->KeyboardExists = TRUE; - } else { - DevExt->KeyboardExists = FALSE; + if (Value == 0) { + DevExt->KeyboardExists = TRUE; + } } - if (!I8042Write(DevExt, I8042_CTRL_PORT, MOUSE_LINE_TEST)) - return STATUS_TIMEOUT; + if (I8042Write(DevExt, I8042_CTRL_PORT, MOUSE_LINE_TEST)) + { + Status = I8042ReadDataWait(DevExt, &Value); + if (!NT_SUCCESS(Status)) + return Status; - Status = I8042ReadDataWait(DevExt, &Value); - if (Status != STATUS_SUCCESS) - return Status; - - if (Value == 0) { - DevExt->MouseExists = TRUE; - } else { - DevExt->MouseExists = FALSE; + if (Value == 0) { + DevExt->MouseExists = TRUE; + } } return STATUS_SUCCESS; @@ -566,7 +566,7 @@ NTSTATUS Status; Status = I8042BasicDetect(DevExt); - if (Status != STATUS_SUCCESS) { + if (!NT_SUCCESS(Status)) { DPRINT1("Basic keyboard detection failed: %x\n", Status); return Status; }