drm/amdgpu/display: split dmcu and gpuvm handling logic
authorAlex Deucher <alexander.deucher@amd.com>
Mon, 21 Feb 2022 19:34:53 +0000 (14:34 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 23 Feb 2022 19:02:51 +0000 (14:02 -0500)
Separate the logic for each of these features to make the
code easier to understand and update in the future.

Acked-by: Yifan Zhang <yifan1.zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

index 8cfe18b92c994af9015ca9342fb5762256690b7d..306b321bb70d5771d71bfff51ebb3892f3daf14b 100644 (file)
@@ -1443,6 +1443,25 @@ static int amdgpu_dm_init(struct amdgpu_device *adev)
 
        init_data.dce_environment = DCE_ENV_PRODUCTION_DRV;
 
+       switch (adev->ip_versions[DCE_HWIP][0]) {
+       case IP_VERSION(2, 1, 0):
+               switch (adev->dm.dmcub_fw_version) {
+               case 0: /* development */
+               case 0x1: /* linux-firmware.git hash 6d9f399 */
+               case 0x01000000: /* linux-firmware.git hash 9a0b0f4 */
+                       init_data.flags.disable_dmcu = false;
+                       break;
+               default:
+                       init_data.flags.disable_dmcu = true;
+               }
+               break;
+       case IP_VERSION(2, 0, 3):
+               init_data.flags.disable_dmcu = true;
+               break;
+       default:
+               break;
+       }
+
        switch (adev->asic_type) {
        case CHIP_CARRIZO:
        case CHIP_STONEY:
@@ -1450,29 +1469,15 @@ static int amdgpu_dm_init(struct amdgpu_device *adev)
                break;
        default:
                switch (adev->ip_versions[DCE_HWIP][0]) {
-               case IP_VERSION(2, 1, 0):
-                       init_data.flags.gpu_vm_support = true;
-                       switch (adev->dm.dmcub_fw_version) {
-                       case 0: /* development */
-                       case 0x1: /* linux-firmware.git hash 6d9f399 */
-                       case 0x01000000: /* linux-firmware.git hash 9a0b0f4 */
-                               init_data.flags.disable_dmcu = false;
-                               break;
-                       default:
-                               init_data.flags.disable_dmcu = true;
-                       }
-                       break;
                case IP_VERSION(1, 0, 0):
                case IP_VERSION(1, 0, 1):
+               case IP_VERSION(2, 1, 0):
                case IP_VERSION(3, 0, 1):
                case IP_VERSION(3, 1, 2):
                case IP_VERSION(3, 1, 3):
                case IP_VERSION(3, 1, 5):
                        init_data.flags.gpu_vm_support = true;
                        break;
-               case IP_VERSION(2, 0, 3):
-                       init_data.flags.disable_dmcu = true;
-                       break;
                default:
                        break;
                }