summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2018-10-10 11:58:50 -0400
committerMartin K. Petersen <martin.petersen@oracle.com>2018-10-17 21:58:51 -0400
commitbd6cf46b046fd4bbfec128617600e85c431d2853 (patch)
treee419c34dacc69735b33cd5982177bb8c4428c69b
parentb000bced57395e4f2f6a48d7b4b9cb2b2517bdfc (diff)
scsi: 3w-xxx: fully convert to the generic DMA API
The driver is currently using an odd mix of legacy PCI DMA API and generic DMA API calls, switch it over to the generic API entirely. Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Adam Radford <aradford@gmail.com> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-rw-r--r--drivers/scsi/3w-xxxx.c20
-rw-r--r--drivers/scsi/3w-xxxx.h1
2 files changed, 14 insertions, 7 deletions
diff --git a/drivers/scsi/3w-xxxx.c b/drivers/scsi/3w-xxxx.c
index 471366945bd4..a58257645e94 100644
--- a/drivers/scsi/3w-xxxx.c
+++ b/drivers/scsi/3w-xxxx.c
@@ -834,15 +834,17 @@ static int tw_allocate_memory(TW_Device_Extension *tw_dev, int size, int which)
834 834
835 dprintk(KERN_NOTICE "3w-xxxx: tw_allocate_memory()\n"); 835 dprintk(KERN_NOTICE "3w-xxxx: tw_allocate_memory()\n");
836 836
837 cpu_addr = pci_alloc_consistent(tw_dev->tw_pci_dev, size*TW_Q_LENGTH, &dma_handle); 837 cpu_addr = dma_alloc_coherent(&tw_dev->tw_pci_dev->dev,
838 size * TW_Q_LENGTH, &dma_handle, GFP_KERNEL);
838 if (cpu_addr == NULL) { 839 if (cpu_addr == NULL) {
839 printk(KERN_WARNING "3w-xxxx: pci_alloc_consistent() failed.\n"); 840 printk(KERN_WARNING "3w-xxxx: dma_alloc_coherent() failed.\n");
840 return 1; 841 return 1;
841 } 842 }
842 843
843 if ((unsigned long)cpu_addr % (tw_dev->tw_pci_dev->device == TW_DEVICE_ID ? TW_ALIGNMENT_6000 : TW_ALIGNMENT_7000)) { 844 if ((unsigned long)cpu_addr % (tw_dev->tw_pci_dev->device == TW_DEVICE_ID ? TW_ALIGNMENT_6000 : TW_ALIGNMENT_7000)) {
844 printk(KERN_WARNING "3w-xxxx: Couldn't allocate correctly aligned memory.\n"); 845 printk(KERN_WARNING "3w-xxxx: Couldn't allocate correctly aligned memory.\n");
845 pci_free_consistent(tw_dev->tw_pci_dev, size*TW_Q_LENGTH, cpu_addr, dma_handle); 846 dma_free_coherent(&tw_dev->tw_pci_dev->dev, size * TW_Q_LENGTH,
847 cpu_addr, dma_handle);
846 return 1; 848 return 1;
847 } 849 }
848 850
@@ -1062,10 +1064,16 @@ static void tw_free_device_extension(TW_Device_Extension *tw_dev)
1062 1064
1063 /* Free command packet and generic buffer memory */ 1065 /* Free command packet and generic buffer memory */
1064 if (tw_dev->command_packet_virtual_address[0]) 1066 if (tw_dev->command_packet_virtual_address[0])
1065 pci_free_consistent(tw_dev->tw_pci_dev, sizeof(TW_Command)*TW_Q_LENGTH, tw_dev->command_packet_virtual_address[0], tw_dev->command_packet_physical_address[0]); 1067 dma_free_coherent(&tw_dev->tw_pci_dev->dev,
1068 sizeof(TW_Command) * TW_Q_LENGTH,
1069 tw_dev->command_packet_virtual_address[0],
1070 tw_dev->command_packet_physical_address[0]);
1066 1071
1067 if (tw_dev->alignment_virtual_address[0]) 1072 if (tw_dev->alignment_virtual_address[0])
1068 pci_free_consistent(tw_dev->tw_pci_dev, sizeof(TW_Sector)*TW_Q_LENGTH, tw_dev->alignment_virtual_address[0], tw_dev->alignment_physical_address[0]); 1073 dma_free_coherent(&tw_dev->tw_pci_dev->dev,
1074 sizeof(TW_Sector) * TW_Q_LENGTH,
1075 tw_dev->alignment_virtual_address[0],
1076 tw_dev->alignment_physical_address[0]);
1069} /* End tw_free_device_extension() */ 1077} /* End tw_free_device_extension() */
1070 1078
1071/* This function will send an initconnection command to controller */ 1079/* This function will send an initconnection command to controller */
@@ -2260,7 +2268,7 @@ static int tw_probe(struct pci_dev *pdev, const struct pci_device_id *dev_id)
2260 2268
2261 pci_set_master(pdev); 2269 pci_set_master(pdev);
2262 2270
2263 retval = pci_set_dma_mask(pdev, TW_DMA_MASK); 2271 retval = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
2264 if (retval) { 2272 if (retval) {
2265 printk(KERN_WARNING "3w-xxxx: Failed to set dma mask."); 2273 printk(KERN_WARNING "3w-xxxx: Failed to set dma mask.");
2266 goto out_disable_device; 2274 goto out_disable_device;
diff --git a/drivers/scsi/3w-xxxx.h b/drivers/scsi/3w-xxxx.h
index 69e80c1ed1ca..bd87fbacfbc7 100644
--- a/drivers/scsi/3w-xxxx.h
+++ b/drivers/scsi/3w-xxxx.h
@@ -230,7 +230,6 @@ static unsigned char tw_sense_table[][4] =
230#define TW_IOCTL_TIMEOUT 25 /* 25 seconds */ 230#define TW_IOCTL_TIMEOUT 25 /* 25 seconds */
231#define TW_IOCTL_CHRDEV_TIMEOUT 60 /* 60 seconds */ 231#define TW_IOCTL_CHRDEV_TIMEOUT 60 /* 60 seconds */
232#define TW_IOCTL_CHRDEV_FREE -1 232#define TW_IOCTL_CHRDEV_FREE -1
233#define TW_DMA_MASK DMA_BIT_MASK(32)
234#define TW_MAX_CDB_LEN 16 233#define TW_MAX_CDB_LEN 16
235 234
236/* Bitmask macros to eliminate bitfields */ 235/* Bitmask macros to eliminate bitfields */