|
@@ -698,7 +698,7 @@ static int NCR53c406a_queue(Scsi_Cmnd * SCpnt, void (*done) (Scsi_Cmnd *))
|
|
|
int i;
|
|
|
|
|
|
VDEB(printk("NCR53c406a_queue called\n"));
|
|
|
- DEB(printk("cmd=%02x, cmd_len=%02x, target=%02x, lun=%02x, bufflen=%d\n", SCpnt->cmnd[0], SCpnt->cmd_len, SCpnt->target, SCpnt->lun, SCpnt->request_bufflen));
|
|
|
+ DEB(printk("cmd=%02x, cmd_len=%02x, target=%02x, lun=%02x, bufflen=%d\n", SCpnt->cmnd[0], SCpnt->cmd_len, SCpnt->target, SCpnt->lun, scsi_bufflen(SCpnt)));
|
|
|
|
|
|
#if 0
|
|
|
VDEB(for (i = 0; i < SCpnt->cmd_len; i++)
|
|
@@ -785,8 +785,8 @@ static void NCR53c406a_intr(void *dev_id)
|
|
|
unsigned char status, int_reg;
|
|
|
#if USE_PIO
|
|
|
unsigned char pio_status;
|
|
|
- struct scatterlist *sglist;
|
|
|
- unsigned int sgcount;
|
|
|
+ struct scatterlist *sg;
|
|
|
+ int i;
|
|
|
#endif
|
|
|
|
|
|
VDEB(printk("NCR53c406a_intr called\n"));
|
|
@@ -866,22 +866,18 @@ static void NCR53c406a_intr(void *dev_id)
|
|
|
current_SC->SCp.phase = data_out;
|
|
|
VDEB(printk("NCR53c406a: Data-Out phase\n"));
|
|
|
outb(FLUSH_FIFO, CMD_REG);
|
|
|
- LOAD_DMA_COUNT(current_SC->request_bufflen); /* Max transfer size */
|
|
|
+ LOAD_DMA_COUNT(scsi_bufflen(current_SC)); /* Max transfer size */
|
|
|
#if USE_DMA /* No s/g support for DMA */
|
|
|
- NCR53c406a_dma_write(current_SC->request_buffer, current_SC->request_bufflen);
|
|
|
+ NCR53c406a_dma_write(scsi_sglist(current_SC),
|
|
|
+ scsdi_bufflen(current_SC));
|
|
|
+
|
|
|
#endif /* USE_DMA */
|
|
|
outb(TRANSFER_INFO | DMA_OP, CMD_REG);
|
|
|
#if USE_PIO
|
|
|
- if (!current_SC->use_sg) /* Don't use scatter-gather */
|
|
|
- NCR53c406a_pio_write(current_SC->request_buffer, current_SC->request_bufflen);
|
|
|
- else { /* use scatter-gather */
|
|
|
- sgcount = current_SC->use_sg;
|
|
|
- sglist = current_SC->request_buffer;
|
|
|
- while (sgcount--) {
|
|
|
- NCR53c406a_pio_write(page_address(sglist->page) + sglist->offset, sglist->length);
|
|
|
- sglist++;
|
|
|
- }
|
|
|
- }
|
|
|
+ scsi_for_each_sg(current_SC, sg, scsi_sg_count(current_SC), i) {
|
|
|
+ NCR53c406a_pio_write(page_address(sg->page) + sg->offset,
|
|
|
+ sg->length);
|
|
|
+ }
|
|
|
REG0;
|
|
|
#endif /* USE_PIO */
|
|
|
}
|
|
@@ -893,22 +889,17 @@ static void NCR53c406a_intr(void *dev_id)
|
|
|
current_SC->SCp.phase = data_in;
|
|
|
VDEB(printk("NCR53c406a: Data-In phase\n"));
|
|
|
outb(FLUSH_FIFO, CMD_REG);
|
|
|
- LOAD_DMA_COUNT(current_SC->request_bufflen); /* Max transfer size */
|
|
|
+ LOAD_DMA_COUNT(scsi_bufflen(current_SC)); /* Max transfer size */
|
|
|
#if USE_DMA /* No s/g support for DMA */
|
|
|
- NCR53c406a_dma_read(current_SC->request_buffer, current_SC->request_bufflen);
|
|
|
+ NCR53c406a_dma_read(scsi_sglist(current_SC),
|
|
|
+ scsdi_bufflen(current_SC));
|
|
|
#endif /* USE_DMA */
|
|
|
outb(TRANSFER_INFO | DMA_OP, CMD_REG);
|
|
|
#if USE_PIO
|
|
|
- if (!current_SC->use_sg) /* Don't use scatter-gather */
|
|
|
- NCR53c406a_pio_read(current_SC->request_buffer, current_SC->request_bufflen);
|
|
|
- else { /* Use scatter-gather */
|
|
|
- sgcount = current_SC->use_sg;
|
|
|
- sglist = current_SC->request_buffer;
|
|
|
- while (sgcount--) {
|
|
|
- NCR53c406a_pio_read(page_address(sglist->page) + sglist->offset, sglist->length);
|
|
|
- sglist++;
|
|
|
- }
|
|
|
- }
|
|
|
+ scsi_for_each_sg(current_SC, sg, scsi_sg_count(current_SC), i) {
|
|
|
+ NCR53c406a_pio_read(page_address(sg->page) + sg->offset,
|
|
|
+ sg->length);
|
|
|
+ }
|
|
|
REG0;
|
|
|
#endif /* USE_PIO */
|
|
|
}
|