Commit in reactos/drivers/storage/atapi on MAIN
atapi.c+22-241.53 -> 1.54
- Execute the reset command previous the present test for each unit (master/slave).

reactos/drivers/storage/atapi
atapi.c 1.53 -> 1.54
diff -u -r1.53 -r1.54
--- atapi.c	12 Sep 2004 18:50:03 -0000	1.53
+++ atapi.c	14 Sep 2004 22:09:06 -0000	1.54
@@ -16,7 +16,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
-/* $Id: atapi.c,v 1.53 2004/09/12 18:50:03 weiden Exp $
+/* $Id: atapi.c,v 1.54 2004/09/14 22:09:06 hbirr Exp $
  *
  * COPYRIGHT:   See COPYING in the top level directory
  * PROJECT:     ReactOS ATAPI miniport driver
@@ -1138,29 +1138,6 @@
        return FALSE;
      }
 
-   /* Soft reset */
-   IDEWriteDriveHead(CommandPortBase, IDE_DH_FIXED);
-   IDEWriteDriveControl(ControlPortBase, IDE_DC_SRST);
-   ScsiPortStallExecution(500);
-   IDEWriteDriveControl(ControlPortBase, IDE_DC_nIEN);
-   ScsiPortStallExecution(200);
-
-   /* Wait for busy to clear */
-   if (!AtapiWaitForStatus(CommandPortBase, IDE_SR_BUSY, 0, 20000))
-     {
-       DPRINT("Timeout on drive %lu\n", UnitNumber);
-       return FALSE;
-     }
-   else
-     {
-       Status = IDEReadStatus(DeviceExtension->CommandPortBase);
-       if (Status & IDE_SR_ERR)
-         {
-           DPRINT("Error while doing software reset\n");
-           return FALSE;
-         }
-     }
-
   for (UnitNumber = 0; UnitNumber < 2; UnitNumber++)
     {
       /* Skip initilization of non-existent units */
@@ -1172,6 +1149,27 @@
       /* Select drive */
       IDEWriteDriveHead(CommandPortBase, IDE_DH_FIXED |
                         (UnitNumber ? IDE_DH_DRV1 : IDE_DH_DRV0));
+      /* Soft reset */
+      IDEWriteDriveControl(ControlPortBase, IDE_DC_SRST);
+      ScsiPortStallExecution(500);
+      IDEWriteDriveControl(ControlPortBase, IDE_DC_nIEN);
+      ScsiPortStallExecution(200);
+
+      /* Wait for busy to clear */
+      if (!AtapiWaitForStatus(CommandPortBase, IDE_SR_BUSY, 0, 20000))
+        {
+          DPRINT("Timeout on drive %lu\n", UnitNumber);
+          return FALSE;
+        }
+      else
+        {
+          Status = IDEReadStatus(DeviceExtension->CommandPortBase);
+          if (Status & IDE_SR_ERR)
+           {
+             DPRINT("Error while doing software reset\n");
+             return FALSE;
+           }
+        }
 
       High = IDEReadCylinderHigh(CommandPortBase);
       Low = IDEReadCylinderLow(CommandPortBase);
CVSspam 0.2.8