ide: add ide_read_error() inline helper

Acked-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent c47137a9
...@@ -304,7 +304,7 @@ static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret) ...@@ -304,7 +304,7 @@ static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret)
return 0; return 0;
/* Get the IDE error register. */ /* Get the IDE error register. */
err = HWIF(drive)->INB(IDE_ERROR_REG); err = ide_read_error(drive);
sense_key = err >> 4; sense_key = err >> 4;
if (rq == NULL) { if (rq == NULL) {
......
...@@ -465,7 +465,7 @@ static void idefloppy_retry_pc(ide_drive_t *drive) ...@@ -465,7 +465,7 @@ static void idefloppy_retry_pc(ide_drive_t *drive)
idefloppy_pc_t *pc; idefloppy_pc_t *pc;
struct request *rq; struct request *rq;
(void)drive->hwif->INB(IDE_ERROR_REG); (void)ide_read_error(drive);
pc = idefloppy_next_pc_storage(drive); pc = idefloppy_next_pc_storage(drive);
rq = idefloppy_next_rq_storage(drive); rq = idefloppy_next_rq_storage(drive);
idefloppy_create_request_sense_cmd(pc); idefloppy_create_request_sense_cmd(pc);
......
...@@ -821,8 +821,8 @@ static ide_startstop_t execute_drive_cmd (ide_drive_t *drive, ...@@ -821,8 +821,8 @@ static ide_startstop_t execute_drive_cmd (ide_drive_t *drive,
#ifdef DEBUG #ifdef DEBUG
printk("%s: DRIVE_CMD (null)\n", drive->name); printk("%s: DRIVE_CMD (null)\n", drive->name);
#endif #endif
ide_end_drive_cmd(drive, ide_read_status(drive), ide_end_drive_cmd(drive, ide_read_status(drive), ide_read_error(drive));
hwif->INB(IDE_ERROR_REG));
return ide_stopped; return ide_stopped;
} }
......
...@@ -918,7 +918,9 @@ static ide_startstop_t reset_pollfunc (ide_drive_t *drive) ...@@ -918,7 +918,9 @@ static ide_startstop_t reset_pollfunc (ide_drive_t *drive)
drive->failures++; drive->failures++;
} else { } else {
printk("%s: reset: ", hwif->name); printk("%s: reset: ", hwif->name);
if ((tmp = hwif->INB(IDE_ERROR_REG)) == 1) { tmp = ide_read_error(drive);
if (tmp == 1) {
printk("success\n"); printk("success\n");
drive->failures = 0; drive->failures = 0;
} else { } else {
......
...@@ -578,7 +578,7 @@ u8 ide_dump_status(ide_drive_t *drive, const char *msg, u8 stat) ...@@ -578,7 +578,7 @@ u8 ide_dump_status(ide_drive_t *drive, const char *msg, u8 stat)
} }
printk("}\n"); printk("}\n");
if ((stat & (BUSY_STAT|ERR_STAT)) == ERR_STAT) { if ((stat & (BUSY_STAT|ERR_STAT)) == ERR_STAT) {
err = drive->hwif->INB(IDE_ERROR_REG); err = ide_read_error(drive);
printk("%s: %s: error=0x%02x ", drive->name, msg, err); printk("%s: %s: error=0x%02x ", drive->name, msg, err);
if (drive->media == ide_disk) if (drive->media == ide_disk)
ide_dump_ata_error(drive, err); ide_dump_ata_error(drive, err);
......
...@@ -1125,7 +1125,7 @@ static ide_startstop_t idetape_retry_pc (ide_drive_t *drive) ...@@ -1125,7 +1125,7 @@ static ide_startstop_t idetape_retry_pc (ide_drive_t *drive)
idetape_pc_t *pc; idetape_pc_t *pc;
struct request *rq; struct request *rq;
(void)drive->hwif->INB(IDE_ERROR_REG); (void)ide_read_error(drive);
pc = idetape_next_pc_storage(drive); pc = idetape_next_pc_storage(drive);
rq = idetape_next_rq_storage(drive); rq = idetape_next_rq_storage(drive);
idetape_create_request_sense_cmd(pc); idetape_create_request_sense_cmd(pc);
......
...@@ -241,7 +241,6 @@ static ide_startstop_t recal_intr(ide_drive_t *drive) ...@@ -241,7 +241,6 @@ static ide_startstop_t recal_intr(ide_drive_t *drive)
static ide_startstop_t task_no_data_intr(ide_drive_t *drive) static ide_startstop_t task_no_data_intr(ide_drive_t *drive)
{ {
ide_task_t *args = HWGROUP(drive)->rq->special; ide_task_t *args = HWGROUP(drive)->rq->special;
ide_hwif_t *hwif = HWIF(drive);
u8 stat; u8 stat;
local_irq_enable_in_hardirq(); local_irq_enable_in_hardirq();
...@@ -252,7 +251,7 @@ static ide_startstop_t task_no_data_intr(ide_drive_t *drive) ...@@ -252,7 +251,7 @@ static ide_startstop_t task_no_data_intr(ide_drive_t *drive)
/* calls ide_end_drive_cmd */ /* calls ide_end_drive_cmd */
if (args) if (args)
ide_end_drive_cmd(drive, stat, hwif->INB(IDE_ERROR_REG)); ide_end_drive_cmd(drive, stat, ide_read_error(drive));
return ide_stopped; return ide_stopped;
} }
...@@ -408,7 +407,7 @@ static ide_startstop_t task_error(ide_drive_t *drive, struct request *rq, ...@@ -408,7 +407,7 @@ static ide_startstop_t task_error(ide_drive_t *drive, struct request *rq,
void task_end_request(ide_drive_t *drive, struct request *rq, u8 stat) void task_end_request(ide_drive_t *drive, struct request *rq, u8 stat)
{ {
if (rq->cmd_type == REQ_TYPE_ATA_TASKFILE) { if (rq->cmd_type == REQ_TYPE_ATA_TASKFILE) {
u8 err = drive->hwif->INB(IDE_ERROR_REG); u8 err = ide_read_error(drive);
ide_end_drive_cmd(drive, stat, err); ide_end_drive_cmd(drive, stat, err);
return; return;
......
...@@ -1323,4 +1323,11 @@ static inline u8 ide_read_altstatus(ide_drive_t *drive) ...@@ -1323,4 +1323,11 @@ static inline u8 ide_read_altstatus(ide_drive_t *drive)
return hwif->INB(hwif->io_ports[IDE_CONTROL_OFFSET]); return hwif->INB(hwif->io_ports[IDE_CONTROL_OFFSET]);
} }
static inline u8 ide_read_error(ide_drive_t *drive)
{
ide_hwif_t *hwif = drive->hwif;
return hwif->INB(hwif->io_ports[IDE_ERROR_OFFSET]);
}
#endif /* _IDE_H */ #endif /* _IDE_H */
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