aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/ide-io.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ide/ide-io.c')
-rw-r--r--drivers/ide/ide-io.c21
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
195static ide_startstop_t do_special(ide_drive_t *drive) 195static 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 /*