7
7
#include <linux/bitfield.h>
8
8
#include <linux/bitops.h>
9
9
#include <linux/dmaengine.h>
10
+ #include <linux/dma-mapping.h>
10
11
#include <linux/module.h>
11
12
#include <linux/mod_devicetable.h>
12
- #include <linux/dma-map-ops.h>
13
13
#include <linux/platform_device.h>
14
14
#include <linux/platform_data/amd_qdma.h>
15
15
#include <linux/regmap.h>
@@ -492,18 +492,9 @@ static int qdma_device_verify(struct qdma_device *qdev)
492
492
493
493
static int qdma_device_setup (struct qdma_device * qdev )
494
494
{
495
- struct device * dev = & qdev -> pdev -> dev ;
496
495
u32 ring_sz = QDMA_DEFAULT_RING_SIZE ;
497
496
int ret = 0 ;
498
497
499
- while (dev && get_dma_ops (dev ))
500
- dev = dev -> parent ;
501
- if (!dev ) {
502
- qdma_err (qdev , "dma device not found" );
503
- return - EINVAL ;
504
- }
505
- set_dma_ops (& qdev -> pdev -> dev , get_dma_ops (dev ));
506
-
507
498
ret = qdma_setup_fmap_context (qdev );
508
499
if (ret ) {
509
500
qdma_err (qdev , "Failed setup fmap context" );
@@ -548,11 +539,12 @@ static void qdma_free_queue_resources(struct dma_chan *chan)
548
539
{
549
540
struct qdma_queue * queue = to_qdma_queue (chan );
550
541
struct qdma_device * qdev = queue -> qdev ;
551
- struct device * dev = qdev -> dma_dev . dev ;
542
+ struct qdma_platdata * pdata ;
552
543
553
544
qdma_clear_queue_context (queue );
554
545
vchan_free_chan_resources (& queue -> vchan );
555
- dma_free_coherent (dev , queue -> ring_size * QDMA_MM_DESC_SIZE ,
546
+ pdata = dev_get_platdata (& qdev -> pdev -> dev );
547
+ dma_free_coherent (pdata -> dma_dev , queue -> ring_size * QDMA_MM_DESC_SIZE ,
556
548
queue -> desc_base , queue -> dma_desc_base );
557
549
}
558
550
@@ -565,15 +557,17 @@ static int qdma_alloc_queue_resources(struct dma_chan *chan)
565
557
struct qdma_queue * queue = to_qdma_queue (chan );
566
558
struct qdma_device * qdev = queue -> qdev ;
567
559
struct qdma_ctxt_sw_desc desc ;
560
+ struct qdma_platdata * pdata ;
568
561
size_t size ;
569
562
int ret ;
570
563
571
564
ret = qdma_clear_queue_context (queue );
572
565
if (ret )
573
566
return ret ;
574
567
568
+ pdata = dev_get_platdata (& qdev -> pdev -> dev );
575
569
size = queue -> ring_size * QDMA_MM_DESC_SIZE ;
576
- queue -> desc_base = dma_alloc_coherent (qdev -> dma_dev . dev , size ,
570
+ queue -> desc_base = dma_alloc_coherent (pdata -> dma_dev , size ,
577
571
& queue -> dma_desc_base ,
578
572
GFP_KERNEL );
579
573
if (!queue -> desc_base ) {
@@ -588,7 +582,7 @@ static int qdma_alloc_queue_resources(struct dma_chan *chan)
588
582
if (ret ) {
589
583
qdma_err (qdev , "Failed to setup SW desc ctxt for %s" ,
590
584
chan -> name );
591
- dma_free_coherent (qdev -> dma_dev . dev , size , queue -> desc_base ,
585
+ dma_free_coherent (pdata -> dma_dev , size , queue -> desc_base ,
592
586
queue -> dma_desc_base );
593
587
return ret ;
594
588
}
@@ -948,8 +942,9 @@ static int qdma_init_error_irq(struct qdma_device *qdev)
948
942
949
943
static int qdmam_alloc_qintr_rings (struct qdma_device * qdev )
950
944
{
951
- u32 ctxt [ QDMA_CTXT_REGMAP_LEN ] ;
945
+ struct qdma_platdata * pdata = dev_get_platdata ( & qdev -> pdev -> dev ) ;
952
946
struct device * dev = & qdev -> pdev -> dev ;
947
+ u32 ctxt [QDMA_CTXT_REGMAP_LEN ];
953
948
struct qdma_intr_ring * ring ;
954
949
struct qdma_ctxt_intr intr_ctxt ;
955
950
u32 vector ;
@@ -969,7 +964,8 @@ static int qdmam_alloc_qintr_rings(struct qdma_device *qdev)
969
964
ring -> msix_id = qdev -> err_irq_idx + i + 1 ;
970
965
ring -> ridx = i ;
971
966
ring -> color = 1 ;
972
- ring -> base = dmam_alloc_coherent (dev , QDMA_INTR_RING_SIZE ,
967
+ ring -> base = dmam_alloc_coherent (pdata -> dma_dev ,
968
+ QDMA_INTR_RING_SIZE ,
973
969
& ring -> dev_base , GFP_KERNEL );
974
970
if (!ring -> base ) {
975
971
qdma_err (qdev , "Failed to alloc intr ring %d" , i );
0 commit comments