]> Git Repo - linux.git/blobdiff - drivers/gpu/drm/amd/amdgpu/amdgpu_queue_mgr.c
Merge tag 'acpi-4.18-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael...
[linux.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_queue_mgr.c
index 93d86619e802c998636d61f36f2daf2e2d5d1c34..8af16e81c7d447dc1ee13b5b0227bdfc9100f387 100644 (file)
@@ -66,6 +66,8 @@ static int amdgpu_identity_map(struct amdgpu_device *adev,
                               u32 ring,
                               struct amdgpu_ring **out_ring)
 {
+       u32 instance;
+
        switch (mapper->hw_ip) {
        case AMDGPU_HW_IP_GFX:
                *out_ring = &adev->gfx.gfx_ring[ring];
@@ -77,13 +79,16 @@ static int amdgpu_identity_map(struct amdgpu_device *adev,
                *out_ring = &adev->sdma.instance[ring].ring;
                break;
        case AMDGPU_HW_IP_UVD:
-               *out_ring = &adev->uvd.ring;
+               instance = ring;
+               *out_ring = &adev->uvd.inst[instance].ring;
                break;
        case AMDGPU_HW_IP_VCE:
                *out_ring = &adev->vce.ring[ring];
                break;
        case AMDGPU_HW_IP_UVD_ENC:
-               *out_ring = &adev->uvd.ring_enc[ring];
+               instance = ring / adev->uvd.num_enc_rings;
+               *out_ring =
+               &adev->uvd.inst[instance].ring_enc[ring%adev->uvd.num_enc_rings];
                break;
        case AMDGPU_HW_IP_VCN_DEC:
                *out_ring = &adev->vcn.ring_dec;
@@ -225,7 +230,7 @@ int amdgpu_queue_mgr_map(struct amdgpu_device *adev,
 
        /* Right now all IPs have only one instance - multiple rings. */
        if (instance != 0) {
-               DRM_ERROR("invalid ip instance: %d\n", instance);
+               DRM_DEBUG("invalid ip instance: %d\n", instance);
                return -EINVAL;
        }
 
@@ -240,13 +245,14 @@ int amdgpu_queue_mgr_map(struct amdgpu_device *adev,
                ip_num_rings = adev->sdma.num_instances;
                break;
        case AMDGPU_HW_IP_UVD:
-               ip_num_rings = 1;
+               ip_num_rings = adev->uvd.num_uvd_inst;
                break;
        case AMDGPU_HW_IP_VCE:
                ip_num_rings = adev->vce.num_rings;
                break;
        case AMDGPU_HW_IP_UVD_ENC:
-               ip_num_rings = adev->uvd.num_enc_rings;
+               ip_num_rings =
+                       adev->uvd.num_enc_rings * adev->uvd.num_uvd_inst;
                break;
        case AMDGPU_HW_IP_VCN_DEC:
                ip_num_rings = 1;
@@ -255,13 +261,13 @@ int amdgpu_queue_mgr_map(struct amdgpu_device *adev,
                ip_num_rings = adev->vcn.num_enc_rings;
                break;
        default:
-               DRM_ERROR("unknown ip type: %d\n", hw_ip);
+               DRM_DEBUG("unknown ip type: %d\n", hw_ip);
                return -EINVAL;
        }
 
        if (ring >= ip_num_rings) {
-               DRM_ERROR("Ring index:%d exceeds maximum:%d for ip:%d\n",
-                               ring, ip_num_rings, hw_ip);
+               DRM_DEBUG("Ring index:%d exceeds maximum:%d for ip:%d\n",
+                         ring, ip_num_rings, hw_ip);
                return -EINVAL;
        }
 
@@ -292,7 +298,7 @@ int amdgpu_queue_mgr_map(struct amdgpu_device *adev,
        default:
                *out_ring = NULL;
                r = -EINVAL;
-               DRM_ERROR("unknown HW IP type: %d\n", mapper->hw_ip);
+               DRM_DEBUG("unknown HW IP type: %d\n", mapper->hw_ip);
        }
 
 out_unlock:
This page took 0.035947 seconds and 4 git commands to generate.