diff options
Diffstat (limited to 'drivers/ide/ide-atapi.c')
-rw-r--r-- | drivers/ide/ide-atapi.c | 32 |
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, | |||
95 | cmd_finished: | 95 | cmd_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); |