aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/ide-scsi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/ide-scsi.c')
-rw-r--r--drivers/scsi/ide-scsi.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/drivers/scsi/ide-scsi.c b/drivers/scsi/ide-scsi.c
index bd2b56912472..c009f2351346 100644
--- a/drivers/scsi/ide-scsi.c
+++ b/drivers/scsi/ide-scsi.c
@@ -399,7 +399,6 @@ static ide_startstop_t idescsi_pc_intr (ide_drive_t *drive)
399 struct request *rq = pc->rq; 399 struct request *rq = pc->rq;
400 atapi_bcount_t bcount; 400 atapi_bcount_t bcount;
401 atapi_ireason_t ireason; 401 atapi_ireason_t ireason;
402 atapi_feature_t feature;
403 unsigned int temp; 402 unsigned int temp;
404 u8 stat; 403 u8 stat;
405 404
@@ -424,7 +423,6 @@ static ide_startstop_t idescsi_pc_intr (ide_drive_t *drive)
424 (void) HWIF(drive)->ide_dma_end(drive); 423 (void) HWIF(drive)->ide_dma_end(drive);
425 } 424 }
426 425
427 feature.all = 0;
428 /* Clear the interrupt */ 426 /* Clear the interrupt */
429 stat = drive->hwif->INB(IDE_STATUS_REG); 427 stat = drive->hwif->INB(IDE_STATUS_REG);
430 428
@@ -572,18 +570,17 @@ static ide_startstop_t idescsi_issue_pc (ide_drive_t *drive, idescsi_pc_t *pc)
572{ 570{
573 idescsi_scsi_t *scsi = drive_to_idescsi(drive); 571 idescsi_scsi_t *scsi = drive_to_idescsi(drive);
574 ide_hwif_t *hwif = drive->hwif; 572 ide_hwif_t *hwif = drive->hwif;
575 atapi_feature_t feature;
576 atapi_bcount_t bcount; 573 atapi_bcount_t bcount;
574 u8 dma = 0;
577 575
578 scsi->pc=pc; /* Set the current packet command */ 576 scsi->pc=pc; /* Set the current packet command */
579 pc->actually_transferred=0; /* We haven't transferred any data yet */ 577 pc->actually_transferred=0; /* We haven't transferred any data yet */
580 pc->current_position=pc->buffer; 578 pc->current_position=pc->buffer;
581 bcount.all = min(pc->request_transfer, 63 * 1024); /* Request to transfer the entire buffer at once */ 579 bcount.all = min(pc->request_transfer, 63 * 1024); /* Request to transfer the entire buffer at once */
582 580
583 feature.all = 0;
584 if (drive->using_dma && !idescsi_map_sg(drive, pc)) { 581 if (drive->using_dma && !idescsi_map_sg(drive, pc)) {
585 hwif->sg_mapped = 1; 582 hwif->sg_mapped = 1;
586 feature.b.dma = !hwif->dma_setup(drive); 583 dma = !hwif->dma_setup(drive);
587 hwif->sg_mapped = 0; 584 hwif->sg_mapped = 0;
588 } 585 }
589 586
@@ -591,11 +588,11 @@ static ide_startstop_t idescsi_issue_pc (ide_drive_t *drive, idescsi_pc_t *pc)
591 if (IDE_CONTROL_REG) 588 if (IDE_CONTROL_REG)
592 HWIF(drive)->OUTB(drive->ctl, IDE_CONTROL_REG); 589 HWIF(drive)->OUTB(drive->ctl, IDE_CONTROL_REG);
593 590
594 HWIF(drive)->OUTB(feature.all, IDE_FEATURE_REG); 591 hwif->OUTB(dma, IDE_FEATURE_REG);
595 HWIF(drive)->OUTB(bcount.b.high, IDE_BCOUNTH_REG); 592 HWIF(drive)->OUTB(bcount.b.high, IDE_BCOUNTH_REG);
596 HWIF(drive)->OUTB(bcount.b.low, IDE_BCOUNTL_REG); 593 HWIF(drive)->OUTB(bcount.b.low, IDE_BCOUNTL_REG);
597 594
598 if (feature.b.dma) 595 if (dma)
599 set_bit(PC_DMA_OK, &pc->flags); 596 set_bit(PC_DMA_OK, &pc->flags);
600 597
601 if (test_bit(IDESCSI_DRQ_INTERRUPT, &scsi->flags)) { 598 if (test_bit(IDESCSI_DRQ_INTERRUPT, &scsi->flags)) {