]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
scsi: 3w-9xxx: fully convert to the generic DMA API
authorChristoph Hellwig <hch@lst.de>
Wed, 10 Oct 2018 15:53:41 +0000 (17:53 +0200)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 18 Oct 2018 01:58:51 +0000 (21:58 -0400)
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>
drivers/scsi/3w-9xxx.c

index 27521fc3ef5abc4008d617862dcb1ca473ed925d..05293babb03106ebc2e7bb231c57967b77050823 100644 (file)
@@ -518,7 +518,8 @@ static int twa_allocate_memory(TW_Device_Extension *tw_dev, int size, int which)
        unsigned long *cpu_addr;
        int retval = 1;
 
-       cpu_addr = pci_alloc_consistent(tw_dev->tw_pci_dev, size*TW_Q_LENGTH, &dma_handle);
+       cpu_addr = dma_alloc_coherent(&tw_dev->tw_pci_dev->dev,
+                       size * TW_Q_LENGTH, &dma_handle, GFP_KERNEL);
        if (!cpu_addr) {
                TW_PRINTK(tw_dev->host, TW_DRIVER, 0x5, "Memory allocation failed");
                goto out;
@@ -526,7 +527,8 @@ static int twa_allocate_memory(TW_Device_Extension *tw_dev, int size, int which)
 
        if ((unsigned long)cpu_addr % (TW_ALIGNMENT_9000)) {
                TW_PRINTK(tw_dev->host, TW_DRIVER, 0x6, "Failed to allocate correctly aligned memory");
-               pci_free_consistent(tw_dev->tw_pci_dev, size*TW_Q_LENGTH, cpu_addr, dma_handle);
+               dma_free_coherent(&tw_dev->tw_pci_dev->dev, size * TW_Q_LENGTH,
+                               cpu_addr, dma_handle);
                goto out;
        }
 
@@ -1027,16 +1029,16 @@ static int twa_fill_sense(TW_Device_Extension *tw_dev, int request_id, int copy_
 static void twa_free_device_extension(TW_Device_Extension *tw_dev)
 {
        if (tw_dev->command_packet_virt[0])
-               pci_free_consistent(tw_dev->tw_pci_dev,
-                                   sizeof(TW_Command_Full)*TW_Q_LENGTH,
-                                   tw_dev->command_packet_virt[0],
-                                   tw_dev->command_packet_phys[0]);
+               dma_free_coherent(&tw_dev->tw_pci_dev->dev,
+                               sizeof(TW_Command_Full) * TW_Q_LENGTH,
+                               tw_dev->command_packet_virt[0],
+                               tw_dev->command_packet_phys[0]);
 
        if (tw_dev->generic_buffer_virt[0])
-               pci_free_consistent(tw_dev->tw_pci_dev,
-                                   TW_SECTOR_SIZE*TW_Q_LENGTH,
-                                   tw_dev->generic_buffer_virt[0],
-                                   tw_dev->generic_buffer_phys[0]);
+               dma_free_coherent(&tw_dev->tw_pci_dev->dev,
+                               TW_SECTOR_SIZE * TW_Q_LENGTH,
+                               tw_dev->generic_buffer_virt[0],
+                               tw_dev->generic_buffer_phys[0]);
 
        kfree(tw_dev->event_queue[0]);
 } /* End twa_free_device_extension() */
@@ -2015,14 +2017,12 @@ static int twa_probe(struct pci_dev *pdev, const struct pci_device_id *dev_id)
        pci_set_master(pdev);
        pci_try_set_mwi(pdev);
 
-       if (pci_set_dma_mask(pdev, DMA_BIT_MASK(64))
-           || pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)))
-               if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32))
-                   || pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32))) {
-                       TW_PRINTK(host, TW_DRIVER, 0x23, "Failed to set dma mask");
-                       retval = -ENODEV;
-                       goto out_disable_device;
-               }
+       if (dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64)) ||
+           dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32))) {
+               TW_PRINTK(host, TW_DRIVER, 0x23, "Failed to set dma mask");
+               retval = -ENODEV;
+               goto out_disable_device;
+       }
 
        host = scsi_host_alloc(&driver_template, sizeof(TW_Device_Extension));
        if (!host) {
@@ -2237,14 +2237,12 @@ static int twa_resume(struct pci_dev *pdev)
        pci_set_master(pdev);
        pci_try_set_mwi(pdev);
 
-       if (pci_set_dma_mask(pdev, DMA_BIT_MASK(64))
-           || pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)))
-               if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32))
-                   || pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32))) {
-                       TW_PRINTK(host, TW_DRIVER, 0x40, "Failed to set dma mask during resume");
-                       retval = -ENODEV;
-                       goto out_disable_device;
-               }
+       if (dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64)) ||
+           dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32))) {
+               TW_PRINTK(host, TW_DRIVER, 0x40, "Failed to set dma mask during resume");
+               retval = -ENODEV;
+               goto out_disable_device;
+       }
 
        /* Initialize the card */
        if (twa_reset_sequence(tw_dev, 0)) {