drm/amdgpu: Fix JPEG v4.0.3 register write
authorLijo Lazar <lijo.lazar@amd.com>
Fri, 6 Sep 2024 08:40:19 +0000 (14:10 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 26 Sep 2024 21:06:17 +0000 (17:06 -0400)
EXTERNAL_REG_INTERNAL_OFFSET/EXTERNAL_REG_WRITE_ADDR should be used in
pairs. If an external register shouldn't be written, both packets
shouldn't be sent.

Fixes: a78b48146972 ("drm/amdgpu: Skip PCTL0_MMHUB_DEEPSLEEP_IB write in jpegv4.0.3 under SRIOV")
Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
Acked-by: Leo Liu <leo.liu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_3.c

index 86958cb..aa5815b 100644 (file)
@@ -674,11 +674,12 @@ void jpeg_v4_0_3_dec_ring_insert_start(struct amdgpu_ring *ring)
                amdgpu_ring_write(ring, PACKETJ(regUVD_JRBC_EXTERNAL_REG_INTERNAL_OFFSET,
                        0, 0, PACKETJ_TYPE0));
                amdgpu_ring_write(ring, 0x62a04); /* PCTL0_MMHUB_DEEPSLEEP_IB */
-       }
 
-       amdgpu_ring_write(ring, PACKETJ(JRBC_DEC_EXTERNAL_REG_WRITE_ADDR,
-               0, 0, PACKETJ_TYPE0));
-       amdgpu_ring_write(ring, 0x80004000);
+               amdgpu_ring_write(ring,
+                                 PACKETJ(JRBC_DEC_EXTERNAL_REG_WRITE_ADDR, 0,
+                                         0, PACKETJ_TYPE0));
+               amdgpu_ring_write(ring, 0x80004000);
+       }
 }
 
 /**
@@ -694,11 +695,12 @@ void jpeg_v4_0_3_dec_ring_insert_end(struct amdgpu_ring *ring)
                amdgpu_ring_write(ring, PACKETJ(regUVD_JRBC_EXTERNAL_REG_INTERNAL_OFFSET,
                        0, 0, PACKETJ_TYPE0));
                amdgpu_ring_write(ring, 0x62a04);
-       }
 
-       amdgpu_ring_write(ring, PACKETJ(JRBC_DEC_EXTERNAL_REG_WRITE_ADDR,
-               0, 0, PACKETJ_TYPE0));
-       amdgpu_ring_write(ring, 0x00004000);
+               amdgpu_ring_write(ring,
+                                 PACKETJ(JRBC_DEC_EXTERNAL_REG_WRITE_ADDR, 0,
+                                         0, PACKETJ_TYPE0));
+               amdgpu_ring_write(ring, 0x00004000);
+       }
 }
 
 /**