Loading drivers/scsi/53c700.c +14 −6 Original line number Diff line number Diff line Loading @@ -269,18 +269,25 @@ NCR_700_get_SXFER(struct scsi_device *SDp) spi_period(SDp->sdev_target)); } static inline dma_addr_t virt_to_dma(struct NCR_700_Host_Parameters *h, void *p) { return h->pScript + ((uintptr_t)p - (uintptr_t)h->script); } static inline void dma_sync_to_dev(struct NCR_700_Host_Parameters *h, void *addr, size_t size) { if (h->noncoherent) dma_cache_sync(h->dev, addr, size, DMA_TO_DEVICE); dma_sync_single_for_device(h->dev, virt_to_dma(h, addr), size, DMA_BIDIRECTIONAL); } static inline void dma_sync_from_dev(struct NCR_700_Host_Parameters *h, void *addr, size_t size) { if (h->noncoherent) dma_cache_sync(h->dev, addr, size, DMA_FROM_DEVICE); dma_sync_single_for_device(h->dev, virt_to_dma(h, addr), size, DMA_BIDIRECTIONAL); } struct Scsi_Host * Loading @@ -300,8 +307,8 @@ NCR_700_detect(struct scsi_host_template *tpnt, memory = dma_alloc_coherent(dev, TOTAL_MEM_SIZE, &pScript, GFP_KERNEL); if (!memory) { hostdata->noncoherent = 1; memory = dma_alloc_attrs(dev, TOTAL_MEM_SIZE, &pScript, GFP_KERNEL, DMA_ATTR_NON_CONSISTENT); memory = dma_alloc_noncoherent(dev, TOTAL_MEM_SIZE, &pScript, DMA_BIDIRECTIONAL, GFP_KERNEL); } if (!memory) { printk(KERN_ERR "53c700: Failed to allocate memory for driver, detaching\n"); Loading Loading @@ -414,8 +421,9 @@ NCR_700_release(struct Scsi_Host *host) (struct NCR_700_Host_Parameters *)host->hostdata[0]; if (hostdata->noncoherent) dma_free_attrs(hostdata->dev, TOTAL_MEM_SIZE, hostdata->script, hostdata->pScript, DMA_ATTR_NON_CONSISTENT); dma_free_noncoherent(hostdata->dev, TOTAL_MEM_SIZE, hostdata->script, hostdata->pScript, DMA_BIDIRECTIONAL); else dma_free_coherent(hostdata->dev, TOTAL_MEM_SIZE, hostdata->script, hostdata->pScript); Loading Loading
drivers/scsi/53c700.c +14 −6 Original line number Diff line number Diff line Loading @@ -269,18 +269,25 @@ NCR_700_get_SXFER(struct scsi_device *SDp) spi_period(SDp->sdev_target)); } static inline dma_addr_t virt_to_dma(struct NCR_700_Host_Parameters *h, void *p) { return h->pScript + ((uintptr_t)p - (uintptr_t)h->script); } static inline void dma_sync_to_dev(struct NCR_700_Host_Parameters *h, void *addr, size_t size) { if (h->noncoherent) dma_cache_sync(h->dev, addr, size, DMA_TO_DEVICE); dma_sync_single_for_device(h->dev, virt_to_dma(h, addr), size, DMA_BIDIRECTIONAL); } static inline void dma_sync_from_dev(struct NCR_700_Host_Parameters *h, void *addr, size_t size) { if (h->noncoherent) dma_cache_sync(h->dev, addr, size, DMA_FROM_DEVICE); dma_sync_single_for_device(h->dev, virt_to_dma(h, addr), size, DMA_BIDIRECTIONAL); } struct Scsi_Host * Loading @@ -300,8 +307,8 @@ NCR_700_detect(struct scsi_host_template *tpnt, memory = dma_alloc_coherent(dev, TOTAL_MEM_SIZE, &pScript, GFP_KERNEL); if (!memory) { hostdata->noncoherent = 1; memory = dma_alloc_attrs(dev, TOTAL_MEM_SIZE, &pScript, GFP_KERNEL, DMA_ATTR_NON_CONSISTENT); memory = dma_alloc_noncoherent(dev, TOTAL_MEM_SIZE, &pScript, DMA_BIDIRECTIONAL, GFP_KERNEL); } if (!memory) { printk(KERN_ERR "53c700: Failed to allocate memory for driver, detaching\n"); Loading Loading @@ -414,8 +421,9 @@ NCR_700_release(struct Scsi_Host *host) (struct NCR_700_Host_Parameters *)host->hostdata[0]; if (hostdata->noncoherent) dma_free_attrs(hostdata->dev, TOTAL_MEM_SIZE, hostdata->script, hostdata->pScript, DMA_ATTR_NON_CONSISTENT); dma_free_noncoherent(hostdata->dev, TOTAL_MEM_SIZE, hostdata->script, hostdata->pScript, DMA_BIDIRECTIONAL); else dma_free_coherent(hostdata->dev, TOTAL_MEM_SIZE, hostdata->script, hostdata->pScript); Loading