]> Git Repo - linux.git/blobdiff - drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c
drm/amd/amdgpu: Fix style problems in amdgpu_debugfs.c
[linux.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_jpeg.c
index 6f81ed4fb0d9cd89b21521a81469438288a2cbd9..b07c000fc8ba39ee60540312eb8c0e6ee439d8e0 100644 (file)
@@ -118,6 +118,10 @@ int amdgpu_jpeg_dec_ring_test_ring(struct amdgpu_ring *ring)
        unsigned i;
        int r;
 
+       /* JPEG in SRIOV does not support direct register read/write */
+       if (amdgpu_sriov_vf(adev))
+               return 0;
+
        WREG32(adev->jpeg.inst[ring->me].external.jpeg_pitch, 0xCAFEDEAD);
        r = amdgpu_ring_alloc(ring, 3);
        if (r)
@@ -202,17 +206,18 @@ int amdgpu_jpeg_dec_ring_test_ib(struct amdgpu_ring *ring, long timeout)
        } else {
                r = 0;
        }
-
-       for (i = 0; i < adev->usec_timeout; i++) {
-               tmp = RREG32(adev->jpeg.inst[ring->me].external.jpeg_pitch);
-               if (tmp == 0xDEADBEEF)
-                       break;
-               udelay(1);
+       if (!amdgpu_sriov_vf(adev)) {
+               for (i = 0; i < adev->usec_timeout; i++) {
+                       tmp = RREG32(adev->jpeg.inst[ring->me].external.jpeg_pitch);
+                       if (tmp == 0xDEADBEEF)
+                               break;
+                       udelay(1);
+               }
+
+               if (i >= adev->usec_timeout)
+                       r = -ETIMEDOUT;
        }
 
-       if (i >= adev->usec_timeout)
-               r = -ETIMEDOUT;
-
        dma_fence_put(fence);
 error:
        return r;
@@ -236,19 +241,28 @@ int amdgpu_jpeg_process_poison_irq(struct amdgpu_device *adev,
        return 0;
 }
 
-void jpeg_set_ras_funcs(struct amdgpu_device *adev)
+int amdgpu_jpeg_ras_sw_init(struct amdgpu_device *adev)
 {
+       int err;
+       struct amdgpu_jpeg_ras *ras;
+
        if (!adev->jpeg.ras)
-               return;
+               return 0;
+
+       ras = adev->jpeg.ras;
+       err = amdgpu_ras_register_ras_block(adev, &ras->ras_block);
+       if (err) {
+               dev_err(adev->dev, "Failed to register jpeg ras block!\n");
+               return err;
+       }
 
-       amdgpu_ras_register_ras_block(adev, &adev->jpeg.ras->ras_block);
+       strcpy(ras->ras_block.ras_comm.name, "jpeg");
+       ras->ras_block.ras_comm.block = AMDGPU_RAS_BLOCK__JPEG;
+       ras->ras_block.ras_comm.type = AMDGPU_RAS_ERROR__POISON;
+       adev->jpeg.ras_if = &ras->ras_block.ras_comm;
 
-       strcpy(adev->jpeg.ras->ras_block.ras_comm.name, "jpeg");
-       adev->jpeg.ras->ras_block.ras_comm.block = AMDGPU_RAS_BLOCK__JPEG;
-       adev->jpeg.ras->ras_block.ras_comm.type = AMDGPU_RAS_ERROR__POISON;
-       adev->jpeg.ras_if = &adev->jpeg.ras->ras_block.ras_comm;
+       if (!ras->ras_block.ras_late_init)
+               ras->ras_block.ras_late_init = amdgpu_ras_block_late_init;
 
-       /* If don't define special ras_late_init function, use default ras_late_init */
-       if (!adev->jpeg.ras->ras_block.ras_late_init)
-               adev->jpeg.ras->ras_block.ras_late_init = amdgpu_ras_block_late_init;
+       return 0;
 }
This page took 0.036241 seconds and 4 git commands to generate.