Skip to content

Commit 3a21986

Browse files
Christoph Hellwigmartinkpetersen
authored andcommitted
scsi: aic94xx: 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> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
1 parent 8c6f803 commit 3a21986

File tree

2 files changed

+25
-30
lines changed

2 files changed

+25
-30
lines changed

drivers/scsi/aic94xx/aic94xx_init.c

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -771,13 +771,8 @@ static int asd_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
771771
goto Err_remove;
772772

773773
err = -ENODEV;
774-
if (!pci_set_dma_mask(dev, DMA_BIT_MASK(64))
775-
&& !pci_set_consistent_dma_mask(dev, DMA_BIT_MASK(64)))
776-
;
777-
else if (!pci_set_dma_mask(dev, DMA_BIT_MASK(32))
778-
&& !pci_set_consistent_dma_mask(dev, DMA_BIT_MASK(32)))
779-
;
780-
else {
774+
if (dma_set_mask_and_coherent(&dev->dev, DMA_BIT_MASK(64)) ||
775+
dma_set_mask_and_coherent(&dev->dev, DMA_BIT_MASK(32))) {
781776
asd_printk("no suitable DMA mask for %s\n", pci_name(dev));
782777
goto Err_remove;
783778
}

drivers/scsi/aic94xx/aic94xx_task.c

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,13 @@ static void asd_can_dequeue(struct asd_ha_struct *asd_ha, int num)
4242
spin_unlock_irqrestore(&asd_ha->seq.pend_q_lock, flags);
4343
}
4444

45-
/* PCI_DMA_... to our direction translation.
45+
/* DMA_... to our direction translation.
4646
*/
4747
static const u8 data_dir_flags[] = {
48-
[PCI_DMA_BIDIRECTIONAL] = DATA_DIR_BYRECIPIENT, /* UNSPECIFIED */
49-
[PCI_DMA_TODEVICE] = DATA_DIR_OUT, /* OUTBOUND */
50-
[PCI_DMA_FROMDEVICE] = DATA_DIR_IN, /* INBOUND */
51-
[PCI_DMA_NONE] = DATA_DIR_NONE, /* NO TRANSFER */
48+
[DMA_BIDIRECTIONAL] = DATA_DIR_BYRECIPIENT, /* UNSPECIFIED */
49+
[DMA_TO_DEVICE] = DATA_DIR_OUT, /* OUTBOUND */
50+
[DMA_FROM_DEVICE] = DATA_DIR_IN, /* INBOUND */
51+
[DMA_NONE] = DATA_DIR_NONE, /* NO TRANSFER */
5252
};
5353

5454
static int asd_map_scatterlist(struct sas_task *task,
@@ -60,12 +60,12 @@ static int asd_map_scatterlist(struct sas_task *task,
6060
struct scatterlist *sc;
6161
int num_sg, res;
6262

63-
if (task->data_dir == PCI_DMA_NONE)
63+
if (task->data_dir == DMA_NONE)
6464
return 0;
6565

6666
if (task->num_scatter == 0) {
6767
void *p = task->scatter;
68-
dma_addr_t dma = pci_map_single(asd_ha->pcidev, p,
68+
dma_addr_t dma = dma_map_single(&asd_ha->pcidev->dev, p,
6969
task->total_xfer_len,
7070
task->data_dir);
7171
sg_arr[0].bus_addr = cpu_to_le64((u64)dma);
@@ -79,7 +79,7 @@ static int asd_map_scatterlist(struct sas_task *task,
7979
if (sas_protocol_ata(task->task_proto))
8080
num_sg = task->num_scatter;
8181
else
82-
num_sg = pci_map_sg(asd_ha->pcidev, task->scatter,
82+
num_sg = dma_map_sg(&asd_ha->pcidev->dev, task->scatter,
8383
task->num_scatter, task->data_dir);
8484
if (num_sg == 0)
8585
return -ENOMEM;
@@ -126,8 +126,8 @@ static int asd_map_scatterlist(struct sas_task *task,
126126
return 0;
127127
err_unmap:
128128
if (sas_protocol_ata(task->task_proto))
129-
pci_unmap_sg(asd_ha->pcidev, task->scatter, task->num_scatter,
130-
task->data_dir);
129+
dma_unmap_sg(&asd_ha->pcidev->dev, task->scatter,
130+
task->num_scatter, task->data_dir);
131131
return res;
132132
}
133133

@@ -136,21 +136,21 @@ static void asd_unmap_scatterlist(struct asd_ascb *ascb)
136136
struct asd_ha_struct *asd_ha = ascb->ha;
137137
struct sas_task *task = ascb->uldd_task;
138138

139-
if (task->data_dir == PCI_DMA_NONE)
139+
if (task->data_dir == DMA_NONE)
140140
return;
141141

142142
if (task->num_scatter == 0) {
143143
dma_addr_t dma = (dma_addr_t)
144144
le64_to_cpu(ascb->scb->ssp_task.sg_element[0].bus_addr);
145-
pci_unmap_single(ascb->ha->pcidev, dma, task->total_xfer_len,
146-
task->data_dir);
145+
dma_unmap_single(&ascb->ha->pcidev->dev, dma,
146+
task->total_xfer_len, task->data_dir);
147147
return;
148148
}
149149

150150
asd_free_coherent(asd_ha, ascb->sg_arr);
151151
if (task->task_proto != SAS_PROTOCOL_STP)
152-
pci_unmap_sg(asd_ha->pcidev, task->scatter, task->num_scatter,
153-
task->data_dir);
152+
dma_unmap_sg(&asd_ha->pcidev->dev, task->scatter,
153+
task->num_scatter, task->data_dir);
154154
}
155155

156156
/* ---------- Task complete tasklet ---------- */
@@ -436,10 +436,10 @@ static int asd_build_smp_ascb(struct asd_ascb *ascb, struct sas_task *task,
436436
struct domain_device *dev = task->dev;
437437
struct scb *scb;
438438

439-
pci_map_sg(asd_ha->pcidev, &task->smp_task.smp_req, 1,
440-
PCI_DMA_TODEVICE);
441-
pci_map_sg(asd_ha->pcidev, &task->smp_task.smp_resp, 1,
442-
PCI_DMA_FROMDEVICE);
439+
dma_map_sg(&asd_ha->pcidev->dev, &task->smp_task.smp_req, 1,
440+
DMA_TO_DEVICE);
441+
dma_map_sg(&asd_ha->pcidev->dev, &task->smp_task.smp_resp, 1,
442+
DMA_FROM_DEVICE);
443443

444444
scb = ascb->scb;
445445

@@ -471,10 +471,10 @@ static void asd_unbuild_smp_ascb(struct asd_ascb *a)
471471
struct sas_task *task = a->uldd_task;
472472

473473
BUG_ON(!task);
474-
pci_unmap_sg(a->ha->pcidev, &task->smp_task.smp_req, 1,
475-
PCI_DMA_TODEVICE);
476-
pci_unmap_sg(a->ha->pcidev, &task->smp_task.smp_resp, 1,
477-
PCI_DMA_FROMDEVICE);
474+
dma_unmap_sg(&a->ha->pcidev->dev, &task->smp_task.smp_req, 1,
475+
DMA_TO_DEVICE);
476+
dma_unmap_sg(&a->ha->pcidev->dev, &task->smp_task.smp_resp, 1,
477+
DMA_FROM_DEVICE);
478478
}
479479

480480
/* ---------- SSP ---------- */

0 commit comments

Comments
 (0)