aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/ide-atapi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ide/ide-atapi.c')
-rw-r--r--drivers/ide/ide-atapi.c32
1 files changed, 17 insertions, 15 deletions
diff --git a/drivers/ide/ide-atapi.c b/drivers/ide/ide-atapi.c
index 2433fce6c111..12674e6519e6 100644
--- a/drivers/ide/ide-atapi.c
+++ b/drivers/ide/ide-atapi.c
@@ -41,7 +41,7 @@ ide_startstop_t ide_pc_intr(ide_drive_t *drive, struct ide_atapi_pc *pc,
41 41
42 if (pc->flags & PC_FLAG_DMA_IN_PROGRESS) { 42 if (pc->flags & PC_FLAG_DMA_IN_PROGRESS) {
43 if (hwif->dma_ops->dma_end(drive) || 43 if (hwif->dma_ops->dma_end(drive) ||
44 (drive->media == ide_tape && !scsi && (stat & ERR_STAT))) { 44 (drive->media == ide_tape && !scsi && (stat & ATA_ERR))) {
45 if (drive->media == ide_floppy && !scsi) 45 if (drive->media == ide_floppy && !scsi)
46 printk(KERN_ERR "%s: DMA %s error\n", 46 printk(KERN_ERR "%s: DMA %s error\n",
47 drive->name, rq_data_dir(pc->rq) 47 drive->name, rq_data_dir(pc->rq)
@@ -56,7 +56,7 @@ ide_startstop_t ide_pc_intr(ide_drive_t *drive, struct ide_atapi_pc *pc,
56 } 56 }
57 57
58 /* No more interrupts */ 58 /* No more interrupts */
59 if ((stat & DRQ_STAT) == 0) { 59 if ((stat & ATA_DRQ) == 0) {
60 debug_log("Packet command completed, %d bytes transferred\n", 60 debug_log("Packet command completed, %d bytes transferred\n",
61 pc->xferred); 61 pc->xferred);
62 62
@@ -65,10 +65,10 @@ ide_startstop_t ide_pc_intr(ide_drive_t *drive, struct ide_atapi_pc *pc,
65 local_irq_enable_in_hardirq(); 65 local_irq_enable_in_hardirq();
66 66
67 if (drive->media == ide_tape && !scsi && 67 if (drive->media == ide_tape && !scsi &&
68 (stat & ERR_STAT) && rq->cmd[0] == REQUEST_SENSE) 68 (stat & ATA_ERR) && rq->cmd[0] == REQUEST_SENSE)
69 stat &= ~ERR_STAT; 69 stat &= ~ATA_ERR;
70 70
71 if ((stat & ERR_STAT) || (pc->flags & PC_FLAG_DMA_ERROR)) { 71 if ((stat & ATA_ERR) || (pc->flags & PC_FLAG_DMA_ERROR)) {
72 /* Error detected */ 72 /* Error detected */
73 debug_log("%s: I/O error\n", drive->name); 73 debug_log("%s: I/O error\n", drive->name);
74 74
@@ -95,7 +95,7 @@ ide_startstop_t ide_pc_intr(ide_drive_t *drive, struct ide_atapi_pc *pc,
95cmd_finished: 95cmd_finished:
96 pc->error = 0; 96 pc->error = 0;
97 if ((pc->flags & PC_FLAG_WAIT_FOR_DSC) && 97 if ((pc->flags & PC_FLAG_WAIT_FOR_DSC) &&
98 (stat & SEEK_STAT) == 0) { 98 (stat & ATA_DSC) == 0) {
99 dsc_handle(drive); 99 dsc_handle(drive);
100 return ide_stopped; 100 return ide_stopped;
101 } 101 }
@@ -117,17 +117,18 @@ cmd_finished:
117 /* Get the number of bytes to transfer on this interrupt. */ 117 /* Get the number of bytes to transfer on this interrupt. */
118 ide_read_bcount_and_ireason(drive, &bcount, &ireason); 118 ide_read_bcount_and_ireason(drive, &bcount, &ireason);
119 119
120 if (ireason & CD) { 120 if (ireason & ATAPI_COD) {
121 printk(KERN_ERR "%s: CoD != 0 in %s\n", drive->name, __func__); 121 printk(KERN_ERR "%s: CoD != 0 in %s\n", drive->name, __func__);
122 return ide_do_reset(drive); 122 return ide_do_reset(drive);
123 } 123 }
124 124
125 if (((ireason & IO) == IO) == !!(pc->flags & PC_FLAG_WRITING)) { 125 if (((ireason & ATAPI_IO) == ATAPI_IO) ==
126 !!(pc->flags & PC_FLAG_WRITING)) {
126 /* Hopefully, we will never get here */ 127 /* Hopefully, we will never get here */
127 printk(KERN_ERR "%s: We wanted to %s, but the device wants us " 128 printk(KERN_ERR "%s: We wanted to %s, but the device wants us "
128 "to %s!\n", drive->name, 129 "to %s!\n", drive->name,
129 (ireason & IO) ? "Write" : "Read", 130 (ireason & ATAPI_IO) ? "Write" : "Read",
130 (ireason & IO) ? "Read" : "Write"); 131 (ireason & ATAPI_IO) ? "Read" : "Write");
131 return ide_do_reset(drive); 132 return ide_do_reset(drive);
132 } 133 }
133 134
@@ -205,7 +206,8 @@ static u8 ide_wait_ireason(ide_drive_t *drive, u8 ireason)
205{ 206{
206 int retries = 100; 207 int retries = 100;
207 208
208 while (retries-- && ((ireason & CD) == 0 || (ireason & IO))) { 209 while (retries-- && ((ireason & ATAPI_COD) == 0 ||
210 (ireason & ATAPI_IO))) {
209 printk(KERN_ERR "%s: (IO,CoD != (0,1) while issuing " 211 printk(KERN_ERR "%s: (IO,CoD != (0,1) while issuing "
210 "a packet command, retrying\n", drive->name); 212 "a packet command, retrying\n", drive->name);
211 udelay(100); 213 udelay(100);
@@ -214,8 +216,8 @@ static u8 ide_wait_ireason(ide_drive_t *drive, u8 ireason)
214 printk(KERN_ERR "%s: (IO,CoD != (0,1) while issuing " 216 printk(KERN_ERR "%s: (IO,CoD != (0,1) while issuing "
215 "a packet command, ignoring\n", 217 "a packet command, ignoring\n",
216 drive->name); 218 drive->name);
217 ireason |= CD; 219 ireason |= ATAPI_COD;
218 ireason &= ~IO; 220 ireason &= ~ATAPI_IO;
219 } 221 }
220 } 222 }
221 223
@@ -231,7 +233,7 @@ ide_startstop_t ide_transfer_pc(ide_drive_t *drive, struct ide_atapi_pc *pc,
231 ide_startstop_t startstop; 233 ide_startstop_t startstop;
232 u8 ireason; 234 u8 ireason;
233 235
234 if (ide_wait_stat(&startstop, drive, DRQ_STAT, BUSY_STAT, WAIT_READY)) { 236 if (ide_wait_stat(&startstop, drive, ATA_DRQ, ATA_BUSY, WAIT_READY)) {
235 printk(KERN_ERR "%s: Strange, packet command initiated yet " 237 printk(KERN_ERR "%s: Strange, packet command initiated yet "
236 "DRQ isn't asserted\n", drive->name); 238 "DRQ isn't asserted\n", drive->name);
237 return startstop; 239 return startstop;
@@ -241,7 +243,7 @@ ide_startstop_t ide_transfer_pc(ide_drive_t *drive, struct ide_atapi_pc *pc,
241 if (drive->media == ide_tape && !drive->scsi) 243 if (drive->media == ide_tape && !drive->scsi)
242 ireason = ide_wait_ireason(drive, ireason); 244 ireason = ide_wait_ireason(drive, ireason);
243 245
244 if ((ireason & CD) == 0 || (ireason & IO)) { 246 if ((ireason & ATAPI_COD) == 0 || (ireason & ATAPI_IO)) {
245 printk(KERN_ERR "%s: (IO,CoD) != (0,1) while issuing " 247 printk(KERN_ERR "%s: (IO,CoD) != (0,1) while issuing "
246 "a packet command\n", drive->name); 248 "a packet command\n", drive->name);
247 return ide_do_reset(drive); 249 return ide_do_reset(drive);