--- drivers/scsi/NCR53C9x.c | 43 +++++++++++++------------------------------ drivers/scsi/oktagon_esp.c | 8 -------- drivers/scsi/sun3x_esp.c | 6 +++--- 3 files changed, 16 insertions(+), 41 deletions(-) --- a/drivers/scsi/NCR53C9x.c +++ b/drivers/scsi/NCR53C9x.c @@ -910,36 +910,20 @@ EXPORT_SYMBOL(esp_proc_info); static void esp_get_dmabufs(struct NCR_ESP *esp, Scsi_Cmnd *sp) { - if(sp->use_sg == 0) { - sp->SCp.this_residual = sp->request_bufflen; - sp->SCp.buffer = (struct scatterlist *) sp->request_buffer; - sp->SCp.buffers_residual = 0; - if (esp->dma_mmu_get_scsi_one) - esp->dma_mmu_get_scsi_one(esp, sp); - else - sp->SCp.ptr = - (char *) virt_to_phys(sp->request_buffer); - } else { - sp->SCp.buffer = (struct scatterlist *) sp->request_buffer; - sp->SCp.buffers_residual = sp->use_sg - 1; - sp->SCp.this_residual = sp->SCp.buffer->length; - if (esp->dma_mmu_get_scsi_sgl) - esp->dma_mmu_get_scsi_sgl(esp, sp); - else - sp->SCp.ptr = - (char *) virt_to_phys(sg_virt(sp->SCp.buffer)); - } + sp->SCp.buffer = scsi_sglist(sp); + sp->SCp.buffers_residual = scsi_sg_count(sp) - 1; + sp->SCp.this_residual = sp->SCp.buffer->length; + if (esp->dma_mmu_get_scsi_sgl) + esp->dma_mmu_get_scsi_sgl(esp, sp); + else + sp->SCp.ptr = + (char *) virt_to_phys(sg_virt(sp->SCp.buffer)); } static void esp_release_dmabufs(struct NCR_ESP *esp, Scsi_Cmnd *sp) { - if(sp->use_sg == 0) { - if (esp->dma_mmu_release_scsi_one) - esp->dma_mmu_release_scsi_one(esp, sp); - } else { - if (esp->dma_mmu_release_scsi_sgl) - esp->dma_mmu_release_scsi_sgl(esp, sp); - } + if (esp->dma_mmu_release_scsi_sgl) + esp->dma_mmu_release_scsi_sgl(esp, sp); } static void esp_restore_pointers(struct NCR_ESP *esp, Scsi_Cmnd *sp) @@ -2102,10 +2086,9 @@ static int esp_do_data_finale(struct NCR ESPLOG(("esp%d: csz=%d fifocount=%d ecount=%d\n", esp->esp_id, esp->current_transfer_size, fifocnt, ecount)); - ESPLOG(("esp%d: use_sg=%d ptr=%p this_residual=%d\n", - esp->esp_id, - SCptr->use_sg, SCptr->SCp.ptr, SCptr->SCp.this_residual)); - ESPLOG(("esp%d: Forcing async for target %d\n", esp->esp_id, + ESPLOG(("esp%d: ptr=%p this_residual=%d\n", esp->esp_id, + SCptr->SCp.ptr, SCptr->SCp.this_residual)); + ESPLOG(("esp%d: Forcing async for target %d\n", esp->esp_id, SCptr->device->id)); SCptr->device->borken = 1; esp_dev->sync = 0; --- a/drivers/scsi/oktagon_esp.c +++ b/drivers/scsi/oktagon_esp.c @@ -64,7 +64,6 @@ static void dma_setup(struct NCR_ESP *es static void dma_irq_exit(struct NCR_ESP *esp); static void dma_invalidate(struct NCR_ESP *esp); -static void dma_mmu_get_scsi_one(struct NCR_ESP *,Scsi_Cmnd *); static void dma_mmu_get_scsi_sgl(struct NCR_ESP *,Scsi_Cmnd *); static void dma_mmu_release_scsi_one(struct NCR_ESP *,Scsi_Cmnd *); static void dma_mmu_release_scsi_sgl(struct NCR_ESP *,Scsi_Cmnd *); @@ -169,7 +168,6 @@ int oktagon_esp_detect(struct scsi_host_ esp->dma_poll = 0; esp->dma_reset = 0; - esp->dma_mmu_get_scsi_one = &dma_mmu_get_scsi_one; esp->dma_mmu_get_scsi_sgl = &dma_mmu_get_scsi_sgl; esp->dma_mmu_release_scsi_one = &dma_mmu_release_scsi_one; esp->dma_mmu_release_scsi_sgl = &dma_mmu_release_scsi_sgl; @@ -542,12 +540,6 @@ static void dma_invalidate(struct NCR_ES * mmu interface to pass the virtual address, not the physical. */ -void dma_mmu_get_scsi_one(struct NCR_ESP *esp, Scsi_Cmnd *sp) -{ - sp->SCp.ptr = - sp->request_buffer; -} - void dma_mmu_get_scsi_sgl(struct NCR_ESP *esp, Scsi_Cmnd *sp) { sp->SCp.ptr = sg_virt(sp->SCp.buffer); --- a/drivers/scsi/sun3x_esp.c +++ b/drivers/scsi/sun3x_esp.c @@ -346,9 +346,9 @@ static void dma_mmu_release_scsi_one (st static void dma_mmu_release_scsi_sgl (struct NCR_ESP *esp, Scsi_Cmnd *sp) { - int sz = sp->use_sg - 1; - struct scatterlist *sg = (struct scatterlist *)sp->request_buffer; - + int sz = scsi_sg_count(sp) - 1; + struct scatterlist *sg = scsi_sglist(sp); + while(sz >= 0) { dvma_unmap((char *)sg[sz].dma_address); sz--;