drm/amd/amdgpu: Move vcn4 fw_shared init to a single function
authorBokun Zhang <bokun.zhang@amd.com>
Thu, 30 Nov 2023 00:02:57 +0000 (19:02 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 6 Dec 2023 20:22:20 +0000 (15:22 -0500)
- Move VCN4's fw_shared initialization to a separated function.
  This way, the function can be reused at different locations.

Signed-off-by: Bokun Zhang <bokun.zhang@amd.com>
Reviewed-by: Emily Deng <Emily.Deng@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c

index 48bfcd0d558b736303c8f088bc1c5fe2e949b75f..28b7f96b42e5982c179587776a234697fa90bba8 100644 (file)
@@ -100,6 +100,31 @@ static int vcn_v4_0_early_init(void *handle)
        return amdgpu_vcn_early_init(adev);
 }
 
+static int vcn_v4_0_fw_shared_init(struct amdgpu_device *adev, int inst_idx)
+{
+       volatile struct amdgpu_vcn4_fw_shared *fw_shared;
+
+       fw_shared = adev->vcn.inst[inst_idx].fw_shared.cpu_addr;
+       fw_shared->present_flag_0 = cpu_to_le32(AMDGPU_FW_SHARED_FLAG_0_UNIFIED_QUEUE);
+       fw_shared->sq.is_enabled = 1;
+
+       fw_shared->present_flag_0 |= cpu_to_le32(AMDGPU_VCN_SMU_DPM_INTERFACE_FLAG);
+       fw_shared->smu_dpm_interface.smu_interface_type = (adev->flags & AMD_IS_APU) ?
+               AMDGPU_VCN_SMU_DPM_INTERFACE_APU : AMDGPU_VCN_SMU_DPM_INTERFACE_DGPU;
+
+       if (amdgpu_ip_version(adev, VCN_HWIP, 0) ==
+           IP_VERSION(4, 0, 2)) {
+               fw_shared->present_flag_0 |= AMDGPU_FW_SHARED_FLAG_0_DRM_KEY_INJECT;
+               fw_shared->drm_key_wa.method =
+                       AMDGPU_DRM_KEY_INJECT_WORKAROUND_VCNFW_ASD_HANDSHAKING;
+       }
+
+       if (amdgpu_vcnfw_log)
+               amdgpu_vcn_fwlog_init(&adev->vcn.inst[inst_idx]);
+
+       return 0;
+}
+
 /**
  * vcn_v4_0_sw_init - sw init for VCN block
  *
@@ -124,8 +149,6 @@ static int vcn_v4_0_sw_init(void *handle)
                return r;
 
        for (i = 0; i < adev->vcn.num_vcn_inst; i++) {
-               volatile struct amdgpu_vcn4_fw_shared *fw_shared;
-
                if (adev->vcn.harvest_config & (1 << i))
                        continue;
 
@@ -161,23 +184,7 @@ static int vcn_v4_0_sw_init(void *handle)
                if (r)
                        return r;
 
-               fw_shared = adev->vcn.inst[i].fw_shared.cpu_addr;
-               fw_shared->present_flag_0 = cpu_to_le32(AMDGPU_FW_SHARED_FLAG_0_UNIFIED_QUEUE);
-               fw_shared->sq.is_enabled = 1;
-
-               fw_shared->present_flag_0 |= cpu_to_le32(AMDGPU_VCN_SMU_DPM_INTERFACE_FLAG);
-               fw_shared->smu_dpm_interface.smu_interface_type = (adev->flags & AMD_IS_APU) ?
-                       AMDGPU_VCN_SMU_DPM_INTERFACE_APU : AMDGPU_VCN_SMU_DPM_INTERFACE_DGPU;
-
-               if (amdgpu_ip_version(adev, VCN_HWIP, 0) ==
-                   IP_VERSION(4, 0, 2)) {
-                       fw_shared->present_flag_0 |= AMDGPU_FW_SHARED_FLAG_0_DRM_KEY_INJECT;
-                       fw_shared->drm_key_wa.method =
-                               AMDGPU_DRM_KEY_INJECT_WORKAROUND_VCNFW_ASD_HANDSHAKING;
-               }
-
-               if (amdgpu_vcnfw_log)
-                       amdgpu_vcn_fwlog_init(&adev->vcn.inst[i]);
+               vcn_v4_0_fw_shared_init(adev, i);
        }
 
        if (amdgpu_sriov_vf(adev)) {