drm/amdgpu: get VCN harvest information from IP discovery table
authorAlex Deucher <alexander.deucher@amd.com>
Mon, 9 Aug 2021 17:17:10 +0000 (13:17 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 4 Oct 2021 19:23:01 +0000 (15:23 -0400)
Use the table rather than asic specific harvest registers.

v2: remove harvesting register checking

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c

index 13cd814f2626b3b046e4dc4048f6f6f56a109789..dbaa238a4620d4d697ab1eb08bb60ca6850c80e6 100644 (file)
@@ -470,6 +470,10 @@ void amdgpu_discovery_harvest_ip(struct amdgpu_device *adev)
                switch (le32_to_cpu(harvest_info->list[i].hw_id)) {
                case VCN_HWID:
                        vcn_harvest_count++;
+                       if (harvest_info->list[i].number_instance == 0)
+                               adev->vcn.harvest_config |= AMDGPU_VCN_HARVEST_VCN0;
+                       else
+                               adev->vcn.harvest_config |= AMDGPU_VCN_HARVEST_VCN1;
                        break;
                case DMU_HWID:
                        adev->harvest_ip_mask |= AMD_HARVEST_IP_DMU_MASK;
index a81d834ea0d3c57cc622181cf82a4a21c4b896cf..316cbef7027699c5dc9eb2b6d2312683bbe11c61 100644 (file)
@@ -87,7 +87,6 @@ static void vcn_v3_0_enc_ring_set_wptr(struct amdgpu_ring *ring);
 static int vcn_v3_0_early_init(void *handle)
 {
        struct amdgpu_device *adev = (struct amdgpu_device *)handle;
-       int i;
 
        if (amdgpu_sriov_vf(adev)) {
                adev->vcn.num_vcn_inst = VCN_INSTANCES_SIENNA_CICHLID;
@@ -95,20 +94,10 @@ static int vcn_v3_0_early_init(void *handle)
                adev->vcn.num_enc_rings = 1;
 
        } else {
-               if (adev->ip_versions[UVD_HWIP] == IP_VERSION(3, 0, 0)) {
-                       u32 harvest;
-
-                       for (i = 0; i < adev->vcn.num_vcn_inst; i++) {
-                               harvest = RREG32_SOC15(VCN, i, mmCC_UVD_HARVESTING);
-                               if (harvest & CC_UVD_HARVESTING__UVD_DISABLE_MASK)
-                                       adev->vcn.harvest_config |= 1 << i;
-                       }
-
-                       if (adev->vcn.harvest_config == (AMDGPU_VCN_HARVEST_VCN0 |
-                                               AMDGPU_VCN_HARVEST_VCN1))
-                               /* both instances are harvested, disable the block */
-                               return -ENOENT;
-               }
+               if (adev->vcn.harvest_config == (AMDGPU_VCN_HARVEST_VCN0 |
+                                                AMDGPU_VCN_HARVEST_VCN1))
+                       /* both instances are harvested, disable the block */
+                       return -ENOENT;
 
                if (adev->ip_versions[UVD_HWIP] == IP_VERSION(3, 0, 33))
                        adev->vcn.num_enc_rings = 0;