]> git.itanic.dy.fi Git - linux-stable/commitdiff
drm/amdgpu: apply vcn harvest quirk
authorGuchun Chen <guchun.chen@amd.com>
Fri, 14 Jan 2022 05:49:13 +0000 (13:49 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 18 Jan 2022 22:23:51 +0000 (17:23 -0500)
This is a following patch to apply the workaround only on
those boards with a bad harvest table in ip discovery.

Signed-off-by: Guchun Chen <guchun.chen@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c

index b0bf69611fbda4291881b97ca7ac07a6db035269..e6a26b5542545cb8b50d131bafc592dd9cd8ff14 100644 (file)
@@ -243,6 +243,30 @@ static inline bool amdgpu_discovery_verify_binary_signature(uint8_t *binary)
        return (le32_to_cpu(bhdr->binary_signature) == BINARY_SIGNATURE);
 }
 
+static void amdgpu_discovery_harvest_config_quirk(struct amdgpu_device *adev)
+{
+       /*
+        * So far, apply this quirk only on those Navy Flounder boards which
+        * have a bad harvest table of VCN config.
+        */
+       if ((adev->ip_versions[UVD_HWIP][1] == IP_VERSION(3, 0, 1)) &&
+               (adev->ip_versions[GC_HWIP][0] == IP_VERSION(10, 3, 2))) {
+               switch (adev->pdev->revision) {
+               case 0xC1:
+               case 0xC2:
+               case 0xC3:
+               case 0xC5:
+               case 0xC7:
+               case 0xCF:
+               case 0xDF:
+                       adev->vcn.harvest_config |= AMDGPU_VCN_HARVEST_VCN1;
+                       break;
+               default:
+                       break;
+               }
+       }
+}
+
 static int amdgpu_discovery_init(struct amdgpu_device *adev)
 {
        struct table_info *info;
@@ -548,11 +572,9 @@ void amdgpu_discovery_harvest_ip(struct amdgpu_device *adev)
                        break;
                }
        }
-       /* some IP discovery tables on Navy Flounder don't have this set correctly */
-       if ((adev->ip_versions[UVD_HWIP][1] == IP_VERSION(3, 0, 1)) &&
-           (adev->ip_versions[GC_HWIP][0] == IP_VERSION(10, 3, 2)) &&
-           (adev->pdev->revision != 0xFF))
-               adev->vcn.harvest_config |= AMDGPU_VCN_HARVEST_VCN1;
+
+       amdgpu_discovery_harvest_config_quirk(adev);
+
        if (vcn_harvest_count == adev->vcn.num_vcn_inst) {
                adev->harvest_ip_mask |= AMD_HARVEST_IP_VCN_MASK;
                adev->harvest_ip_mask |= AMD_HARVEST_IP_JPEG_MASK;