@@ -138,6 +138,12 @@ static void *__dma_alloc(struct device *dev, size_t size,
138
138
return NULL ;
139
139
}
140
140
141
+ void * arm64_dma_alloc (struct device * dev , size_t size , dma_addr_t * handle ,
142
+ gfp_t gfp , unsigned long attrs )
143
+ {
144
+ return __dma_alloc (dev , size , handle , gfp , attrs );
145
+ }
146
+
141
147
static void __dma_free (struct device * dev , size_t size ,
142
148
void * vaddr , dma_addr_t dma_handle ,
143
149
unsigned long attrs )
@@ -154,6 +160,12 @@ static void __dma_free(struct device *dev, size_t size,
154
160
swiotlb_free (dev , size , swiotlb_addr , dma_handle , attrs );
155
161
}
156
162
163
+ void arm64_dma_free (struct device * dev , size_t size , void * cpu_addr ,
164
+ dma_addr_t handle , unsigned long attrs )
165
+ {
166
+ __dma_free (dev , size , cpu_addr , handle , attrs );
167
+ }
168
+
157
169
static dma_addr_t __swiotlb_map_page (struct device * dev , struct page * page ,
158
170
unsigned long offset , size_t size ,
159
171
enum dma_data_direction dir ,
@@ -197,6 +209,12 @@ static int __swiotlb_map_sg_attrs(struct device *dev, struct scatterlist *sgl,
197
209
return ret ;
198
210
}
199
211
212
+ int arm64_dma_map_sg (struct device * dev , struct scatterlist * sgl , int nelems ,
213
+ enum dma_data_direction dir , unsigned long attrs )
214
+ {
215
+ return __swiotlb_map_sg_attrs (dev , sgl , nelems , dir , attrs );
216
+ }
217
+
200
218
static void __swiotlb_unmap_sg_attrs (struct device * dev ,
201
219
struct scatterlist * sgl , int nelems ,
202
220
enum dma_data_direction dir ,
@@ -213,6 +231,12 @@ static void __swiotlb_unmap_sg_attrs(struct device *dev,
213
231
swiotlb_unmap_sg_attrs (dev , sgl , nelems , dir , attrs );
214
232
}
215
233
234
+ void arm64_dma_unmap_sg (struct device * dev , struct scatterlist * sgl , int nelems ,
235
+ enum dma_data_direction dir , unsigned long attrs )
236
+ {
237
+ __swiotlb_unmap_sg_attrs (dev , sgl , nelems , dir , attrs );
238
+ }
239
+
216
240
static void __swiotlb_sync_single_for_cpu (struct device * dev ,
217
241
dma_addr_t dev_addr , size_t size ,
218
242
enum dma_data_direction dir )
@@ -245,6 +269,12 @@ static void __swiotlb_sync_sg_for_cpu(struct device *dev,
245
269
swiotlb_sync_sg_for_cpu (dev , sgl , nelems , dir );
246
270
}
247
271
272
+ void arm64_dma_sync_sg_for_cpu (struct device * dev , struct scatterlist * sgl , int nelems ,
273
+ enum dma_data_direction dir )
274
+ {
275
+ __swiotlb_sync_sg_for_cpu (dev , sgl , nelems , dir );
276
+ }
277
+
248
278
static void __swiotlb_sync_sg_for_device (struct device * dev ,
249
279
struct scatterlist * sgl , int nelems ,
250
280
enum dma_data_direction dir )
@@ -259,6 +289,12 @@ static void __swiotlb_sync_sg_for_device(struct device *dev,
259
289
sg -> length , dir );
260
290
}
261
291
292
+ void arm64_dma_sync_sg_for_device (struct device * dev , struct scatterlist * sgl , int nelems ,
293
+ enum dma_data_direction dir )
294
+ {
295
+ __swiotlb_sync_sg_for_device (dev , sgl , nelems , dir );
296
+ }
297
+
262
298
static int __swiotlb_mmap_pfn (struct vm_area_struct * vma ,
263
299
unsigned long pfn , size_t size )
264
300
{
@@ -294,6 +330,13 @@ static int __swiotlb_mmap(struct device *dev,
294
330
return __swiotlb_mmap_pfn (vma , pfn , size );
295
331
}
296
332
333
+ int arm64_dma_mmap (struct device * dev , struct vm_area_struct * vma ,
334
+ void * cpu_addr , dma_addr_t dma_addr , size_t size ,
335
+ unsigned long attrs )
336
+ {
337
+ return __swiotlb_mmap (dev , vma , cpu_addr , dma_addr , size , attrs );
338
+ }
339
+
297
340
static int __swiotlb_get_sgtable_page (struct sg_table * sgt ,
298
341
struct page * page , size_t size )
299
342
{
@@ -314,6 +357,13 @@ static int __swiotlb_get_sgtable(struct device *dev, struct sg_table *sgt,
314
357
return __swiotlb_get_sgtable_page (sgt , page , size );
315
358
}
316
359
360
+ int arm64_dma_get_sgtable (struct device * dev , struct sg_table * sgt ,
361
+ void * cpu_addr , dma_addr_t dma_addr , size_t size ,
362
+ unsigned long attrs )
363
+ {
364
+ return __swiotlb_get_sgtable (dev , sgt , cpu_addr , dma_addr , size , attrs );
365
+ }
366
+
317
367
static int __swiotlb_dma_supported (struct device * hwdev , u64 mask )
318
368
{
319
369
if (swiotlb )
0 commit comments