forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-13 9d77db3c730780c8ef5ccd4b66403ff5675cfe4e
kernel/drivers/scsi/aic94xx/aic94xx_task.c
....@@ -1,27 +1,9 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * Aic94xx SAS/SATA Tasks
34 *
45 * Copyright (C) 2005 Adaptec, Inc. All rights reserved.
56 * Copyright (C) 2005 Luben Tuikov <luben_tuikov@adaptec.com>
6
- *
7
- * This file is licensed under GPLv2.
8
- *
9
- * This file is part of the aic94xx driver.
10
- *
11
- * The aic94xx driver is free software; you can redistribute it and/or
12
- * modify it under the terms of the GNU General Public License as
13
- * published by the Free Software Foundation; version 2 of the
14
- * License.
15
- *
16
- * The aic94xx driver is distributed in the hope that it will be useful,
17
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19
- * General Public License for more details.
20
- *
21
- * You should have received a copy of the GNU General Public License
22
- * along with the aic94xx driver; if not, write to the Free Software
23
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
24
- *
257 */
268
279 #include <linux/spinlock.h>
....@@ -42,13 +24,13 @@
4224 spin_unlock_irqrestore(&asd_ha->seq.pend_q_lock, flags);
4325 }
4426
45
-/* PCI_DMA_... to our direction translation.
27
+/* DMA_... to our direction translation.
4628 */
4729 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 */
30
+ [DMA_BIDIRECTIONAL] = DATA_DIR_BYRECIPIENT, /* UNSPECIFIED */
31
+ [DMA_TO_DEVICE] = DATA_DIR_OUT, /* OUTBOUND */
32
+ [DMA_FROM_DEVICE] = DATA_DIR_IN, /* INBOUND */
33
+ [DMA_NONE] = DATA_DIR_NONE, /* NO TRANSFER */
5234 };
5335
5436 static int asd_map_scatterlist(struct sas_task *task,
....@@ -60,14 +42,17 @@
6042 struct scatterlist *sc;
6143 int num_sg, res;
6244
63
- if (task->data_dir == PCI_DMA_NONE)
45
+ if (task->data_dir == DMA_NONE)
6446 return 0;
6547
6648 if (task->num_scatter == 0) {
6749 void *p = task->scatter;
68
- dma_addr_t dma = pci_map_single(asd_ha->pcidev, p,
50
+ dma_addr_t dma = dma_map_single(&asd_ha->pcidev->dev, p,
6951 task->total_xfer_len,
7052 task->data_dir);
53
+ if (dma_mapping_error(&asd_ha->pcidev->dev, dma))
54
+ return -ENOMEM;
55
+
7156 sg_arr[0].bus_addr = cpu_to_le64((u64)dma);
7257 sg_arr[0].size = cpu_to_le32(task->total_xfer_len);
7358 sg_arr[0].flags |= ASD_SG_EL_LIST_EOL;
....@@ -79,7 +64,7 @@
7964 if (sas_protocol_ata(task->task_proto))
8065 num_sg = task->num_scatter;
8166 else
82
- num_sg = pci_map_sg(asd_ha->pcidev, task->scatter,
67
+ num_sg = dma_map_sg(&asd_ha->pcidev->dev, task->scatter,
8368 task->num_scatter, task->data_dir);
8469 if (num_sg == 0)
8570 return -ENOMEM;
....@@ -126,8 +111,8 @@
126111 return 0;
127112 err_unmap:
128113 if (sas_protocol_ata(task->task_proto))
129
- pci_unmap_sg(asd_ha->pcidev, task->scatter, task->num_scatter,
130
- task->data_dir);
114
+ dma_unmap_sg(&asd_ha->pcidev->dev, task->scatter,
115
+ task->num_scatter, task->data_dir);
131116 return res;
132117 }
133118
....@@ -136,21 +121,21 @@
136121 struct asd_ha_struct *asd_ha = ascb->ha;
137122 struct sas_task *task = ascb->uldd_task;
138123
139
- if (task->data_dir == PCI_DMA_NONE)
124
+ if (task->data_dir == DMA_NONE)
140125 return;
141126
142127 if (task->num_scatter == 0) {
143128 dma_addr_t dma = (dma_addr_t)
144129 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);
130
+ dma_unmap_single(&ascb->ha->pcidev->dev, dma,
131
+ task->total_xfer_len, task->data_dir);
147132 return;
148133 }
149134
150135 asd_free_coherent(asd_ha, ascb->sg_arr);
151136 if (task->task_proto != SAS_PROTOCOL_STP)
152
- pci_unmap_sg(asd_ha->pcidev, task->scatter, task->num_scatter,
153
- task->data_dir);
137
+ dma_unmap_sg(&asd_ha->pcidev->dev, task->scatter,
138
+ task->num_scatter, task->data_dir);
154139 }
155140
156141 /* ---------- Task complete tasklet ---------- */
....@@ -223,7 +208,7 @@
223208 switch (opcode) {
224209 case TC_NO_ERROR:
225210 ts->resp = SAS_TASK_COMPLETE;
226
- ts->stat = SAM_STAT_GOOD;
211
+ ts->stat = SAS_SAM_STAT_GOOD;
227212 break;
228213 case TC_UNDERRUN:
229214 ts->resp = SAS_TASK_COMPLETE;
....@@ -436,10 +421,10 @@
436421 struct domain_device *dev = task->dev;
437422 struct scb *scb;
438423
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);
424
+ dma_map_sg(&asd_ha->pcidev->dev, &task->smp_task.smp_req, 1,
425
+ DMA_TO_DEVICE);
426
+ dma_map_sg(&asd_ha->pcidev->dev, &task->smp_task.smp_resp, 1,
427
+ DMA_FROM_DEVICE);
443428
444429 scb = ascb->scb;
445430
....@@ -471,10 +456,10 @@
471456 struct sas_task *task = a->uldd_task;
472457
473458 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);
459
+ dma_unmap_sg(&a->ha->pcidev->dev, &task->smp_task.smp_req, 1,
460
+ DMA_TO_DEVICE);
461
+ dma_unmap_sg(&a->ha->pcidev->dev, &task->smp_task.smp_resp, 1,
462
+ DMA_FROM_DEVICE);
478463 }
479464
480465 /* ---------- SSP ---------- */