diff options
Diffstat (limited to 'drivers/ide/ide-cd.c')
| -rw-r--r-- | drivers/ide/ide-cd.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c index 6e29dd532090..82879a1a89e5 100644 --- a/drivers/ide/ide-cd.c +++ b/drivers/ide/ide-cd.c | |||
| @@ -280,11 +280,12 @@ static void ide_dump_status_no_sense(ide_drive_t *drive, const char *msg, u8 st) | |||
| 280 | */ | 280 | */ |
| 281 | static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret) | 281 | static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret) |
| 282 | { | 282 | { |
| 283 | struct request *rq = HWGROUP(drive)->rq; | 283 | ide_hwif_t *hwif = drive->hwif; |
| 284 | struct request *rq = hwif->hwgroup->rq; | ||
| 284 | int stat, err, sense_key; | 285 | int stat, err, sense_key; |
| 285 | 286 | ||
| 286 | /* check for errors */ | 287 | /* check for errors */ |
| 287 | stat = ide_read_status(drive); | 288 | stat = hwif->read_status(hwif); |
| 288 | 289 | ||
| 289 | if (stat_ret) | 290 | if (stat_ret) |
| 290 | *stat_ret = stat; | 291 | *stat_ret = stat; |
| @@ -606,6 +607,8 @@ static ide_startstop_t cdrom_transfer_packet_command(ide_drive_t *drive, | |||
| 606 | static int ide_cd_check_ireason(ide_drive_t *drive, struct request *rq, | 607 | static int ide_cd_check_ireason(ide_drive_t *drive, struct request *rq, |
| 607 | int len, int ireason, int rw) | 608 | int len, int ireason, int rw) |
| 608 | { | 609 | { |
| 610 | ide_hwif_t *hwif = drive->hwif; | ||
| 611 | |||
| 609 | /* | 612 | /* |
| 610 | * ireason == 0: the drive wants to receive data from us | 613 | * ireason == 0: the drive wants to receive data from us |
| 611 | * ireason == 2: the drive is expecting to transfer data to us | 614 | * ireason == 2: the drive is expecting to transfer data to us |
| @@ -624,7 +627,7 @@ static int ide_cd_check_ireason(ide_drive_t *drive, struct request *rq, | |||
| 624 | * Some drives (ASUS) seem to tell us that status info is | 627 | * Some drives (ASUS) seem to tell us that status info is |
| 625 | * available. Just get it and ignore. | 628 | * available. Just get it and ignore. |
| 626 | */ | 629 | */ |
| 627 | (void)ide_read_status(drive); | 630 | (void)hwif->read_status(hwif); |
| 628 | return 0; | 631 | return 0; |
| 629 | } else { | 632 | } else { |
| 630 | /* drive wants a command packet, or invalid ireason... */ | 633 | /* drive wants a command packet, or invalid ireason... */ |
| @@ -1199,8 +1202,9 @@ static ide_startstop_t ide_cd_do_request(ide_drive_t *drive, struct request *rq, | |||
| 1199 | 1202 | ||
| 1200 | if (blk_fs_request(rq)) { | 1203 | if (blk_fs_request(rq)) { |
| 1201 | if (info->cd_flags & IDE_CD_FLAG_SEEKING) { | 1204 | if (info->cd_flags & IDE_CD_FLAG_SEEKING) { |
| 1205 | ide_hwif_t *hwif = drive->hwif; | ||
| 1202 | unsigned long elapsed = jiffies - info->start_seek; | 1206 | unsigned long elapsed = jiffies - info->start_seek; |
| 1203 | int stat = ide_read_status(drive); | 1207 | int stat = hwif->read_status(hwif); |
| 1204 | 1208 | ||
| 1205 | if ((stat & SEEK_STAT) != SEEK_STAT) { | 1209 | if ((stat & SEEK_STAT) != SEEK_STAT) { |
| 1206 | if (elapsed < IDECD_SEEK_TIMEOUT) { | 1210 | if (elapsed < IDECD_SEEK_TIMEOUT) { |
