Change the if() to remove extra brackets and check for the positive case
first, i.e. when a device is found. Exit the loop in that case, with the
retry logic in the 'else' part.

Signed-off-by: Simon Glass <s...@chromium.org>
---

 drivers/block/ide.c | 36 +++++++++++++++++-------------------
 1 file changed, 17 insertions(+), 19 deletions(-)

diff --git a/drivers/block/ide.c b/drivers/block/ide.c
index 2f45bb6bffb2..a51a0008cae4 100644
--- a/drivers/block/ide.c
+++ b/drivers/block/ide.c
@@ -599,27 +599,25 @@ static void ide_ident(struct blk_desc *dev_desc)
                        c = ide_wait(device, IDE_TIME_OUT);
                }
 
-               if (((c & ATA_STAT_DRQ) == 0) ||
-                   ((c & (ATA_STAT_FAULT | ATA_STAT_ERR)) != 0)) {
-                       if (IS_ENABLED(CONFIG_ATAPI)) {
-                               /*
-                                * Need to soft reset the device
-                                * in case it's an ATAPI...
-                                */
-                               debug("Retrying...\n");
-                               ide_outb(device, ATA_DEV_HD,
-                                        ATA_LBA | ATA_DEVICE(device));
-                               mdelay(100);
-                               ide_outb(device, ATA_COMMAND, 0x08);
-                               mdelay(500);
-                               /* Select device */
-                               ide_outb(device, ATA_DEV_HD,
-                                        ATA_LBA | ATA_DEVICE(device));
-                       }
-                       tries--;
-               } else {
+               if ((c & ATA_STAT_DRQ) &&
+                   !(c & (ATA_STAT_FAULT | ATA_STAT_ERR))) {
                        break;
+               } else if (IS_ENABLED(CONFIG_ATAPI)) {
+                       /*
+                        * Need to soft reset the device
+                        * in case it's an ATAPI...
+                        */
+                       debug("Retrying...\n");
+                       ide_outb(device, ATA_DEV_HD,
+                                ATA_LBA | ATA_DEVICE(device));
+                       mdelay(100);
+                       ide_outb(device, ATA_COMMAND, 0x08);
+                       mdelay(500);
+                       /* Select device */
+                       ide_outb(device, ATA_DEV_HD,
+                                ATA_LBA | ATA_DEVICE(device));
                }
+               tries--;
        }
 
        if (!tries)     /* Not found */
-- 
2.40.0.348.gf938b09366-goog

Reply via email to