drm/amdgpu/pm: add set_driver_table_location implementation for yellow carp
authorAaron Liu <aaron.liu@amd.com>
Thu, 7 Jan 2021 01:13:35 +0000 (09:13 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 4 Jun 2021 20:03:13 +0000 (16:03 -0400)
This patch adds set_driver_table_location implementation for yellow
carp.

Signed-off-by: Aaron Liu <aaron.liu@amd.com>
Reviewed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/pm/inc/smu_v13_0_1.h
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_1.c
drivers/gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c

index b2e9258..9339c39 100644 (file)
@@ -48,5 +48,6 @@ int smu_v13_0_1_fini_smc_tables(struct smu_context *smu);
 
 int smu_v13_0_1_set_default_dpm_tables(struct smu_context *smu);
 
+int smu_v13_0_1_set_driver_table_location(struct smu_context *smu);
 #endif
 #endif
index 6ad2fcb..4e41c02 100644 (file)
@@ -129,3 +129,26 @@ int smu_v13_0_1_set_default_dpm_tables(struct smu_context *smu)
        return smu_cmn_update_table(smu, SMU_TABLE_DPMCLOCKS, 0, smu_table->clocks_table, false);
 }
 
+int smu_v13_0_1_set_driver_table_location(struct smu_context *smu)
+{
+       struct smu_table *driver_table = &smu->smu_table.driver_table;
+       int ret = 0;
+
+       if (!driver_table->mc_address)
+               return 0;
+
+       ret = smu_cmn_send_smc_msg_with_param(smu,
+                       SMU_MSG_SetDriverDramAddrHigh,
+                       upper_32_bits(driver_table->mc_address),
+                       NULL);
+
+       if (ret)
+               return ret;
+
+       ret = smu_cmn_send_smc_msg_with_param(smu,
+                       SMU_MSG_SetDriverDramAddrLow,
+                       lower_32_bits(driver_table->mc_address),
+                       NULL);
+
+       return ret;
+}
index d849fa8..cfe0866 100644 (file)
@@ -151,6 +151,7 @@ static const struct pptable_funcs yellow_carp_ppt_funcs = {
        .is_dpm_running = yellow_carp_is_dpm_running,
        .get_enabled_mask = smu_cmn_get_enabled_32_bits_mask,
        .get_pp_feature_mask = smu_cmn_get_pp_feature_mask,
+       .set_driver_table_location = smu_v13_0_1_set_driver_table_location,
 };
 
 void yellow_carp_set_ppt_funcs(struct smu_context *smu)