ide-probe: remove needless Status register reads

* Cache value read from the Status register in 'stat' variable in do_probe()
  and enable_nest(), then remove remove needless Status register reads.

While at it:

* Add proper KERN_* levels to printk() calls.
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent b187dfee
...@@ -423,8 +423,9 @@ static int ide_busy_sleep(ide_hwif_t *hwif) ...@@ -423,8 +423,9 @@ static int ide_busy_sleep(ide_hwif_t *hwif)
static int do_probe (ide_drive_t *drive, u8 cmd) static int do_probe (ide_drive_t *drive, u8 cmd)
{ {
int rc;
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
int rc;
u8 stat;
if (drive->present) { if (drive->present) {
/* avoid waiting for inappropriate probes */ /* avoid waiting for inappropriate probes */
...@@ -461,15 +462,17 @@ static int do_probe (ide_drive_t *drive, u8 cmd) ...@@ -461,15 +462,17 @@ static int do_probe (ide_drive_t *drive, u8 cmd)
/* failed: try again */ /* failed: try again */
rc = try_to_identify(drive,cmd); rc = try_to_identify(drive,cmd);
} }
if (hwif->INB(IDE_STATUS_REG) == (BUSY_STAT|READY_STAT))
stat = hwif->INB(IDE_STATUS_REG);
if (stat == (BUSY_STAT | READY_STAT))
return 4; return 4;
if ((rc == 1 && cmd == WIN_PIDENTIFY) && if ((rc == 1 && cmd == WIN_PIDENTIFY) &&
((drive->autotune == IDE_TUNE_DEFAULT) || ((drive->autotune == IDE_TUNE_DEFAULT) ||
(drive->autotune == IDE_TUNE_AUTO))) { (drive->autotune == IDE_TUNE_AUTO))) {
printk("%s: no response (status = 0x%02x), " printk(KERN_ERR "%s: no response (status = 0x%02x), "
"resetting drive\n", drive->name, "resetting drive\n", drive->name, stat);
hwif->INB(IDE_STATUS_REG));
msleep(50); msleep(50);
hwif->OUTB(drive->select.all, IDE_SELECT_REG); hwif->OUTB(drive->select.all, IDE_SELECT_REG);
msleep(50); msleep(50);
...@@ -477,11 +480,13 @@ static int do_probe (ide_drive_t *drive, u8 cmd) ...@@ -477,11 +480,13 @@ static int do_probe (ide_drive_t *drive, u8 cmd)
(void)ide_busy_sleep(hwif); (void)ide_busy_sleep(hwif);
rc = try_to_identify(drive, cmd); rc = try_to_identify(drive, cmd);
} }
/* ensure drive IRQ is clear */
stat = hwif->INB(IDE_STATUS_REG);
if (rc == 1) if (rc == 1)
printk("%s: no response (status = 0x%02x)\n", printk(KERN_ERR "%s: no response (status = 0x%02x)\n",
drive->name, hwif->INB(IDE_STATUS_REG)); drive->name, stat);
/* ensure drive irq is clear */
(void) hwif->INB(IDE_STATUS_REG);
} else { } else {
/* not present or maybe ATAPI */ /* not present or maybe ATAPI */
rc = 3; rc = 3;
...@@ -502,6 +507,7 @@ static int do_probe (ide_drive_t *drive, u8 cmd) ...@@ -502,6 +507,7 @@ static int do_probe (ide_drive_t *drive, u8 cmd)
static void enable_nest (ide_drive_t *drive) static void enable_nest (ide_drive_t *drive)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
u8 stat;
printk("%s: enabling %s -- ", hwif->name, drive->id->model); printk("%s: enabling %s -- ", hwif->name, drive->id->model);
SELECT_DRIVE(drive); SELECT_DRIVE(drive);
...@@ -515,11 +521,12 @@ static void enable_nest (ide_drive_t *drive) ...@@ -515,11 +521,12 @@ static void enable_nest (ide_drive_t *drive)
msleep(50); msleep(50);
if (!OK_STAT((hwif->INB(IDE_STATUS_REG)), 0, BAD_STAT)) { stat = hwif->INB(IDE_STATUS_REG);
printk("failed (status = 0x%02x)\n", hwif->INB(IDE_STATUS_REG));
} else { if (!OK_STAT(stat, 0, BAD_STAT))
printk("success\n"); printk(KERN_CONT "failed (status = 0x%02x)\n", stat);
} else
printk(KERN_CONT "success\n");
/* if !(success||timed-out) */ /* if !(success||timed-out) */
if (do_probe(drive, WIN_IDENTIFY) >= 2) { if (do_probe(drive, WIN_IDENTIFY) >= 2) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment