@@ -81,6 +81,18 @@ static int jpeg_v4_0_sw_init(void *handle)
81
81
if (r )
82
82
return r ;
83
83
84
+ /* JPEG DJPEG POISON EVENT */
85
+ r = amdgpu_irq_add_id (adev , SOC15_IH_CLIENTID_VCN ,
86
+ VCN_4_0__SRCID_DJPEG0_POISON , & adev -> jpeg .inst -> irq );
87
+ if (r )
88
+ return r ;
89
+
90
+ /* JPEG EJPEG POISON EVENT */
91
+ r = amdgpu_irq_add_id (adev , SOC15_IH_CLIENTID_VCN ,
92
+ VCN_4_0__SRCID_EJPEG0_POISON , & adev -> jpeg .inst -> irq );
93
+ if (r )
94
+ return r ;
95
+
84
96
r = amdgpu_jpeg_sw_init (adev );
85
97
if (r )
86
98
return r ;
@@ -170,6 +182,8 @@ static int jpeg_v4_0_hw_fini(void *handle)
170
182
RREG32_SOC15 (JPEG , 0 , regUVD_JRBC_STATUS ))
171
183
jpeg_v4_0_set_powergating_state (adev , AMD_PG_STATE_GATE );
172
184
185
+ amdgpu_irq_put (adev , & adev -> jpeg .inst -> irq , 0 );
186
+
173
187
return 0 ;
174
188
}
175
189
@@ -527,6 +541,10 @@ static int jpeg_v4_0_process_interrupt(struct amdgpu_device *adev,
527
541
case VCN_4_0__SRCID__JPEG_DECODE :
528
542
amdgpu_fence_process (& adev -> jpeg .inst -> ring_dec );
529
543
break ;
544
+ case VCN_4_0__SRCID_DJPEG0_POISON :
545
+ case VCN_4_0__SRCID_EJPEG0_POISON :
546
+ amdgpu_jpeg_process_poison_irq (adev , source , entry );
547
+ break ;
530
548
default :
531
549
DRM_DEV_ERROR (adev -> dev , "Unhandled interrupt: %d %d\n" ,
532
550
entry -> src_id , entry -> src_data [0 ]);
0 commit comments