@@ -47,42 +47,66 @@ EXPORT_SYMBOL(mtk_vcodec_write_vdecsys);
47
47
48
48
int mtk_vcodec_mem_alloc (void * priv , struct mtk_vcodec_mem * mem )
49
49
{
50
+ enum mtk_instance_type inst_type = * ((unsigned int * )priv );
51
+ struct platform_device * plat_dev ;
50
52
unsigned long size = mem -> size ;
51
- struct mtk_vcodec_dec_ctx * ctx = priv ;
52
- struct device * dev = & ctx -> dev -> plat_dev -> dev ;
53
+ int id ;
53
54
54
- mem -> va = dma_alloc_coherent (dev , size , & mem -> dma_addr , GFP_KERNEL );
55
+ if (inst_type == MTK_INST_ENCODER ) {
56
+ struct mtk_vcodec_enc_ctx * enc_ctx = priv ;
57
+
58
+ plat_dev = enc_ctx -> dev -> plat_dev ;
59
+ id = enc_ctx -> id ;
60
+ } else {
61
+ struct mtk_vcodec_dec_ctx * dec_ctx = priv ;
62
+
63
+ plat_dev = dec_ctx -> dev -> plat_dev ;
64
+ id = dec_ctx -> id ;
65
+ }
66
+
67
+ mem -> va = dma_alloc_coherent (& plat_dev -> dev , size , & mem -> dma_addr , GFP_KERNEL );
55
68
if (!mem -> va ) {
56
- mtk_v4l2_vdec_err (ctx , "%s dma_alloc size=%ld failed!" , dev_name (dev ), size );
69
+ mtk_v4l2_err (plat_dev , "%s dma_alloc size=%ld failed!" ,
70
+ dev_name (& plat_dev -> dev ), size );
57
71
return - ENOMEM ;
58
72
}
59
73
60
- mtk_v4l2_vdec_dbg (3 , ctx , "[%d] - va = %p" , ctx -> id , mem -> va );
61
- mtk_v4l2_vdec_dbg (3 , ctx , "[%d] - dma = 0x%lx" , ctx -> id ,
62
- (unsigned long )mem -> dma_addr );
63
- mtk_v4l2_vdec_dbg (3 , ctx , "[%d] size = 0x%lx" , ctx -> id , size );
74
+ mtk_v4l2_debug (plat_dev , 3 , "[%d] - va = %p dma = 0x%lx size = 0x%lx" , id , mem -> va ,
75
+ (unsigned long )mem -> dma_addr , size );
64
76
65
77
return 0 ;
66
78
}
67
79
EXPORT_SYMBOL (mtk_vcodec_mem_alloc );
68
80
69
81
void mtk_vcodec_mem_free (void * priv , struct mtk_vcodec_mem * mem )
70
82
{
83
+ enum mtk_instance_type inst_type = * ((unsigned int * )priv );
84
+ struct platform_device * plat_dev ;
71
85
unsigned long size = mem -> size ;
72
- struct mtk_vcodec_dec_ctx * ctx = priv ;
73
- struct device * dev = & ctx -> dev -> plat_dev -> dev ;
86
+ int id ;
87
+
88
+ if (inst_type == MTK_INST_ENCODER ) {
89
+ struct mtk_vcodec_enc_ctx * enc_ctx = priv ;
90
+
91
+ plat_dev = enc_ctx -> dev -> plat_dev ;
92
+ id = enc_ctx -> id ;
93
+ } else {
94
+ struct mtk_vcodec_dec_ctx * dec_ctx = priv ;
95
+
96
+ plat_dev = dec_ctx -> dev -> plat_dev ;
97
+ id = dec_ctx -> id ;
98
+ }
74
99
75
100
if (!mem -> va ) {
76
- mtk_v4l2_vdec_err (ctx , "%s dma_free size=%ld failed!" , dev_name (dev ), size );
101
+ mtk_v4l2_err (plat_dev , "%s dma_free size=%ld failed!" ,
102
+ dev_name (& plat_dev -> dev ), size );
77
103
return ;
78
104
}
79
105
80
- mtk_v4l2_vdec_dbg (3 , ctx , "[%d] - va = %p" , ctx -> id , mem -> va );
81
- mtk_v4l2_vdec_dbg (3 , ctx , "[%d] - dma = 0x%lx" , ctx -> id ,
82
- (unsigned long )mem -> dma_addr );
83
- mtk_v4l2_vdec_dbg (3 , ctx , "[%d] size = 0x%lx" , ctx -> id , size );
106
+ mtk_v4l2_debug (plat_dev , 3 , "[%d] - va = %p dma = 0x%lx size = 0x%lx" , id , mem -> va ,
107
+ (unsigned long )mem -> dma_addr , size );
84
108
85
- dma_free_coherent (dev , size , mem -> va , mem -> dma_addr );
109
+ dma_free_coherent (& plat_dev -> dev , size , mem -> va , mem -> dma_addr );
86
110
mem -> va = NULL ;
87
111
mem -> dma_addr = 0 ;
88
112
mem -> size = 0 ;
0 commit comments