diff options
Diffstat (limited to 'drivers/ide/ide-io.c')
-rw-r--r-- | drivers/ide/ide-io.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c index 18557683ed5a..644d7b4454a6 100644 --- a/drivers/ide/ide-io.c +++ b/drivers/ide/ide-io.c | |||
@@ -194,14 +194,14 @@ static void ide_tf_set_setmult_cmd(ide_drive_t *drive, struct ide_taskfile *tf) | |||
194 | 194 | ||
195 | static ide_startstop_t do_special(ide_drive_t *drive) | 195 | static ide_startstop_t do_special(ide_drive_t *drive) |
196 | { | 196 | { |
197 | special_t *s = &drive->special; | ||
198 | struct ide_cmd cmd; | 197 | struct ide_cmd cmd; |
199 | 198 | ||
200 | #ifdef DEBUG | 199 | #ifdef DEBUG |
201 | printk(KERN_DEBUG "%s: %s: 0x%02x\n", drive->name, __func__, s->all); | 200 | printk(KERN_DEBUG "%s: %s: 0x%02x\n", drive->name, __func__, |
201 | drive->special_flags); | ||
202 | #endif | 202 | #endif |
203 | if (drive->media != ide_disk) { | 203 | if (drive->media != ide_disk) { |
204 | s->all = 0; | 204 | drive->special_flags = 0; |
205 | drive->mult_req = 0; | 205 | drive->mult_req = 0; |
206 | return ide_stopped; | 206 | return ide_stopped; |
207 | } | 207 | } |
@@ -209,14 +209,14 @@ static ide_startstop_t do_special(ide_drive_t *drive) | |||
209 | memset(&cmd, 0, sizeof(cmd)); | 209 | memset(&cmd, 0, sizeof(cmd)); |
210 | cmd.protocol = ATA_PROT_NODATA; | 210 | cmd.protocol = ATA_PROT_NODATA; |
211 | 211 | ||
212 | if (s->b.set_geometry) { | 212 | if (drive->special_flags & IDE_SFLAG_SET_GEOMETRY) { |
213 | s->b.set_geometry = 0; | 213 | drive->special_flags &= ~IDE_SFLAG_SET_GEOMETRY; |
214 | ide_tf_set_specify_cmd(drive, &cmd.tf); | 214 | ide_tf_set_specify_cmd(drive, &cmd.tf); |
215 | } else if (s->b.recalibrate) { | 215 | } else if (drive->special_flags & IDE_SFLAG_RECALIBRATE) { |
216 | s->b.recalibrate = 0; | 216 | drive->special_flags &= ~IDE_SFLAG_RECALIBRATE; |
217 | ide_tf_set_restore_cmd(drive, &cmd.tf); | 217 | ide_tf_set_restore_cmd(drive, &cmd.tf); |
218 | } else if (s->b.set_multmode) { | 218 | } else if (drive->special_flags & IDE_SFLAG_SET_MULTMODE) { |
219 | s->b.set_multmode = 0; | 219 | drive->special_flags &= ~IDE_SFLAG_SET_MULTMODE; |
220 | ide_tf_set_setmult_cmd(drive, &cmd.tf); | 220 | ide_tf_set_setmult_cmd(drive, &cmd.tf); |
221 | } else | 221 | } else |
222 | BUG(); | 222 | BUG(); |
@@ -339,7 +339,8 @@ static ide_startstop_t start_request (ide_drive_t *drive, struct request *rq) | |||
339 | printk(KERN_ERR "%s: drive not ready for command\n", drive->name); | 339 | printk(KERN_ERR "%s: drive not ready for command\n", drive->name); |
340 | return startstop; | 340 | return startstop; |
341 | } | 341 | } |
342 | if (!drive->special.all) { | 342 | |
343 | if (drive->special_flags == 0) { | ||
343 | struct ide_driver *drv; | 344 | struct ide_driver *drv; |
344 | 345 | ||
345 | /* | 346 | /* |