mirror of https://gitee.com/openkylin/linux.git
scsi: 3w-9xxx: 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>
This commit is contained in:
parent
3a21986f1a
commit
b000bced57
|
@ -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)) {
|
||||
|
|
Loading…
Reference in New Issue