ide: classify device type in do_probe()
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Tue, 24 Mar 2009 22:22:58 +0000 (23:22 +0100)
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Tue, 24 Mar 2009 22:22:58 +0000 (23:22 +0100)
Defer classifying device type from do_identify() to do_probe().

There should be no functional changes caused by this patch.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
drivers/ide/ide-probe.c

index 29649d09dbb86acf20a7727be5b8b5a04ad87955..3f9faef5e50e5881f4b33df0e9c0fe68bcb43b06 100644 (file)
@@ -233,16 +233,6 @@ static void do_identify(ide_drive_t *drive, u8 cmd)
        drive->dev_flags |= IDE_DFLAG_PRESENT;
        drive->dev_flags &= ~IDE_DFLAG_DEAD;
 
-       /*
-        * Check for an ATAPI device
-        */
-       if (cmd == ATA_CMD_ID_ATAPI)
-               ide_classify_atapi_dev(drive);
-       else
-       /*
-        * Not an ATAPI device: looks like a "regular" hard disk
-        */
-               ide_classify_ata_dev(drive);
        return;
 err_misc:
        kfree(id);
@@ -480,6 +470,8 @@ static int do_probe (ide_drive_t *drive, u8 cmd)
 static u8 probe_for_drive(ide_drive_t *drive)
 {
        char *m;
+       int rc;
+       u8 cmd;
 
        /*
         *      In order to keep things simple we have an id
@@ -504,9 +496,13 @@ static u8 probe_for_drive(ide_drive_t *drive)
        /* skip probing? */
        if ((drive->dev_flags & IDE_DFLAG_NOPROBE) == 0) {
                /* if !(success||timed-out) */
-               if (do_probe(drive, ATA_CMD_ID_ATA) >= 2)
+               cmd = ATA_CMD_ID_ATA;
+               rc = do_probe(drive, cmd);
+               if (rc >= 2) {
                        /* look for ATAPI device */
-                       (void)do_probe(drive, ATA_CMD_ID_ATAPI);
+                       cmd = ATA_CMD_ID_ATAPI;
+                       rc = do_probe(drive, cmd);
+               }
 
                if ((drive->dev_flags & IDE_DFLAG_PRESENT) == 0)
                        /* drive not found */
@@ -525,8 +521,12 @@ static u8 probe_for_drive(ide_drive_t *drive)
                                printk(KERN_WARNING "%s: Unknown device on bus refused identification. Ignoring.\n", drive->name);
                                drive->dev_flags &= ~IDE_DFLAG_PRESENT;
                        }
+               } else {
+                       if (cmd == ATA_CMD_ID_ATAPI)
+                               ide_classify_atapi_dev(drive);
+                       else
+                               ide_classify_ata_dev(drive);
                }
-               /* drive was found */
        }
 
        if ((drive->dev_flags & IDE_DFLAG_PRESENT) == 0)