aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1877-drm-amd-powerplay-refine-powerplay-code.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1877-drm-amd-powerplay-refine-powerplay-code.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1877-drm-amd-powerplay-refine-powerplay-code.patch2697
1 files changed, 2697 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1877-drm-amd-powerplay-refine-powerplay-code.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1877-drm-amd-powerplay-refine-powerplay-code.patch
new file mode 100644
index 00000000..3f5a98be
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1877-drm-amd-powerplay-refine-powerplay-code.patch
@@ -0,0 +1,2697 @@
+From 9f31463f0c3809b86bffb6b0ba6a55c4f3bd1a4a Mon Sep 17 00:00:00 2001
+From: Rex Zhu <Rex.Zhu@amd.com>
+Date: Wed, 20 Sep 2017 14:44:55 +0800
+Subject: [PATCH 1877/4131] drm/amd/powerplay: refine powerplay code.
+
+delete struct smumgr, put smu backend function table
+in struct hwmgr
+
+Change-Id: I7b73ef062b147b4e7199105a3c101f6c8038cc57
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
+---
+ drivers/gpu/drm/amd/powerplay/amd_powerplay.c | 62 ++++-----
+ drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c | 19 ++-
+ drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c | 4 +-
+ .../gpu/drm/amd/powerplay/hwmgr/smu7_powertune.c | 2 +-
+ drivers/gpu/drm/amd/powerplay/inc/hwmgr.h | 40 ++++++
+ drivers/gpu/drm/amd/powerplay/inc/pp_instance.h | 2 -
+ drivers/gpu/drm/amd/powerplay/inc/smumgr.h | 62 +--------
+ drivers/gpu/drm/amd/powerplay/smumgr/ci_smc.c | 56 ++++----
+ drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c | 6 +-
+ drivers/gpu/drm/amd/powerplay/smumgr/cz_smumgr.c | 38 +++---
+ drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c | 54 ++++----
+ drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c | 10 +-
+ drivers/gpu/drm/amd/powerplay/smumgr/iceland_smc.c | 50 +++----
+ .../gpu/drm/amd/powerplay/smumgr/iceland_smumgr.c | 2 +-
+ .../gpu/drm/amd/powerplay/smumgr/polaris10_smc.c | 67 +++++-----
+ .../drm/amd/powerplay/smumgr/polaris10_smumgr.c | 10 +-
+ drivers/gpu/drm/amd/powerplay/smumgr/rv_smumgr.c | 20 +--
+ drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c | 22 +--
+ drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c | 148 ++++++---------------
+ drivers/gpu/drm/amd/powerplay/smumgr/tonga_smc.c | 64 ++++-----
+ .../gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c | 2 +-
+ .../gpu/drm/amd/powerplay/smumgr/vega10_smumgr.c | 22 +--
+ 22 files changed, 338 insertions(+), 424 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
+index 1250b63..98f57f2 100644
+--- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
++++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
+@@ -35,13 +35,13 @@ static inline int pp_check(struct pp_instance *handle)
+ if (handle == NULL || handle->pp_valid != PP_VALID)
+ return -EINVAL;
+
+- if (handle->smu_mgr == NULL || handle->smu_mgr->smumgr_funcs == NULL)
++ if (handle->hwmgr == NULL || handle->hwmgr->smumgr_funcs == NULL)
+ return -EINVAL;
+
+ if (handle->pm_en == 0)
+ return PP_DPM_DISABLED;
+
+- if (handle->hwmgr == NULL || handle->hwmgr->hwmgr_func == NULL)
++ if (handle->hwmgr->hwmgr_func == NULL)
+ return PP_DPM_DISABLED;
+
+ return 0;
+@@ -52,38 +52,32 @@ static int pp_early_init(void *handle)
+ int ret;
+ struct pp_instance *pp_handle = (struct pp_instance *)handle;
+
+- ret = smum_early_init(pp_handle);
++ ret = hwmgr_early_init(pp_handle);
+ if (ret)
+- return ret;
++ return -EINVAL;
+
+ if ((pp_handle->pm_en == 0)
+ || cgs_is_virtualization_enabled(pp_handle->device))
+ return PP_DPM_DISABLED;
+
+- ret = hwmgr_early_init(pp_handle);
+- if (ret) {
+- pp_handle->pm_en = 0;
+- return PP_DPM_DISABLED;
+- }
+-
+ return 0;
+ }
+
+ static int pp_sw_init(void *handle)
+ {
+- struct pp_smumgr *smumgr;
++ struct pp_hwmgr *hwmgr;
+ int ret = 0;
+ struct pp_instance *pp_handle = (struct pp_instance *)handle;
+
+ ret = pp_check(pp_handle);
+
+ if (ret == 0 || ret == PP_DPM_DISABLED) {
+- smumgr = pp_handle->smu_mgr;
++ hwmgr = pp_handle->hwmgr;
+
+- if (smumgr->smumgr_funcs->smu_init == NULL)
++ if (hwmgr->smumgr_funcs->smu_init == NULL)
+ return -EINVAL;
+
+- ret = smumgr->smumgr_funcs->smu_init(pp_handle->hwmgr);
++ ret = hwmgr->smumgr_funcs->smu_init(hwmgr);
+
+ pr_info("amdgpu: powerplay sw initialized\n");
+ }
+@@ -92,39 +86,39 @@ static int pp_sw_init(void *handle)
+
+ static int pp_sw_fini(void *handle)
+ {
+- struct pp_smumgr *smumgr;
++ struct pp_hwmgr *hwmgr;
+ int ret = 0;
+ struct pp_instance *pp_handle = (struct pp_instance *)handle;
+
+ ret = pp_check(pp_handle);
+ if (ret == 0 || ret == PP_DPM_DISABLED) {
+- smumgr = pp_handle->smu_mgr;
++ hwmgr = pp_handle->hwmgr;
+
+- if (smumgr->smumgr_funcs->smu_fini == NULL)
++ if (hwmgr->smumgr_funcs->smu_fini == NULL)
+ return -EINVAL;
+
+- ret = smumgr->smumgr_funcs->smu_fini(pp_handle->hwmgr);
++ ret = hwmgr->smumgr_funcs->smu_fini(pp_handle->hwmgr);
+ }
+ return ret;
+ }
+
+ static int pp_hw_init(void *handle)
+ {
+- struct pp_smumgr *smumgr;
+ int ret = 0;
+ struct pp_instance *pp_handle = (struct pp_instance *)handle;
++ struct pp_hwmgr *hwmgr;
+
+ ret = pp_check(pp_handle);
+
+ if (ret == 0 || ret == PP_DPM_DISABLED) {
+- smumgr = pp_handle->smu_mgr;
++ hwmgr = pp_handle->hwmgr;
+
+- if (smumgr->smumgr_funcs->start_smu == NULL)
++ if (hwmgr->smumgr_funcs->start_smu == NULL)
+ return -EINVAL;
+
+- if(smumgr->smumgr_funcs->start_smu(pp_handle->hwmgr)) {
++ if(hwmgr->smumgr_funcs->start_smu(pp_handle->hwmgr)) {
+ pr_err("smc start failed\n");
+- smumgr->smumgr_funcs->smu_fini(pp_handle->hwmgr);
++ hwmgr->smumgr_funcs->smu_fini(pp_handle->hwmgr);
+ return -EINVAL;;
+ }
+ if (ret == PP_DPM_DISABLED)
+@@ -137,8 +131,6 @@ static int pp_hw_init(void *handle)
+ return 0;
+ err:
+ pp_handle->pm_en = 0;
+- kfree(pp_handle->hwmgr);
+- pp_handle->hwmgr = NULL;
+ return PP_DPM_DISABLED;
+ }
+
+@@ -232,7 +224,7 @@ static int pp_suspend(void *handle)
+
+ static int pp_resume(void *handle)
+ {
+- struct pp_smumgr *smumgr;
++ struct pp_hwmgr *hwmgr;
+ int ret, ret1;
+ struct pp_instance *pp_handle = (struct pp_instance *)handle;
+
+@@ -241,15 +233,15 @@ static int pp_resume(void *handle)
+ if (ret1 != 0 && ret1 != PP_DPM_DISABLED)
+ return ret1;
+
+- smumgr = pp_handle->smu_mgr;
++ hwmgr = pp_handle->hwmgr;
+
+- if (smumgr->smumgr_funcs->start_smu == NULL)
++ if (hwmgr->smumgr_funcs->start_smu == NULL)
+ return -EINVAL;
+
+- ret = smumgr->smumgr_funcs->start_smu(pp_handle->hwmgr);
++ ret = hwmgr->smumgr_funcs->start_smu(pp_handle->hwmgr);
+ if (ret) {
+ pr_err("smc start failed\n");
+- smumgr->smumgr_funcs->smu_fini(pp_handle->hwmgr);
++ hwmgr->smumgr_funcs->smu_fini(pp_handle->hwmgr);
+ return ret;
+ }
+
+@@ -1157,13 +1149,9 @@ int amd_powerplay_destroy(void *handle)
+ {
+ struct pp_instance *instance = (struct pp_instance *)handle;
+
+- if (instance->pm_en) {
+- kfree(instance->hwmgr);
+- instance->hwmgr = NULL;
+- }
++ kfree(instance->hwmgr);
++ instance->hwmgr = NULL;
+
+- kfree(instance->smu_mgr);
+- instance->smu_mgr = NULL;
+ kfree(instance);
+ instance = NULL;
+ return 0;
+@@ -1174,7 +1162,7 @@ int amd_powerplay_reset(void *handle)
+ struct pp_instance *instance = (struct pp_instance *)handle;
+ int ret;
+
+- if (cgs_is_virtualization_enabled(instance->smu_mgr->device))
++ if (cgs_is_virtualization_enabled(instance->hwmgr->device))
+ return PP_DPM_DISABLED;
+
+ ret = pp_check(instance);
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
+index 484f71c..0ad5037 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
+@@ -37,6 +37,15 @@
+ #include "amd_acpi.h"
+ #include "pp_psm.h"
+
++extern const struct pp_smumgr_func ci_smu_funcs;
++extern const struct pp_smumgr_func cz_smu_funcs;
++extern const struct pp_smumgr_func iceland_smu_funcs;
++extern const struct pp_smumgr_func tonga_smu_funcs;
++extern const struct pp_smumgr_func fiji_smu_funcs;
++extern const struct pp_smumgr_func polaris10_smu_funcs;
++extern const struct pp_smumgr_func vega10_smu_funcs;
++extern const struct pp_smumgr_func rv_smu_funcs;
++
+ extern int cz_init_function_pointers(struct pp_hwmgr *hwmgr);
+ static int polaris_set_asic_special_caps(struct pp_hwmgr *hwmgr);
+ static void hwmgr_init_default_caps(struct pp_hwmgr *hwmgr);
+@@ -132,7 +141,6 @@ int hwmgr_early_init(struct pp_instance *handle)
+ return -ENOMEM;
+
+ handle->hwmgr = hwmgr;
+- hwmgr->smumgr = handle->smu_mgr;
+ hwmgr->device = handle->device;
+ hwmgr->chip_family = handle->chip_family;
+ hwmgr->chip_id = handle->chip_id;
+@@ -144,9 +152,11 @@ int hwmgr_early_init(struct pp_instance *handle)
+ hwmgr_init_default_caps(hwmgr);
+ hwmgr_set_user_specify_caps(hwmgr);
+ hwmgr->fan_ctrl_is_in_default_mode = true;
++ hwmgr->reload_fw = 1;
+
+ switch (hwmgr->chip_family) {
+ case AMDGPU_FAMILY_CI:
++ hwmgr->smumgr_funcs = &ci_smu_funcs;
+ ci_set_asic_special_caps(hwmgr);
+ hwmgr->feature_mask &= ~(PP_VBI_TIME_SUPPORT_MASK |
+ PP_ENABLE_GFX_CG_THRU_SMU);
+@@ -154,21 +164,25 @@ int hwmgr_early_init(struct pp_instance *handle)
+ smu7_init_function_pointers(hwmgr);
+ break;
+ case AMDGPU_FAMILY_CZ:
++ hwmgr->smumgr_funcs = &ci_smu_funcs;
+ cz_init_function_pointers(hwmgr);
+ break;
+ case AMDGPU_FAMILY_VI:
+ switch (hwmgr->chip_id) {
+ case CHIP_TOPAZ:
++ hwmgr->smumgr_funcs = &iceland_smu_funcs;
+ topaz_set_asic_special_caps(hwmgr);
+ hwmgr->feature_mask &= ~ (PP_VBI_TIME_SUPPORT_MASK |
+ PP_ENABLE_GFX_CG_THRU_SMU);
+ hwmgr->pp_table_version = PP_TABLE_V0;
+ break;
+ case CHIP_TONGA:
++ hwmgr->smumgr_funcs = &tonga_smu_funcs;
+ tonga_set_asic_special_caps(hwmgr);
+ hwmgr->feature_mask &= ~PP_VBI_TIME_SUPPORT_MASK;
+ break;
+ case CHIP_FIJI:
++ hwmgr->smumgr_funcs = &fiji_smu_funcs;
+ fiji_set_asic_special_caps(hwmgr);
+ hwmgr->feature_mask &= ~ (PP_VBI_TIME_SUPPORT_MASK |
+ PP_ENABLE_GFX_CG_THRU_SMU);
+@@ -176,6 +190,7 @@ int hwmgr_early_init(struct pp_instance *handle)
+ case CHIP_POLARIS11:
+ case CHIP_POLARIS10:
+ case CHIP_POLARIS12:
++ hwmgr->smumgr_funcs = &polaris10_smu_funcs;
+ polaris_set_asic_special_caps(hwmgr);
+ hwmgr->feature_mask &= ~(PP_UVD_HANDSHAKE_MASK);
+ break;
+@@ -187,6 +202,7 @@ int hwmgr_early_init(struct pp_instance *handle)
+ case AMDGPU_FAMILY_AI:
+ switch (hwmgr->chip_id) {
+ case CHIP_VEGA10:
++ hwmgr->smumgr_funcs = &vega10_smu_funcs;
+ vega10_hwmgr_init(hwmgr);
+ break;
+ default:
+@@ -196,6 +212,7 @@ int hwmgr_early_init(struct pp_instance *handle)
+ case AMDGPU_FAMILY_RV:
+ switch (hwmgr->chip_id) {
+ case CHIP_RAVEN:
++ hwmgr->smumgr_funcs = &rv_smu_funcs;
+ rv_init_function_pointers(hwmgr);
+ break;
+ default:
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
+index e7ba451..30921b5 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
+@@ -1382,7 +1382,7 @@ static void smu7_init_dpm_defaults(struct pp_hwmgr *hwmgr)
+ data->force_pcie_gen = PP_PCIEGenInvalid;
+ data->ulv_supported = hwmgr->feature_mask & PP_ULV_MASK ? true : false;
+
+- if (hwmgr->chip_id == CHIP_POLARIS12 || hwmgr->smumgr->is_kicker) {
++ if (hwmgr->chip_id == CHIP_POLARIS12 || hwmgr->is_kicker) {
+ uint8_t tmp1, tmp2;
+ uint16_t tmp3 = 0;
+ atomctrl_get_svi2_info(hwmgr, VOLTAGE_TYPE_VDDC, &tmp1, &tmp2,
+@@ -4616,7 +4616,7 @@ static int smu7_set_power_profile_state(struct pp_hwmgr *hwmgr,
+
+ static int smu7_avfs_control(struct pp_hwmgr *hwmgr, bool enable)
+ {
+- struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smumgr->backend);
++ struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smu_backend);
+
+ if (smu_data == NULL)
+ return -EINVAL;
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_powertune.c b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_powertune.c
+index e7c7662..ac80fc3 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_powertune.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_powertune.c
+@@ -806,7 +806,7 @@ int smu7_enable_didt_config(struct pp_hwmgr *hwmgr)
+ } else if (hwmgr->chip_id == CHIP_POLARIS11) {
+ result = smu7_program_pt_config_registers(hwmgr, GCCACConfig_Polaris11);
+ PP_ASSERT_WITH_CODE((result == 0), "DIDT Config failed.", return result);
+- if (hwmgr->smumgr->is_kicker)
++ if (hwmgr->is_kicker)
+ result = smu7_program_pt_config_registers(hwmgr, DIDTConfig_Polaris11_Kicker);
+ else
+ result = smu7_program_pt_config_registers(hwmgr, DIDTConfig_Polaris11);
+diff --git a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h
+index 1b212b5..859cca4 100644
+--- a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h
++++ b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h
+@@ -235,6 +235,39 @@ struct phm_vce_clock_voltage_dependency_table {
+ struct phm_vce_clock_voltage_dependency_record entries[1];
+ };
+
++struct pp_smumgr_func {
++ int (*smu_init)(struct pp_hwmgr *hwmgr);
++ int (*smu_fini)(struct pp_hwmgr *hwmgr);
++ int (*start_smu)(struct pp_hwmgr *hwmgr);
++ int (*check_fw_load_finish)(struct pp_hwmgr *hwmgr,
++ uint32_t firmware);
++ int (*request_smu_load_fw)(struct pp_hwmgr *hwmgr);
++ int (*request_smu_load_specific_fw)(struct pp_hwmgr *hwmgr,
++ uint32_t firmware);
++ int (*get_argument)(struct pp_hwmgr *hwmgr);
++ int (*send_msg_to_smc)(struct pp_hwmgr *hwmgr, uint16_t msg);
++ int (*send_msg_to_smc_with_parameter)(struct pp_hwmgr *hwmgr,
++ uint16_t msg, uint32_t parameter);
++ int (*download_pptable_settings)(struct pp_hwmgr *hwmgr,
++ void **table);
++ int (*upload_pptable_settings)(struct pp_hwmgr *hwmgr);
++ int (*update_smc_table)(struct pp_hwmgr *hwmgr, uint32_t type);
++ int (*process_firmware_header)(struct pp_hwmgr *hwmgr);
++ int (*update_sclk_threshold)(struct pp_hwmgr *hwmgr);
++ int (*thermal_setup_fan_table)(struct pp_hwmgr *hwmgr);
++ int (*thermal_avfs_enable)(struct pp_hwmgr *hwmgr);
++ int (*init_smc_table)(struct pp_hwmgr *hwmgr);
++ int (*populate_all_graphic_levels)(struct pp_hwmgr *hwmgr);
++ int (*populate_all_memory_levels)(struct pp_hwmgr *hwmgr);
++ int (*initialize_mc_reg_table)(struct pp_hwmgr *hwmgr);
++ uint32_t (*get_offsetof)(uint32_t type, uint32_t member);
++ uint32_t (*get_mac_definition)(uint32_t value);
++ bool (*is_dpm_running)(struct pp_hwmgr *hwmgr);
++ int (*populate_requested_graphic_levels)(struct pp_hwmgr *hwmgr,
++ struct amd_pp_profile *request);
++ bool (*is_hw_avfs_present)(struct pp_hwmgr *hwmgr);
++};
++
+ struct pp_hwmgr_func {
+ int (*backend_init)(struct pp_hwmgr *hw_mgr);
+ int (*backend_fini)(struct pp_hwmgr *hw_mgr);
+@@ -706,10 +739,17 @@ struct pp_hwmgr {
+ void *pptable;
+ struct phm_platform_descriptor platform_descriptor;
+ void *backend;
++
++ void *smu_backend;
++ const struct pp_smumgr_func *smumgr_funcs;
++ bool is_kicker;
++ bool reload_fw;
++
+ enum PP_DAL_POWERLEVEL dal_power_level;
+ struct phm_dynamic_state_info dyn_state;
+ const struct pp_hwmgr_func *hwmgr_func;
+ const struct pp_table_func *pptable_func;
++
+ struct pp_power_state *ps;
+ enum pp_power_source power_source;
+ uint32_t num_ps;
+diff --git a/drivers/gpu/drm/amd/powerplay/inc/pp_instance.h b/drivers/gpu/drm/amd/powerplay/inc/pp_instance.h
+index 5bf2ee4..25fb146 100644
+--- a/drivers/gpu/drm/amd/powerplay/inc/pp_instance.h
++++ b/drivers/gpu/drm/amd/powerplay/inc/pp_instance.h
+@@ -23,7 +23,6 @@
+ #ifndef _PP_INSTANCE_H_
+ #define _PP_INSTANCE_H_
+
+-#include "smumgr.h"
+ #include "hwmgr.h"
+
+ #define PP_VALID 0x1F1F1F1F
+@@ -35,7 +34,6 @@ struct pp_instance {
+ bool pm_en;
+ uint32_t feature_mask;
+ void *device;
+- struct pp_smumgr *smu_mgr;
+ struct pp_hwmgr *hwmgr;
+ struct mutex pp_lock;
+ };
+diff --git a/drivers/gpu/drm/amd/powerplay/inc/smumgr.h b/drivers/gpu/drm/amd/powerplay/inc/smumgr.h
+index 58581e1..8bdffaa 100644
+--- a/drivers/gpu/drm/amd/powerplay/inc/smumgr.h
++++ b/drivers/gpu/drm/amd/powerplay/inc/smumgr.h
+@@ -23,24 +23,13 @@
+ #ifndef _SMUMGR_H_
+ #define _SMUMGR_H_
+ #include <linux/types.h>
+-#include "pp_instance.h"
+ #include "amd_powerplay.h"
+-
+-struct pp_smumgr;
+-struct pp_instance;
+-struct pp_hwmgr;
++#include "hwmgr.h"
+
+ #define smu_lower_32_bits(n) ((uint32_t)(n))
+ #define smu_upper_32_bits(n) ((uint32_t)(((n)>>16)>>16))
+
+-extern const struct pp_smumgr_func ci_smu_funcs;
+-extern const struct pp_smumgr_func cz_smu_funcs;
+-extern const struct pp_smumgr_func iceland_smu_funcs;
+-extern const struct pp_smumgr_func tonga_smu_funcs;
+-extern const struct pp_smumgr_func fiji_smu_funcs;
+-extern const struct pp_smumgr_func polaris10_smu_funcs;
+-extern const struct pp_smumgr_func vega10_smu_funcs;
+-extern const struct pp_smumgr_func rv_smu_funcs;
++
+
+ enum AVFS_BTC_STATUS {
+ AVFS_BTC_BOOT = 0,
+@@ -101,53 +90,6 @@ enum SMU_MAC_DEFINITION {
+ SMU_UVD_MCLK_HANDSHAKE_DISABLE,
+ };
+
+-
+-struct pp_smumgr_func {
+- int (*smu_init)(struct pp_hwmgr *hwmgr);
+- int (*smu_fini)(struct pp_hwmgr *hwmgr);
+- int (*start_smu)(struct pp_hwmgr *hwmgr);
+- int (*check_fw_load_finish)(struct pp_hwmgr *hwmgr,
+- uint32_t firmware);
+- int (*request_smu_load_fw)(struct pp_hwmgr *hwmgr);
+- int (*request_smu_load_specific_fw)(struct pp_hwmgr *hwmgr,
+- uint32_t firmware);
+- int (*get_argument)(struct pp_hwmgr *hwmgr);
+- int (*send_msg_to_smc)(struct pp_hwmgr *hwmgr, uint16_t msg);
+- int (*send_msg_to_smc_with_parameter)(struct pp_hwmgr *hwmgr,
+- uint16_t msg, uint32_t parameter);
+- int (*download_pptable_settings)(struct pp_hwmgr *hwmgr,
+- void **table);
+- int (*upload_pptable_settings)(struct pp_hwmgr *hwmgr);
+- int (*update_smc_table)(struct pp_hwmgr *hwmgr, uint32_t type);
+- int (*process_firmware_header)(struct pp_hwmgr *hwmgr);
+- int (*update_sclk_threshold)(struct pp_hwmgr *hwmgr);
+- int (*thermal_setup_fan_table)(struct pp_hwmgr *hwmgr);
+- int (*thermal_avfs_enable)(struct pp_hwmgr *hwmgr);
+- int (*init_smc_table)(struct pp_hwmgr *hwmgr);
+- int (*populate_all_graphic_levels)(struct pp_hwmgr *hwmgr);
+- int (*populate_all_memory_levels)(struct pp_hwmgr *hwmgr);
+- int (*initialize_mc_reg_table)(struct pp_hwmgr *hwmgr);
+- uint32_t (*get_offsetof)(uint32_t type, uint32_t member);
+- uint32_t (*get_mac_definition)(uint32_t value);
+- bool (*is_dpm_running)(struct pp_hwmgr *hwmgr);
+- int (*populate_requested_graphic_levels)(struct pp_hwmgr *hwmgr,
+- struct amd_pp_profile *request);
+- bool (*is_hw_avfs_present)(struct pp_hwmgr *hwmgr);
+-};
+-
+-struct pp_smumgr {
+- uint32_t chip_family;
+- uint32_t chip_id;
+- void *device;
+- void *backend;
+- uint32_t usec_timeout;
+- bool reload_fw;
+- const struct pp_smumgr_func *smumgr_funcs;
+- bool is_kicker;
+-};
+-
+-extern int smum_early_init(struct pp_instance *handle);
+-
+ extern int smum_get_argument(struct pp_hwmgr *hwmgr);
+
+ extern int smum_download_powerplay_table(struct pp_hwmgr *hwmgr, void **table);
+diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/ci_smc.c b/drivers/gpu/drm/amd/powerplay/smumgr/ci_smc.c
+index 78de219..87c8d9e 100644
+--- a/drivers/gpu/drm/amd/powerplay/smumgr/ci_smc.c
++++ b/drivers/gpu/drm/amd/powerplay/smumgr/ci_smc.c
+@@ -236,7 +236,7 @@ int ci_send_msg_to_smc_with_parameter(struct pp_hwmgr *hwmgr,
+
+ static void ci_initialize_power_tune_defaults(struct pp_hwmgr *hwmgr)
+ {
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+ struct cgs_system_info sys_info = {0};
+ uint32_t dev_id;
+
+@@ -479,7 +479,7 @@ static int ci_populate_single_graphic_level(struct pp_hwmgr *hwmgr,
+ int ci_populate_all_graphic_levels(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+ struct smu7_dpm_table *dpm_table = &data->dpm_table;
+ int result = 0;
+ uint32_t array = smu_data->dpm_table_start +
+@@ -520,7 +520,7 @@ int ci_populate_all_graphic_levels(struct pp_hwmgr *hwmgr)
+
+ static int ci_populate_svi_load_line(struct pp_hwmgr *hwmgr)
+ {
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+ const struct ci_pt_defaults *defaults = smu_data->power_tune_defaults;
+
+ smu_data->power_tune_table.SviLoadLineEn = defaults->svi_load_line_en;
+@@ -534,7 +534,7 @@ static int ci_populate_svi_load_line(struct pp_hwmgr *hwmgr)
+ static int ci_populate_tdc_limit(struct pp_hwmgr *hwmgr)
+ {
+ uint16_t tdc_limit;
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+ const struct ci_pt_defaults *defaults = smu_data->power_tune_defaults;
+
+ tdc_limit = (uint16_t)(hwmgr->dyn_state.cac_dtp_table->usTDC * 256);
+@@ -549,7 +549,7 @@ static int ci_populate_tdc_limit(struct pp_hwmgr *hwmgr)
+
+ static int ci_populate_dw8(struct pp_hwmgr *hwmgr, uint32_t fuse_table_offset)
+ {
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+ const struct ci_pt_defaults *defaults = smu_data->power_tune_defaults;
+ uint32_t temp;
+
+@@ -569,7 +569,7 @@ static int ci_populate_dw8(struct pp_hwmgr *hwmgr, uint32_t fuse_table_offset)
+ static int ci_populate_fuzzy_fan(struct pp_hwmgr *hwmgr, uint32_t fuse_table_offset)
+ {
+ uint16_t tmp;
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+
+ if ((hwmgr->thermal_controller.advanceFanControlParameters.usFanOutputSensitivity & (1 << 15))
+ || 0 == hwmgr->thermal_controller.advanceFanControlParameters.usFanOutputSensitivity)
+@@ -584,7 +584,7 @@ static int ci_populate_fuzzy_fan(struct pp_hwmgr *hwmgr, uint32_t fuse_table_off
+ static int ci_populate_bapm_vddc_vid_sidd(struct pp_hwmgr *hwmgr)
+ {
+ int i;
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+ uint8_t *hi_vid = smu_data->power_tune_table.BapmVddCVidHiSidd;
+ uint8_t *lo_vid = smu_data->power_tune_table.BapmVddCVidLoSidd;
+ uint8_t *hi2_vid = smu_data->power_tune_table.BapmVddCVidHiSidd2;
+@@ -613,7 +613,7 @@ static int ci_populate_bapm_vddc_vid_sidd(struct pp_hwmgr *hwmgr)
+ static int ci_populate_vddc_vid(struct pp_hwmgr *hwmgr)
+ {
+ int i;
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+ uint8_t *vid = smu_data->power_tune_table.VddCVid;
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+
+@@ -629,7 +629,7 @@ static int ci_populate_vddc_vid(struct pp_hwmgr *hwmgr)
+
+ static int ci_min_max_v_gnbl_pm_lid_from_bapm_vddc(struct pp_hwmgr *hwmgr)
+ {
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+ u8 *hi_vid = smu_data->power_tune_table.BapmVddCVidHiSidd;
+ u8 *lo_vid = smu_data->power_tune_table.BapmVddCVidLoSidd;
+ int i, min, max;
+@@ -661,7 +661,7 @@ static int ci_min_max_v_gnbl_pm_lid_from_bapm_vddc(struct pp_hwmgr *hwmgr)
+
+ static int ci_populate_bapm_vddc_base_leakage_sidd(struct pp_hwmgr *hwmgr)
+ {
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+ uint16_t HiSidd = smu_data->power_tune_table.BapmVddCBaseLeakageHiSidd;
+ uint16_t LoSidd = smu_data->power_tune_table.BapmVddCBaseLeakageLoSidd;
+ struct phm_cac_tdp_table *cac_table = hwmgr->dyn_state.cac_dtp_table;
+@@ -679,7 +679,7 @@ static int ci_populate_bapm_vddc_base_leakage_sidd(struct pp_hwmgr *hwmgr)
+
+ static int ci_populate_pm_fuses(struct pp_hwmgr *hwmgr)
+ {
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+ uint32_t pm_fuse_table_offset;
+ int ret = 0;
+
+@@ -721,7 +721,7 @@ static int ci_populate_pm_fuses(struct pp_hwmgr *hwmgr)
+
+ static int ci_populate_bapm_parameters_in_dpm_table(struct pp_hwmgr *hwmgr)
+ {
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+ const struct ci_pt_defaults *defaults = smu_data->power_tune_defaults;
+ SMU7_Discrete_DpmTable *dpm_table = &(smu_data->smc_state_table);
+@@ -996,7 +996,7 @@ static int ci_populate_smc_link_level(struct pp_hwmgr *hwmgr, SMU7_Discrete_DpmT
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+ struct smu7_dpm_table *dpm_table = &data->dpm_table;
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+ uint32_t i;
+
+ /* Index dpm_table->pcie_speed_table.count is reserved for PCIE boot level.*/
+@@ -1299,7 +1299,7 @@ static int ci_populate_single_memory_level(
+ int ci_populate_all_memory_levels(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+ struct smu7_dpm_table *dpm_table = &data->dpm_table;
+ int result;
+ struct cgs_system_info sys_info = {0};
+@@ -1683,7 +1683,7 @@ static int ci_populate_memory_timing_parameters(
+ static int ci_program_memory_timing_parameters(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+ int result = 0;
+ SMU7_Discrete_MCArbDramTimingTable arb_regs;
+ uint32_t i, j;
+@@ -1720,7 +1720,7 @@ static int ci_populate_smc_boot_level(struct pp_hwmgr *hwmgr,
+ {
+ int result = 0;
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+
+ table->GraphicsBootLevel = 0;
+ table->MemoryBootLevel = 0;
+@@ -1758,7 +1758,7 @@ static int ci_populate_smc_boot_level(struct pp_hwmgr *hwmgr,
+ static int ci_populate_mc_reg_address(struct pp_hwmgr *hwmgr,
+ SMU7_Discrete_MCRegisters *mc_reg_table)
+ {
+- const struct ci_smumgr *smu_data = (struct ci_smumgr *)hwmgr->smumgr->backend;
++ const struct ci_smumgr *smu_data = (struct ci_smumgr *)hwmgr->smu_backend;
+
+ uint32_t i, j;
+
+@@ -1800,7 +1800,7 @@ static int ci_convert_mc_reg_table_entry_to_smc(
+ SMU7_Discrete_MCRegisterSet *mc_reg_table_data
+ )
+ {
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+ uint32_t i = 0;
+
+ for (i = 0; i < smu_data->mc_reg_table.num_entries; i++) {
+@@ -1844,7 +1844,7 @@ static int ci_convert_mc_reg_table_to_smc(struct pp_hwmgr *hwmgr,
+
+ static int ci_update_and_upload_mc_reg_table(struct pp_hwmgr *hwmgr)
+ {
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+ uint32_t address;
+ int32_t result;
+@@ -1871,7 +1871,7 @@ static int ci_update_and_upload_mc_reg_table(struct pp_hwmgr *hwmgr)
+ static int ci_populate_initial_mc_reg_table(struct pp_hwmgr *hwmgr)
+ {
+ int result;
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+
+ memset(&smu_data->mc_regs, 0x00, sizeof(SMU7_Discrete_MCRegisters));
+ result = ci_populate_mc_reg_address(hwmgr, &(smu_data->mc_regs));
+@@ -1889,7 +1889,7 @@ static int ci_populate_initial_mc_reg_table(struct pp_hwmgr *hwmgr)
+ static int ci_populate_smc_initial_state(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+ uint8_t count, level;
+
+ count = (uint8_t)(hwmgr->dyn_state.vddc_dependency_on_sclk->count);
+@@ -1947,7 +1947,7 @@ int ci_init_smc_table(struct pp_hwmgr *hwmgr)
+ {
+ int result;
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+ SMU7_Discrete_DpmTable *table = &(smu_data->smc_state_table);
+ struct pp_atomctrl_gpio_pin_assignment gpio_pin;
+ u32 i;
+@@ -2126,7 +2126,7 @@ int ci_init_smc_table(struct pp_hwmgr *hwmgr)
+
+ int ci_thermal_setup_fan_table(struct pp_hwmgr *hwmgr)
+ {
+- struct ci_smumgr *ci_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *ci_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+ SMU7_Discrete_FanTable fan_table = { FDO_MODE_HARDWARE };
+ uint32_t duty100;
+ uint32_t t_diff1, t_diff2, pwm_diff1, pwm_diff2;
+@@ -2213,7 +2213,7 @@ static int ci_program_mem_timing_parameters(struct pp_hwmgr *hwmgr)
+ int ci_update_sclk_threshold(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+
+ int result = 0;
+ uint32_t low_sclk_interrupt_threshold = 0;
+@@ -2310,7 +2310,7 @@ static int ci_load_smc_ucode(struct pp_hwmgr *hwmgr)
+
+ cgs_get_firmware_info(hwmgr->device, CGS_UCODE_ID_SMU, &info);
+
+- hwmgr->smumgr->is_kicker = info.is_kicker;
++ hwmgr->is_kicker = info.is_kicker;
+ byte_count = info.image_size;
+ src = (uint8_t *)info.kptr;
+ start_addr = info.ucode_start_address;
+@@ -2357,7 +2357,7 @@ static int ci_upload_firmware(struct pp_hwmgr *hwmgr)
+ int ci_process_firmware_header(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct ci_smumgr *ci_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *ci_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+
+ uint32_t tmp = 0;
+ int result;
+@@ -2669,7 +2669,7 @@ static int ci_set_valid_flag(struct ci_mc_reg_table *table)
+ int ci_initialize_mc_reg_table(struct pp_hwmgr *hwmgr)
+ {
+ int result;
+- struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smumgr->backend);
++ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+ pp_atomctrl_mc_reg_table *table;
+ struct ci_mc_reg_table *ni_table = &smu_data->mc_reg_table;
+ uint8_t module_index = ci_get_memory_modile_index(hwmgr);
+@@ -2730,7 +2730,7 @@ int ci_populate_requested_graphic_levels(struct pp_hwmgr *hwmgr,
+ struct amd_pp_profile *request)
+ {
+ struct ci_smumgr *smu_data = (struct ci_smumgr *)
+- (hwmgr->smumgr->backend);
++ (hwmgr->smu_backend);
+ struct SMU7_Discrete_GraphicsLevel *levels =
+ smu_data->smc_state_table.GraphicsLevel;
+ uint32_t array = smu_data->dpm_table_start +
+diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c
+index d2e24e3..f265f42 100644
+--- a/drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c
++++ b/drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c
+@@ -43,15 +43,15 @@ static int ci_smu_init(struct pp_hwmgr *hwmgr)
+ for (i = 0; i < SMU7_MAX_LEVELS_GRAPHICS; i++)
+ ci_priv->activity_target[i] = 30;
+
+- hwmgr->smumgr->backend = ci_priv;
++ hwmgr->smu_backend = ci_priv;
+
+ return 0;
+ }
+
+ static int ci_smu_fini(struct pp_hwmgr *hwmgr)
+ {
+- kfree(hwmgr->smumgr->backend);
+- hwmgr->smumgr->backend = NULL;
++ kfree(hwmgr->smu_backend);
++ hwmgr->smu_backend = NULL;
+ cgs_rel_firmware(hwmgr->device, CGS_UCODE_ID_SMU);
+ return 0;
+ }
+diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/cz_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/cz_smumgr.c
+index a6fa0e8..8aee9c8 100644
+--- a/drivers/gpu/drm/amd/powerplay/smumgr/cz_smumgr.c
++++ b/drivers/gpu/drm/amd/powerplay/smumgr/cz_smumgr.c
+@@ -181,7 +181,7 @@ static int cz_load_mec_firmware(struct pp_hwmgr *hwmgr)
+ if (hwmgr == NULL || hwmgr->device == NULL)
+ return -EINVAL;
+
+- cz_smu = (struct cz_smumgr *)hwmgr->smumgr->backend;
++ cz_smu = (struct cz_smumgr *)hwmgr->smu_backend;
+ ret = cgs_get_firmware_info(hwmgr->device,
+ CGS_UCODE_ID_CP_MEC, &info);
+
+@@ -330,7 +330,7 @@ static int cz_smu_populate_single_scratch_task(
+ uint8_t type, bool is_last)
+ {
+ uint8_t i;
+- struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smumgr->backend;
++ struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smu_backend;
+ struct TOC *toc = (struct TOC *)cz_smu->toc_buffer.kaddr;
+ struct SMU_Task *task = &toc->tasks[cz_smu->toc_entry_used_count++];
+
+@@ -367,7 +367,7 @@ static int cz_smu_populate_single_ucode_load_task(
+ bool is_last)
+ {
+ uint8_t i;
+- struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smumgr->backend;
++ struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smu_backend;
+ struct TOC *toc = (struct TOC *)cz_smu->toc_buffer.kaddr;
+ struct SMU_Task *task = &toc->tasks[cz_smu->toc_entry_used_count++];
+
+@@ -393,7 +393,7 @@ static int cz_smu_populate_single_ucode_load_task(
+
+ static int cz_smu_construct_toc_for_rlc_aram_save(struct pp_hwmgr *hwmgr)
+ {
+- struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smumgr->backend;
++ struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smu_backend;
+
+ cz_smu->toc_entry_aram = cz_smu->toc_entry_used_count;
+ cz_smu_populate_single_scratch_task(hwmgr,
+@@ -406,7 +406,7 @@ static int cz_smu_construct_toc_for_rlc_aram_save(struct pp_hwmgr *hwmgr)
+ static int cz_smu_initialize_toc_empty_job_list(struct pp_hwmgr *hwmgr)
+ {
+ int i;
+- struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smumgr->backend;
++ struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smu_backend;
+ struct TOC *toc = (struct TOC *)cz_smu->toc_buffer.kaddr;
+
+ for (i = 0; i < NUM_JOBLIST_ENTRIES; i++)
+@@ -417,7 +417,7 @@ static int cz_smu_initialize_toc_empty_job_list(struct pp_hwmgr *hwmgr)
+
+ static int cz_smu_construct_toc_for_vddgfx_enter(struct pp_hwmgr *hwmgr)
+ {
+- struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smumgr->backend;
++ struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smu_backend;
+ struct TOC *toc = (struct TOC *)cz_smu->toc_buffer.kaddr;
+
+ toc->JobList[JOB_GFX_SAVE] = (uint8_t)cz_smu->toc_entry_used_count;
+@@ -435,7 +435,7 @@ static int cz_smu_construct_toc_for_vddgfx_enter(struct pp_hwmgr *hwmgr)
+
+ static int cz_smu_construct_toc_for_vddgfx_exit(struct pp_hwmgr *hwmgr)
+ {
+- struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smumgr->backend;
++ struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smu_backend;
+ struct TOC *toc = (struct TOC *)cz_smu->toc_buffer.kaddr;
+
+ toc->JobList[JOB_GFX_RESTORE] = (uint8_t)cz_smu->toc_entry_used_count;
+@@ -477,7 +477,7 @@ static int cz_smu_construct_toc_for_vddgfx_exit(struct pp_hwmgr *hwmgr)
+
+ static int cz_smu_construct_toc_for_power_profiling(struct pp_hwmgr *hwmgr)
+ {
+- struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smumgr->backend;
++ struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smu_backend;
+
+ cz_smu->toc_entry_power_profiling_index = cz_smu->toc_entry_used_count;
+
+@@ -489,7 +489,7 @@ static int cz_smu_construct_toc_for_power_profiling(struct pp_hwmgr *hwmgr)
+
+ static int cz_smu_construct_toc_for_bootup(struct pp_hwmgr *hwmgr)
+ {
+- struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smumgr->backend;
++ struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smu_backend;
+
+ cz_smu->toc_entry_initialize_index = cz_smu->toc_entry_used_count;
+
+@@ -517,7 +517,7 @@ static int cz_smu_construct_toc_for_bootup(struct pp_hwmgr *hwmgr)
+
+ static int cz_smu_construct_toc_for_clock_table(struct pp_hwmgr *hwmgr)
+ {
+- struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smumgr->backend;
++ struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smu_backend;
+
+ cz_smu->toc_entry_clock_table = cz_smu->toc_entry_used_count;
+
+@@ -530,7 +530,7 @@ static int cz_smu_construct_toc_for_clock_table(struct pp_hwmgr *hwmgr)
+
+ static int cz_smu_construct_toc(struct pp_hwmgr *hwmgr)
+ {
+- struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smumgr->backend;
++ struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smu_backend;
+
+ cz_smu->toc_entry_used_count = 0;
+ cz_smu_initialize_toc_empty_job_list(hwmgr);
+@@ -546,7 +546,7 @@ static int cz_smu_construct_toc(struct pp_hwmgr *hwmgr)
+
+ static int cz_smu_populate_firmware_entries(struct pp_hwmgr *hwmgr)
+ {
+- struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smumgr->backend;
++ struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smu_backend;
+ uint32_t firmware_type;
+ uint32_t i;
+ int ret;
+@@ -588,7 +588,7 @@ static int cz_smu_populate_single_scratch_entry(
+ uint32_t ulsize_byte,
+ struct cz_buffer_entry *entry)
+ {
+- struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smumgr->backend;
++ struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smu_backend;
+ long long mc_addr =
+ ((long long)(cz_smu->smu_buffer.mc_addr_high) << 32)
+ | cz_smu->smu_buffer.mc_addr_low;
+@@ -611,7 +611,7 @@ static int cz_smu_populate_single_scratch_entry(
+
+ static int cz_download_pptable_settings(struct pp_hwmgr *hwmgr, void **table)
+ {
+- struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smumgr->backend;
++ struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smu_backend;
+ unsigned long i;
+
+ for (i = 0; i < cz_smu->scratch_buffer_length; i++) {
+@@ -640,7 +640,7 @@ static int cz_download_pptable_settings(struct pp_hwmgr *hwmgr, void **table)
+
+ static int cz_upload_pptable_settings(struct pp_hwmgr *hwmgr)
+ {
+- struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smumgr->backend;
++ struct cz_smumgr *cz_smu = (struct cz_smumgr *)hwmgr->smu_backend;
+ unsigned long i;
+
+ for (i = 0; i < cz_smu->scratch_buffer_length; i++) {
+@@ -667,10 +667,10 @@ static int cz_upload_pptable_settings(struct pp_hwmgr *hwmgr)
+
+ static int cz_request_smu_load_fw(struct pp_hwmgr *hwmgr)
+ {
+- struct cz_smumgr *cz_smu = (struct cz_smumgr *)(hwmgr->smumgr->backend);
++ struct cz_smumgr *cz_smu = (struct cz_smumgr *)(hwmgr->smu_backend);
+ uint32_t smc_address;
+
+- if (!hwmgr->smumgr->reload_fw) {
++ if (!hwmgr->reload_fw) {
+ pr_info("skip reloading...\n");
+ return 0;
+ }
+@@ -745,7 +745,7 @@ static int cz_smu_init(struct pp_hwmgr *hwmgr)
+ if (cz_smu == NULL)
+ return -ENOMEM;
+
+- hwmgr->smumgr->backend = cz_smu;
++ hwmgr->smu_backend = cz_smu;
+
+ cz_smu->toc_buffer.data_size = 4096;
+ cz_smu->smu_buffer.data_size =
+@@ -830,7 +830,7 @@ static int cz_smu_fini(struct pp_hwmgr *hwmgr)
+ if (hwmgr == NULL || hwmgr->device == NULL)
+ return -EINVAL;
+
+- cz_smu = (struct cz_smumgr *)hwmgr->smumgr->backend;
++ cz_smu = (struct cz_smumgr *)hwmgr->smu_backend;
+ if (cz_smu) {
+ cgs_free_gpu_mem(hwmgr->device,
+ cz_smu->toc_buffer.handle);
+diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c b/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c
+index 843ed7a..b1a66b5 100644
+--- a/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c
++++ b/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c
+@@ -198,7 +198,7 @@ static void get_scl_sda_value(uint8_t line, uint8_t *scl, uint8_t *sda)
+
+ static void fiji_initialize_power_tune_defaults(struct pp_hwmgr *hwmgr)
+ {
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+
+@@ -216,7 +216,7 @@ static void fiji_initialize_power_tune_defaults(struct pp_hwmgr *hwmgr)
+ static int fiji_populate_bapm_parameters_in_dpm_table(struct pp_hwmgr *hwmgr)
+ {
+
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+ const struct fiji_pt_defaults *defaults = smu_data->power_tune_defaults;
+
+ SMU73_Discrete_DpmTable *dpm_table = &(smu_data->smc_state_table);
+@@ -299,7 +299,7 @@ static int fiji_populate_bapm_parameters_in_dpm_table(struct pp_hwmgr *hwmgr)
+
+ static int fiji_populate_svi_load_line(struct pp_hwmgr *hwmgr)
+ {
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+ const struct fiji_pt_defaults *defaults = smu_data->power_tune_defaults;
+
+ smu_data->power_tune_table.SviLoadLineEn = defaults->SviLoadLineEn;
+@@ -314,7 +314,7 @@ static int fiji_populate_svi_load_line(struct pp_hwmgr *hwmgr)
+ static int fiji_populate_tdc_limit(struct pp_hwmgr *hwmgr)
+ {
+ uint16_t tdc_limit;
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+ const struct fiji_pt_defaults *defaults = smu_data->power_tune_defaults;
+@@ -334,7 +334,7 @@ static int fiji_populate_tdc_limit(struct pp_hwmgr *hwmgr)
+
+ static int fiji_populate_dw8(struct pp_hwmgr *hwmgr, uint32_t fuse_table_offset)
+ {
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+ const struct fiji_pt_defaults *defaults = smu_data->power_tune_defaults;
+ uint32_t temp;
+
+@@ -359,7 +359,7 @@ static int fiji_populate_dw8(struct pp_hwmgr *hwmgr, uint32_t fuse_table_offset)
+ static int fiji_populate_temperature_scaler(struct pp_hwmgr *hwmgr)
+ {
+ int i;
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+
+ /* Currently not used. Set all to zero. */
+ for (i = 0; i < 16; i++)
+@@ -370,7 +370,7 @@ static int fiji_populate_temperature_scaler(struct pp_hwmgr *hwmgr)
+
+ static int fiji_populate_fuzzy_fan(struct pp_hwmgr *hwmgr)
+ {
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+
+ if ((hwmgr->thermal_controller.advanceFanControlParameters.
+ usFanOutputSensitivity & (1 << 15)) ||
+@@ -389,7 +389,7 @@ static int fiji_populate_fuzzy_fan(struct pp_hwmgr *hwmgr)
+ static int fiji_populate_gnb_lpml(struct pp_hwmgr *hwmgr)
+ {
+ int i;
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+
+ /* Currently not used. Set all to zero. */
+ for (i = 0; i < 16; i++)
+@@ -400,7 +400,7 @@ static int fiji_populate_gnb_lpml(struct pp_hwmgr *hwmgr)
+
+ static int fiji_populate_bapm_vddc_base_leakage_sidd(struct pp_hwmgr *hwmgr)
+ {
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+ uint16_t HiSidd = smu_data->power_tune_table.BapmVddCBaseLeakageHiSidd;
+@@ -421,7 +421,7 @@ static int fiji_populate_bapm_vddc_base_leakage_sidd(struct pp_hwmgr *hwmgr)
+ static int fiji_populate_pm_fuses(struct pp_hwmgr *hwmgr)
+ {
+ uint32_t pm_fuse_table_offset;
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+
+ if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
+ PHM_PlatformCaps_PowerContainment)) {
+@@ -575,7 +575,7 @@ static int fiji_populate_smc_link_level(struct pp_hwmgr *hwmgr,
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+ struct smu7_dpm_table *dpm_table = &data->dpm_table;
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+ int i;
+
+ /* Index (dpm_table->pcie_speed_table.count)
+@@ -763,7 +763,7 @@ static int fiji_populate_single_graphic_level(struct pp_hwmgr *hwmgr,
+ int fiji_populate_all_graphic_levels(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+
+ struct smu7_dpm_table *dpm_table = &data->dpm_table;
+ struct phm_ppt_v1_information *table_info =
+@@ -989,7 +989,7 @@ static int fiji_populate_single_memory_level(struct pp_hwmgr *hwmgr,
+ int fiji_populate_all_memory_levels(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+ struct smu7_dpm_table *dpm_table = &data->dpm_table;
+ int result;
+ /* populate MCLK dpm table to SMU7 */
+@@ -1341,7 +1341,7 @@ static int fiji_populate_memory_timing_parameters(struct pp_hwmgr *hwmgr,
+ static int fiji_program_memory_timing_parameters(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+ struct SMU73_Discrete_MCArbDramTimingTable arb_regs;
+ uint32_t i, j;
+ int result = 0;
+@@ -1449,7 +1449,7 @@ static int fiji_populate_smc_boot_level(struct pp_hwmgr *hwmgr,
+ static int fiji_populate_smc_initailial_state(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+ uint8_t count, level;
+@@ -1480,7 +1480,7 @@ static int fiji_populate_clock_stretcher_data_table(struct pp_hwmgr *hwmgr)
+ uint32_t ro, efuse, efuse2, clock_freq, volt_without_cks,
+ volt_with_cks, value;
+ uint16_t clock_freq_u16;
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+ uint8_t type, i, j, cks_setting, stretch_amount, stretch_amount2,
+ volt_offset = 0;
+ struct phm_ppt_v1_information *table_info =
+@@ -1685,7 +1685,7 @@ static int fiji_populate_vr_config(struct pp_hwmgr *hwmgr,
+
+ static int fiji_init_arb_table_index(struct pp_hwmgr *hwmgr)
+ {
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+ uint32_t tmp;
+ int result;
+
+@@ -1712,7 +1712,7 @@ static int fiji_init_arb_table_index(struct pp_hwmgr *hwmgr)
+
+ static int fiji_save_default_power_profile(struct pp_hwmgr *hwmgr)
+ {
+- struct fiji_smumgr *data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+ struct SMU73_Discrete_GraphicsLevel *levels =
+ data->smc_state_table.GraphicsLevel;
+ unsigned min_level = 1;
+@@ -1788,7 +1788,7 @@ int fiji_init_smc_table(struct pp_hwmgr *hwmgr)
+ {
+ int result;
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+ struct SMU73_Discrete_DpmTable *table = &(smu_data->smc_state_table);
+@@ -2011,7 +2011,7 @@ int fiji_init_smc_table(struct pp_hwmgr *hwmgr)
+ */
+ int fiji_thermal_setup_fan_table(struct pp_hwmgr *hwmgr)
+ {
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+
+ SMU73_Discrete_FanTable fan_table = { FDO_MODE_HARDWARE };
+ uint32_t duty100;
+@@ -2122,7 +2122,7 @@ int fiji_thermal_setup_fan_table(struct pp_hwmgr *hwmgr)
+ int fiji_thermal_avfs_enable(struct pp_hwmgr *hwmgr)
+ {
+ int ret;
+- struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smumgr->backend);
++ struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smu_backend);
+
+ if (smu_data->avfs.avfs_btc_status != AVFS_BTC_ENABLEAVFS)
+ return 0;
+@@ -2150,7 +2150,7 @@ static int fiji_program_mem_timing_parameters(struct pp_hwmgr *hwmgr)
+ int fiji_update_sclk_threshold(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+
+ int result = 0;
+ uint32_t low_sclk_interrupt_threshold = 0;
+@@ -2244,7 +2244,7 @@ uint32_t fiji_get_mac_definition(uint32_t value)
+
+ static int fiji_update_uvd_smc_table(struct pp_hwmgr *hwmgr)
+ {
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+ uint32_t mm_boot_level_offset, mm_boot_level_value;
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+@@ -2276,7 +2276,7 @@ static int fiji_update_uvd_smc_table(struct pp_hwmgr *hwmgr)
+
+ static int fiji_update_vce_smc_table(struct pp_hwmgr *hwmgr)
+ {
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+ uint32_t mm_boot_level_offset, mm_boot_level_value;
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+@@ -2308,7 +2308,7 @@ static int fiji_update_vce_smc_table(struct pp_hwmgr *hwmgr)
+
+ static int fiji_update_samu_smc_table(struct pp_hwmgr *hwmgr)
+ {
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+ uint32_t mm_boot_level_offset, mm_boot_level_value;
+
+
+@@ -2361,7 +2361,7 @@ int fiji_update_smc_table(struct pp_hwmgr *hwmgr, uint32_t type)
+ int fiji_process_firmware_header(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smu_backend);
+ uint32_t tmp;
+ int result;
+ bool error = false;
+@@ -2464,7 +2464,7 @@ int fiji_populate_requested_graphic_levels(struct pp_hwmgr *hwmgr,
+ struct amd_pp_profile *request)
+ {
+ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)
+- (hwmgr->smumgr->backend);
++ (hwmgr->smu_backend);
+ struct SMU73_Discrete_GraphicsLevel *levels =
+ smu_data->smc_state_table.GraphicsLevel;
+ uint32_t array = smu_data->smu7_data.dpm_table_start +
+diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c
+index dfdcff5..eafac95 100644
+--- a/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c
++++ b/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c
+@@ -166,7 +166,7 @@ static int fiji_setup_pwr_virus(struct pp_hwmgr *hwmgr)
+ uint32_t reg, data;
+
+ const PWR_Command_Table *pvirus = PwrVirusTable;
+- struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smumgr->backend);
++ struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smu_backend);
+
+ for (i = 0; i < PWR_VIRUS_TABLE_SIZE; i++) {
+ switch (pvirus->command) {
+@@ -195,7 +195,7 @@ static int fiji_setup_pwr_virus(struct pp_hwmgr *hwmgr)
+ static int fiji_start_avfs_btc(struct pp_hwmgr *hwmgr)
+ {
+ int result = 0;
+- struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smumgr->backend);
++ struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smu_backend);
+
+ if (0 != smu_data->avfs.avfs_btc_param) {
+ if (0 != smu7_send_msg_to_smc_with_parameter(hwmgr,
+@@ -255,7 +255,7 @@ static int fiji_setup_graphics_level_structure(struct pp_hwmgr *hwmgr)
+
+ static int fiji_avfs_event_mgr(struct pp_hwmgr *hwmgr, bool smu_started)
+ {
+- struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smumgr->backend);
++ struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smu_backend);
+
+ switch (smu_data->avfs.avfs_btc_status) {
+ case AVFS_BTC_COMPLETED_PREVIOUSLY:
+@@ -296,7 +296,7 @@ static int fiji_avfs_event_mgr(struct pp_hwmgr *hwmgr, bool smu_started)
+ static int fiji_start_smu(struct pp_hwmgr *hwmgr)
+ {
+ int result = 0;
+- struct fiji_smumgr *priv = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
++ struct fiji_smumgr *priv = (struct fiji_smumgr *)(hwmgr->smu_backend);
+
+ /* Only start SMC if SMC RAM is not running */
+ if (!(smu7_is_smc_ram_running(hwmgr)
+@@ -375,7 +375,7 @@ static int fiji_smu_init(struct pp_hwmgr *hwmgr)
+ if (fiji_priv == NULL)
+ return -ENOMEM;
+
+- hwmgr->smumgr->backend = fiji_priv;
++ hwmgr->smu_backend = fiji_priv;
+
+ if (smu7_init(hwmgr))
+ return -EINVAL;
+diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smc.c b/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smc.c
+index 89d5a27..efb0fc0 100644
+--- a/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smc.c
++++ b/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smc.c
+@@ -101,7 +101,7 @@ static const struct iceland_pt_defaults defaults_icelandpro = {
+
+ static void iceland_initialize_power_tune_defaults(struct pp_hwmgr *hwmgr)
+ {
+- struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
++ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+ struct cgs_system_info sys_info = {0};
+ uint32_t dev_id;
+
+@@ -130,7 +130,7 @@ static void iceland_initialize_power_tune_defaults(struct pp_hwmgr *hwmgr)
+
+ static int iceland_populate_svi_load_line(struct pp_hwmgr *hwmgr)
+ {
+- struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
++ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+ const struct iceland_pt_defaults *defaults = smu_data->power_tune_defaults;
+
+ smu_data->power_tune_table.SviLoadLineEn = defaults->svi_load_line_en;
+@@ -144,7 +144,7 @@ static int iceland_populate_svi_load_line(struct pp_hwmgr *hwmgr)
+ static int iceland_populate_tdc_limit(struct pp_hwmgr *hwmgr)
+ {
+ uint16_t tdc_limit;
+- struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
++ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+ const struct iceland_pt_defaults *defaults = smu_data->power_tune_defaults;
+
+ tdc_limit = (uint16_t)(hwmgr->dyn_state.cac_dtp_table->usTDC * 256);
+@@ -159,7 +159,7 @@ static int iceland_populate_tdc_limit(struct pp_hwmgr *hwmgr)
+
+ static int iceland_populate_dw8(struct pp_hwmgr *hwmgr, uint32_t fuse_table_offset)
+ {
+- struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
++ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+ const struct iceland_pt_defaults *defaults = smu_data->power_tune_defaults;
+ uint32_t temp;
+
+@@ -184,7 +184,7 @@ static int iceland_populate_temperature_scaler(struct pp_hwmgr *hwmgr)
+ static int iceland_populate_gnb_lpml(struct pp_hwmgr *hwmgr)
+ {
+ int i;
+- struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
++ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+
+ /* Currently not used. Set all to zero. */
+ for (i = 0; i < 8; i++)
+@@ -195,7 +195,7 @@ static int iceland_populate_gnb_lpml(struct pp_hwmgr *hwmgr)
+
+ static int iceland_populate_bapm_vddc_base_leakage_sidd(struct pp_hwmgr *hwmgr)
+ {
+- struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
++ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+ uint16_t HiSidd = smu_data->power_tune_table.BapmVddCBaseLeakageHiSidd;
+ uint16_t LoSidd = smu_data->power_tune_table.BapmVddCBaseLeakageLoSidd;
+ struct phm_cac_tdp_table *cac_table = hwmgr->dyn_state.cac_dtp_table;
+@@ -214,7 +214,7 @@ static int iceland_populate_bapm_vddc_base_leakage_sidd(struct pp_hwmgr *hwmgr)
+ static int iceland_populate_bapm_vddc_vid_sidd(struct pp_hwmgr *hwmgr)
+ {
+ int i;
+- struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
++ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+ uint8_t *hi_vid = smu_data->power_tune_table.BapmVddCVidHiSidd;
+ uint8_t *lo_vid = smu_data->power_tune_table.BapmVddCVidLoSidd;
+
+@@ -240,7 +240,7 @@ static int iceland_populate_bapm_vddc_vid_sidd(struct pp_hwmgr *hwmgr)
+ static int iceland_populate_vddc_vid(struct pp_hwmgr *hwmgr)
+ {
+ int i;
+- struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
++ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+ uint8_t *vid = smu_data->power_tune_table.VddCVid;
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+
+@@ -259,7 +259,7 @@ static int iceland_populate_vddc_vid(struct pp_hwmgr *hwmgr)
+
+ static int iceland_populate_pm_fuses(struct pp_hwmgr *hwmgr)
+ {
+- struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
++ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+ uint32_t pm_fuse_table_offset;
+
+ if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
+@@ -590,7 +590,7 @@ static int iceland_populate_smc_link_level(struct pp_hwmgr *hwmgr, SMU71_Discret
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+ struct smu7_dpm_table *dpm_table = &data->dpm_table;
+- struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
++ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+ uint32_t i;
+
+ /* Index (dpm_table->pcie_speed_table.count) is reserved for PCIE boot level. */
+@@ -805,7 +805,7 @@ static int iceland_populate_single_graphic_level(struct pp_hwmgr *hwmgr,
+ int iceland_populate_all_graphic_levels(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
++ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+ struct smu7_dpm_table *dpm_table = &data->dpm_table;
+ uint32_t level_array_adress = smu_data->smu7_data.dpm_table_start +
+ offsetof(SMU71_Discrete_DpmTable, GraphicsLevel);
+@@ -1207,7 +1207,7 @@ static int iceland_populate_single_memory_level(
+ int iceland_populate_all_memory_levels(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
++ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+ struct smu7_dpm_table *dpm_table = &data->dpm_table;
+ int result;
+
+@@ -1485,7 +1485,7 @@ static int iceland_populate_memory_timing_parameters(
+ static int iceland_program_memory_timing_parameters(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
++ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+ int result = 0;
+ SMU71_Discrete_MCArbDramTimingTable arb_regs;
+ uint32_t i, j;
+@@ -1523,7 +1523,7 @@ static int iceland_populate_smc_boot_level(struct pp_hwmgr *hwmgr,
+ {
+ int result = 0;
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
++ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+ table->GraphicsBootLevel = 0;
+ table->MemoryBootLevel = 0;
+
+@@ -1564,7 +1564,7 @@ static int iceland_populate_smc_boot_level(struct pp_hwmgr *hwmgr,
+ static int iceland_populate_mc_reg_address(struct pp_hwmgr *hwmgr,
+ SMU71_Discrete_MCRegisters *mc_reg_table)
+ {
+- const struct iceland_smumgr *smu_data = (struct iceland_smumgr *)hwmgr->smumgr->backend;
++ const struct iceland_smumgr *smu_data = (struct iceland_smumgr *)hwmgr->smu_backend;
+
+ uint32_t i, j;
+
+@@ -1606,7 +1606,7 @@ static int iceland_convert_mc_reg_table_entry_to_smc(struct pp_hwmgr *hwmgr,
+ SMU71_Discrete_MCRegisterSet *mc_reg_table_data
+ )
+ {
+- struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
++ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+ uint32_t i = 0;
+
+ for (i = 0; i < smu_data->mc_reg_table.num_entries; i++) {
+@@ -1650,7 +1650,7 @@ static int iceland_convert_mc_reg_table_to_smc(struct pp_hwmgr *hwmgr,
+
+ static int iceland_update_and_upload_mc_reg_table(struct pp_hwmgr *hwmgr)
+ {
+- struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
++ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+ uint32_t address;
+ int32_t result;
+@@ -1678,7 +1678,7 @@ static int iceland_update_and_upload_mc_reg_table(struct pp_hwmgr *hwmgr)
+ static int iceland_populate_initial_mc_reg_table(struct pp_hwmgr *hwmgr)
+ {
+ int result;
+- struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
++ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+
+ memset(&smu_data->mc_regs, 0x00, sizeof(SMU71_Discrete_MCRegisters));
+ result = iceland_populate_mc_reg_address(hwmgr, &(smu_data->mc_regs));
+@@ -1696,7 +1696,7 @@ static int iceland_populate_initial_mc_reg_table(struct pp_hwmgr *hwmgr)
+ static int iceland_populate_smc_initial_state(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
++ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+ uint8_t count, level;
+
+ count = (uint8_t)(hwmgr->dyn_state.vddc_dependency_on_sclk->count);
+@@ -1725,7 +1725,7 @@ static int iceland_populate_smc_initial_state(struct pp_hwmgr *hwmgr)
+ static int iceland_populate_bapm_parameters_in_dpm_table(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
++ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+ const struct iceland_pt_defaults *defaults = smu_data->power_tune_defaults;
+ SMU71_Discrete_DpmTable *dpm_table = &(smu_data->smc_state_table);
+ struct phm_cac_tdp_table *cac_dtp_table = hwmgr->dyn_state.cac_dtp_table;
+@@ -1813,7 +1813,7 @@ int iceland_init_smc_table(struct pp_hwmgr *hwmgr)
+ {
+ int result;
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
++ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+ SMU71_Discrete_DpmTable *table = &(smu_data->smc_state_table);
+
+
+@@ -1980,7 +1980,7 @@ int iceland_init_smc_table(struct pp_hwmgr *hwmgr)
+ */
+ int iceland_thermal_setup_fan_table(struct pp_hwmgr *hwmgr)
+ {
+- struct smu7_smumgr *smu7_data = (struct smu7_smumgr *)(hwmgr->smumgr->backend);
++ struct smu7_smumgr *smu7_data = (struct smu7_smumgr *)(hwmgr->smu_backend);
+ SMU71_Discrete_FanTable fan_table = { FDO_MODE_HARDWARE };
+ uint32_t duty100;
+ uint32_t t_diff1, t_diff2, pwm_diff1, pwm_diff2;
+@@ -2070,7 +2070,7 @@ static int iceland_program_mem_timing_parameters(struct pp_hwmgr *hwmgr)
+ int iceland_update_sclk_threshold(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
++ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+
+ int result = 0;
+ uint32_t low_sclk_interrupt_threshold = 0;
+@@ -2168,7 +2168,7 @@ uint32_t iceland_get_mac_definition(uint32_t value)
+ int iceland_process_firmware_header(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct smu7_smumgr *smu7_data = (struct smu7_smumgr *)(hwmgr->smumgr->backend);
++ struct smu7_smumgr *smu7_data = (struct smu7_smumgr *)(hwmgr->smu_backend);
+
+ uint32_t tmp;
+ int result;
+@@ -2508,7 +2508,7 @@ static int iceland_set_valid_flag(struct iceland_mc_reg_table *table)
+ int iceland_initialize_mc_reg_table(struct pp_hwmgr *hwmgr)
+ {
+ int result;
+- struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
++ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+ pp_atomctrl_mc_reg_table *table;
+ struct iceland_mc_reg_table *ni_table = &smu_data->mc_reg_table;
+ uint8_t module_index = iceland_get_memory_modile_index(hwmgr);
+diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smumgr.c
+index d665272..fd63d28 100644
+--- a/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smumgr.c
++++ b/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smumgr.c
+@@ -208,7 +208,7 @@ static int iceland_smu_init(struct pp_hwmgr *hwmgr)
+ if (iceland_priv == NULL)
+ return -ENOMEM;
+
+- hwmgr->smumgr->backend = iceland_priv;
++ hwmgr->smu_backend = iceland_priv;
+
+ if (smu7_init(hwmgr))
+ return -EINVAL;
+diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smc.c b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smc.c
+index 1183151..d0913a6 100644
+--- a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smc.c
++++ b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smc.c
+@@ -148,7 +148,7 @@ static uint16_t scale_fan_gain_settings(uint16_t raw_setting)
+
+ static int polaris10_populate_bapm_parameters_in_dpm_table(struct pp_hwmgr *hwmgr)
+ {
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+
+ const struct polaris10_pt_defaults *defaults = smu_data->power_tune_defaults;
+ SMU74_Discrete_DpmTable *table = &(smu_data->smc_state_table);
+@@ -196,7 +196,7 @@ static int polaris10_populate_bapm_parameters_in_dpm_table(struct pp_hwmgr *hwmg
+
+ static int polaris10_populate_svi_load_line(struct pp_hwmgr *hwmgr)
+ {
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ const struct polaris10_pt_defaults *defaults = smu_data->power_tune_defaults;
+
+ smu_data->power_tune_table.SviLoadLineEn = defaults->SviLoadLineEn;
+@@ -210,7 +210,7 @@ static int polaris10_populate_svi_load_line(struct pp_hwmgr *hwmgr)
+ static int polaris10_populate_tdc_limit(struct pp_hwmgr *hwmgr)
+ {
+ uint16_t tdc_limit;
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+ const struct polaris10_pt_defaults *defaults = smu_data->power_tune_defaults;
+@@ -227,7 +227,7 @@ static int polaris10_populate_tdc_limit(struct pp_hwmgr *hwmgr)
+
+ static int polaris10_populate_dw8(struct pp_hwmgr *hwmgr, uint32_t fuse_table_offset)
+ {
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ const struct polaris10_pt_defaults *defaults = smu_data->power_tune_defaults;
+ uint32_t temp;
+
+@@ -252,7 +252,7 @@ static int polaris10_populate_dw8(struct pp_hwmgr *hwmgr, uint32_t fuse_table_of
+ static int polaris10_populate_temperature_scaler(struct pp_hwmgr *hwmgr)
+ {
+ int i;
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+
+ /* Currently not used. Set all to zero. */
+ for (i = 0; i < 16; i++)
+@@ -263,7 +263,7 @@ static int polaris10_populate_temperature_scaler(struct pp_hwmgr *hwmgr)
+
+ static int polaris10_populate_fuzzy_fan(struct pp_hwmgr *hwmgr)
+ {
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+
+ /* TO DO move to hwmgr */
+ if ((hwmgr->thermal_controller.advanceFanControlParameters.usFanOutputSensitivity & (1 << 15))
+@@ -279,7 +279,7 @@ static int polaris10_populate_fuzzy_fan(struct pp_hwmgr *hwmgr)
+ static int polaris10_populate_gnb_lpml(struct pp_hwmgr *hwmgr)
+ {
+ int i;
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+
+ /* Currently not used. Set all to zero. */
+ for (i = 0; i < 16; i++)
+@@ -290,7 +290,7 @@ static int polaris10_populate_gnb_lpml(struct pp_hwmgr *hwmgr)
+
+ static int polaris10_populate_bapm_vddc_base_leakage_sidd(struct pp_hwmgr *hwmgr)
+ {
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+ uint16_t hi_sidd = smu_data->power_tune_table.BapmVddCBaseLeakageHiSidd;
+@@ -310,7 +310,7 @@ static int polaris10_populate_bapm_vddc_base_leakage_sidd(struct pp_hwmgr *hwmgr
+
+ static int polaris10_populate_pm_fuses(struct pp_hwmgr *hwmgr)
+ {
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ uint32_t pm_fuse_table_offset;
+
+ if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
+@@ -492,7 +492,7 @@ static int polaris10_populate_ulv_level(struct pp_hwmgr *hwmgr,
+ state->VddcOffsetVid = (uint8_t)(table_info->us_ulv_voltage_offset *
+ VOLTAGE_VID_OFFSET_SCALE2 / VOLTAGE_VID_OFFSET_SCALE1);
+
+- if (hwmgr->chip_id == CHIP_POLARIS12 || hwmgr->smumgr->is_kicker)
++ if (hwmgr->chip_id == CHIP_POLARIS12 || hwmgr->is_kicker)
+ state->VddcPhase = data->vddc_phase_shed_control ^ 0x3;
+ else
+ state->VddcPhase = (data->vddc_phase_shed_control) ? 0 : 1;
+@@ -514,7 +514,7 @@ static int polaris10_populate_smc_link_level(struct pp_hwmgr *hwmgr,
+ struct SMU74_Discrete_DpmTable *table)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ struct smu7_dpm_table *dpm_table = &data->dpm_table;
+ int i;
+
+@@ -545,7 +545,7 @@ static int polaris10_populate_smc_link_level(struct pp_hwmgr *hwmgr,
+ static void polaris10_get_sclk_range_table(struct pp_hwmgr *hwmgr,
+ SMU74_Discrete_DpmTable *table)
+ {
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ uint32_t i, ref_clk;
+
+ struct pp_atom_ctrl_sclk_range_table range_table_from_vbios = { { {0} } };
+@@ -595,7 +595,7 @@ static void polaris10_get_sclk_range_table(struct pp_hwmgr *hwmgr,
+ static int polaris10_calculate_sclk_params(struct pp_hwmgr *hwmgr,
+ uint32_t clock, SMU_SclkSetting *sclk_setting)
+ {
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ const SMU74_Discrete_DpmTable *table = &(smu_data->smc_state_table);
+ struct pp_atomctrl_clock_dividers_ai dividers;
+ uint32_t ref_clock;
+@@ -739,7 +739,7 @@ static int polaris10_populate_single_graphic_level(struct pp_hwmgr *hwmgr,
+ int polaris10_populate_all_graphic_levels(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *hw_data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ struct smu7_dpm_table *dpm_table = &hw_data->dpm_table;
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+@@ -887,7 +887,7 @@ static int polaris10_populate_single_memory_level(struct pp_hwmgr *hwmgr,
+ int polaris10_populate_all_memory_levels(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *hw_data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ struct smu7_dpm_table *dpm_table = &hw_data->dpm_table;
+ int result;
+ /* populate MCLK dpm table to SMU7 */
+@@ -1187,7 +1187,7 @@ static int polaris10_populate_memory_timing_parameters(struct pp_hwmgr *hwmgr,
+ static int polaris10_program_memory_timing_parameters(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *hw_data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ struct SMU74_Discrete_MCArbDramTimingTable arb_regs;
+ uint32_t i, j;
+ int result = 0;
+@@ -1306,7 +1306,7 @@ static int polaris10_populate_smc_boot_level(struct pp_hwmgr *hwmgr,
+ static int polaris10_populate_smc_initailial_state(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *hw_data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+ uint8_t count, level;
+@@ -1337,7 +1337,7 @@ static int polaris10_populate_smc_initailial_state(struct pp_hwmgr *hwmgr)
+ static int polaris10_populate_clock_stretcher_data_table(struct pp_hwmgr *hwmgr)
+ {
+ uint32_t ro, efuse, volt_without_cks, volt_with_cks, value, max, min;
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+
+ uint8_t i, stretch_amount, stretch_amount2, volt_offset = 0;
+ struct phm_ppt_v1_information *table_info =
+@@ -1420,7 +1420,7 @@ static int polaris10_populate_vr_config(struct pp_hwmgr *hwmgr,
+ struct SMU74_Discrete_DpmTable *table)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ uint16_t config;
+
+ config = VR_MERGED_WITH_VDDC;
+@@ -1464,7 +1464,7 @@ static int polaris10_populate_vr_config(struct pp_hwmgr *hwmgr,
+ static int polaris10_populate_avfs_parameters(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+
+ SMU74_Discrete_DpmTable *table = &(smu_data->smc_state_table);
+ int result = 0;
+@@ -1552,7 +1552,7 @@ static int polaris10_populate_avfs_parameters(struct pp_hwmgr *hwmgr)
+ */
+ static int polaris10_init_arb_table_index(struct pp_hwmgr *hwmgr)
+ {
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ uint32_t tmp;
+ int result;
+
+@@ -1579,7 +1579,7 @@ static int polaris10_init_arb_table_index(struct pp_hwmgr *hwmgr)
+
+ static void polaris10_initialize_power_tune_defaults(struct pp_hwmgr *hwmgr)
+ {
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+
+@@ -1596,7 +1596,7 @@ static void polaris10_initialize_power_tune_defaults(struct pp_hwmgr *hwmgr)
+
+ static void polaris10_save_default_power_profile(struct pp_hwmgr *hwmgr)
+ {
+- struct polaris10_smumgr *data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ struct SMU74_Discrete_GraphicsLevel *levels =
+ data->smc_state_table.GraphicsLevel;
+ unsigned min_level = 1;
+@@ -1640,7 +1640,8 @@ int polaris10_init_smc_table(struct pp_hwmgr *hwmgr)
+ {
+ int result;
+ struct smu7_hwmgr *hw_data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
++
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+ struct SMU74_Discrete_DpmTable *table = &(smu_data->smc_state_table);
+@@ -1868,7 +1869,7 @@ static int polaris10_program_mem_timing_parameters(struct pp_hwmgr *hwmgr)
+ int polaris10_thermal_avfs_enable(struct pp_hwmgr *hwmgr)
+ {
+ int ret;
+- struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smumgr->backend);
++ struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smu_backend);
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+
+ if (smu_data->avfs.avfs_btc_status == AVFS_BTC_NOTSUPPORTED)
+@@ -1898,7 +1899,7 @@ int polaris10_thermal_avfs_enable(struct pp_hwmgr *hwmgr)
+ */
+ int polaris10_thermal_setup_fan_table(struct pp_hwmgr *hwmgr)
+ {
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ SMU74_Discrete_FanTable fan_table = { FDO_MODE_HARDWARE };
+ uint32_t duty100;
+ uint32_t t_diff1, t_diff2, pwm_diff1, pwm_diff2;
+@@ -2006,7 +2007,7 @@ int polaris10_thermal_setup_fan_table(struct pp_hwmgr *hwmgr)
+
+ static int polaris10_update_uvd_smc_table(struct pp_hwmgr *hwmgr)
+ {
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ uint32_t mm_boot_level_offset, mm_boot_level_value;
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+@@ -2038,7 +2039,7 @@ static int polaris10_update_uvd_smc_table(struct pp_hwmgr *hwmgr)
+
+ static int polaris10_update_vce_smc_table(struct pp_hwmgr *hwmgr)
+ {
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ uint32_t mm_boot_level_offset, mm_boot_level_value;
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+@@ -2070,7 +2071,7 @@ static int polaris10_update_vce_smc_table(struct pp_hwmgr *hwmgr)
+
+ static int polaris10_update_samu_smc_table(struct pp_hwmgr *hwmgr)
+ {
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ uint32_t mm_boot_level_offset, mm_boot_level_value;
+
+
+@@ -2098,7 +2099,7 @@ static int polaris10_update_samu_smc_table(struct pp_hwmgr *hwmgr)
+
+ static int polaris10_update_bif_smc_table(struct pp_hwmgr *hwmgr)
+ {
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+ struct phm_ppt_v1_pcie_table *pcie_table = table_info->pcie_table;
+@@ -2136,7 +2137,7 @@ int polaris10_update_smc_table(struct pp_hwmgr *hwmgr, uint32_t type)
+ int polaris10_update_sclk_threshold(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+
+ int result = 0;
+ uint32_t low_sclk_interrupt_threshold = 0;
+@@ -2241,7 +2242,7 @@ uint32_t polaris10_get_mac_definition(uint32_t value)
+ */
+ int polaris10_process_firmware_header(struct pp_hwmgr *hwmgr)
+ {
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+ uint32_t tmp;
+ int result;
+@@ -2321,7 +2322,7 @@ int polaris10_populate_requested_graphic_levels(struct pp_hwmgr *hwmgr,
+ struct amd_pp_profile *request)
+ {
+ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)
+- (hwmgr->smumgr->backend);
++ (hwmgr->smu_backend);
+ struct SMU74_Discrete_GraphicsLevel *levels =
+ smu_data->smc_state_table.GraphicsLevel;
+ uint32_t array = smu_data->smu7_data.dpm_table_start +
+diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
+index 55ba762..884ba2c 100644
+--- a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
++++ b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
+@@ -67,7 +67,7 @@ static int polaris10_setup_pwr_virus(struct pp_hwmgr *hwmgr)
+ uint32_t reg, data;
+
+ const PWR_Command_Table *pvirus = pwr_virus_table;
+- struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smumgr->backend);
++ struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smu_backend);
+
+ for (i = 0; i < PWR_VIRUS_TABLE_SIZE; i++) {
+ switch (pvirus->command) {
+@@ -96,7 +96,7 @@ static int polaris10_setup_pwr_virus(struct pp_hwmgr *hwmgr)
+ static int polaris10_perform_btc(struct pp_hwmgr *hwmgr)
+ {
+ int result = 0;
+- struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smumgr->backend);
++ struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smu_backend);
+
+ if (0 != smu_data->avfs.avfs_btc_param) {
+ if (0 != smu7_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_PerformBtc, smu_data->avfs.avfs_btc_param)) {
+@@ -174,7 +174,7 @@ static int polaris10_setup_graphics_level_structure(struct pp_hwmgr *hwmgr)
+ static int
+ polaris10_avfs_event_mgr(struct pp_hwmgr *hwmgr, bool SMU_VFT_INTACT)
+ {
+- struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smumgr->backend);
++ struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smu_backend);
+
+ switch (smu_data->avfs.avfs_btc_status) {
+ case AVFS_BTC_COMPLETED_PREVIOUSLY:
+@@ -310,7 +310,7 @@ static int polaris10_start_smu_in_non_protection_mode(struct pp_hwmgr *hwmgr)
+ static int polaris10_start_smu(struct pp_hwmgr *hwmgr)
+ {
+ int result = 0;
+- struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
++ struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend);
+ bool SMU_VFT_INTACT;
+
+ /* Only start SMC if SMC RAM is not running */
+@@ -371,7 +371,7 @@ static int polaris10_smu_init(struct pp_hwmgr *hwmgr)
+ if (smu_data == NULL)
+ return -ENOMEM;
+
+- hwmgr->smumgr->backend = smu_data;
++ hwmgr->smu_backend = smu_data;
+
+ if (smu7_init(hwmgr))
+ return -EINVAL;
+diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/rv_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/rv_smumgr.c
+index 54d3052..f9afe88 100644
+--- a/drivers/gpu/drm/amd/powerplay/smumgr/rv_smumgr.c
++++ b/drivers/gpu/drm/amd/powerplay/smumgr/rv_smumgr.c
+@@ -159,7 +159,7 @@ int rv_copy_table_from_smc(struct pp_hwmgr *hwmgr,
+ uint8_t *table, int16_t table_id)
+ {
+ struct rv_smumgr *priv =
+- (struct rv_smumgr *)(hwmgr->smumgr->backend);
++ (struct rv_smumgr *)(hwmgr->smu_backend);
+
+ PP_ASSERT_WITH_CODE(table_id < MAX_SMU_TABLE,
+ "Invalid SMU Table ID!", return -EINVAL;);
+@@ -192,7 +192,7 @@ int rv_copy_table_to_smc(struct pp_hwmgr *hwmgr,
+ uint8_t *table, int16_t table_id)
+ {
+ struct rv_smumgr *priv =
+- (struct rv_smumgr *)(hwmgr->smumgr->backend);
++ (struct rv_smumgr *)(hwmgr->smu_backend);
+
+ PP_ASSERT_WITH_CODE(table_id < MAX_SMU_TABLE,
+ "Invalid SMU Table ID!", return -EINVAL;);
+@@ -287,7 +287,7 @@ static int rv_smc_disable_vcn(struct pp_hwmgr *hwmgr)
+ static int rv_smu_fini(struct pp_hwmgr *hwmgr)
+ {
+ struct rv_smumgr *priv =
+- (struct rv_smumgr *)(hwmgr->smumgr->backend);
++ (struct rv_smumgr *)(hwmgr->smu_backend);
+
+ if (priv) {
+ rv_smc_disable_sdma(hwmgr);
+@@ -296,8 +296,8 @@ static int rv_smu_fini(struct pp_hwmgr *hwmgr)
+ priv->smu_tables.entry[WMTABLE].handle);
+ cgs_free_gpu_mem(hwmgr->device,
+ priv->smu_tables.entry[CLOCKTABLE].handle);
+- kfree(hwmgr->smumgr->backend);
+- hwmgr->smumgr->backend = NULL;
++ kfree(hwmgr->smu_backend);
++ hwmgr->smu_backend = NULL;
+ }
+
+ return 0;
+@@ -327,7 +327,7 @@ static int rv_smu_init(struct pp_hwmgr *hwmgr)
+ if (!priv)
+ return -ENOMEM;
+
+- hwmgr->smumgr->backend = priv;
++ hwmgr->smu_backend = priv;
+
+ /* allocate space for watermarks table */
+ smu_allocate_memory(hwmgr->device,
+@@ -340,8 +340,8 @@ static int rv_smu_init(struct pp_hwmgr *hwmgr)
+
+ PP_ASSERT_WITH_CODE(kaddr,
+ "[rv_smu_init] Out of memory for wmtable.",
+- kfree(hwmgr->smumgr->backend);
+- hwmgr->smumgr->backend = NULL;
++ kfree(hwmgr->smu_backend);
++ hwmgr->smu_backend = NULL;
+ return -EINVAL);
+
+ priv->smu_tables.entry[WMTABLE].version = 0x01;
+@@ -367,8 +367,8 @@ static int rv_smu_init(struct pp_hwmgr *hwmgr)
+ "[rv_smu_init] Out of memory for CLOCKTABLE.",
+ cgs_free_gpu_mem(hwmgr->device,
+ (cgs_handle_t)priv->smu_tables.entry[WMTABLE].handle);
+- kfree(hwmgr->smumgr->backend);
+- hwmgr->smumgr->backend = NULL;
++ kfree(hwmgr->smu_backend);
++ hwmgr->smu_backend = NULL;
+ return -EINVAL);
+
+ priv->smu_tables.entry[CLOCKTABLE].version = 0x01;
+diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c
+index cd283e5..412cf6f 100644
+--- a/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c
++++ b/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c
+@@ -391,12 +391,12 @@ static int smu7_populate_single_firmware_entry(struct pp_hwmgr *hwmgr,
+
+ int smu7_request_smu_load_fw(struct pp_hwmgr *hwmgr)
+ {
+- struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smumgr->backend);
++ struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smu_backend);
+ uint32_t fw_to_load;
+ int result = 0;
+ struct SMU_DRAMData_TOC *toc;
+
+- if (!hwmgr->smumgr->reload_fw) {
++ if (!hwmgr->reload_fw) {
+ pr_info("skip reloading...\n");
+ return 0;
+ }
+@@ -483,7 +483,7 @@ int smu7_request_smu_load_fw(struct pp_hwmgr *hwmgr)
+ /* Check if the FW has been loaded, SMU will not return if loading has not finished. */
+ int smu7_check_fw_load_finish(struct pp_hwmgr *hwmgr, uint32_t fw_type)
+ {
+- struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smumgr->backend);
++ struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smu_backend);
+ uint32_t fw_mask = smu7_get_mask_for_firmware_type(fw_type);
+ uint32_t ret;
+
+@@ -497,7 +497,7 @@ int smu7_check_fw_load_finish(struct pp_hwmgr *hwmgr, uint32_t fw_type)
+
+ int smu7_reload_firmware(struct pp_hwmgr *hwmgr)
+ {
+- return hwmgr->smumgr->smumgr_funcs->start_smu(hwmgr);
++ return hwmgr->smumgr_funcs->start_smu(hwmgr);
+ }
+
+ static int smu7_upload_smc_firmware_data(struct pp_hwmgr *hwmgr, uint32_t length, uint32_t *src, uint32_t limit)
+@@ -523,7 +523,7 @@ static int smu7_upload_smc_firmware_data(struct pp_hwmgr *hwmgr, uint32_t length
+ int smu7_upload_smu_firmware_image(struct pp_hwmgr *hwmgr)
+ {
+ int result = 0;
+- struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smumgr->backend);
++ struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smu_backend);
+
+ struct cgs_firmware_info info = {0};
+
+@@ -534,7 +534,7 @@ int smu7_upload_smu_firmware_image(struct pp_hwmgr *hwmgr)
+ cgs_get_firmware_info(hwmgr->device,
+ smu7_convert_fw_type_to_cgs(UCODE_ID_SMU_SK), &info);
+
+- hwmgr->smumgr->is_kicker = info.is_kicker;
++ hwmgr->is_kicker = info.is_kicker;
+
+ result = smu7_upload_smc_firmware_data(hwmgr, info.image_size, (uint32_t *)info.kptr, SMU7_SMC_SIZE);
+
+@@ -548,7 +548,7 @@ int smu7_init(struct pp_hwmgr *hwmgr)
+ uint64_t mc_addr = 0;
+
+ /* Allocate memory for backend private data */
+- smu_data = (struct smu7_smumgr *)(hwmgr->smumgr->backend);
++ smu_data = (struct smu7_smumgr *)(hwmgr->smu_backend);
+ smu_data->header_buffer.data_size =
+ ((sizeof(struct SMU_DRAMData_TOC) / 4096) + 1) * 4096;
+
+@@ -568,7 +568,7 @@ int smu7_init(struct pp_hwmgr *hwmgr)
+
+ PP_ASSERT_WITH_CODE((NULL != smu_data->header),
+ "Out of memory.",
+- kfree(hwmgr->smumgr->backend);
++ kfree(hwmgr->smu_backend);
+ cgs_free_gpu_mem(hwmgr->device,
+ (cgs_handle_t)smu_data->header_buffer.handle);
+ return -EINVAL);
+@@ -591,7 +591,7 @@ int smu7_init(struct pp_hwmgr *hwmgr)
+
+ PP_ASSERT_WITH_CODE((NULL != internal_buf),
+ "Out of memory.",
+- kfree(hwmgr->smumgr->backend);
++ kfree(hwmgr->smu_backend);
+ cgs_free_gpu_mem(hwmgr->device,
+ (cgs_handle_t)smu_data->smu_buffer.handle);
+ return -EINVAL);
+@@ -607,8 +607,8 @@ int smu7_init(struct pp_hwmgr *hwmgr)
+
+ int smu7_smu_fini(struct pp_hwmgr *hwmgr)
+ {
+- kfree(hwmgr->smumgr->backend);
+- hwmgr->smumgr->backend = NULL;
++ kfree(hwmgr->smu_backend);
++ hwmgr->smu_backend = NULL;
+ cgs_rel_firmware(hwmgr->device, CGS_UCODE_ID_SMU);
+ return 0;
+ }
+diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c
+index a58346e..d3c12e0 100644
+--- a/drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c
++++ b/drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c
+@@ -27,7 +27,6 @@
+ #include <linux/slab.h>
+ #include <linux/types.h>
+ #include <drm/amdgpu_drm.h>
+-#include "pp_instance.h"
+ #include "smumgr.h"
+ #include "cgs_common.h"
+
+@@ -46,89 +45,18 @@ MODULE_FIRMWARE("amdgpu/polaris12_smc.bin");
+ MODULE_FIRMWARE("amdgpu/vega10_smc.bin");
+ MODULE_FIRMWARE("amdgpu/vega10_acg_smc.bin");
+
+-int smum_early_init(struct pp_instance *handle)
+-{
+- struct pp_smumgr *smumgr;
+-
+- if (handle == NULL)
+- return -EINVAL;
+-
+- smumgr = kzalloc(sizeof(struct pp_smumgr), GFP_KERNEL);
+- if (smumgr == NULL)
+- return -ENOMEM;
+-
+- smumgr->device = handle->device;
+- smumgr->chip_family = handle->chip_family;
+- smumgr->chip_id = handle->chip_id;
+- smumgr->usec_timeout = AMD_MAX_USEC_TIMEOUT;
+- smumgr->reload_fw = 1;
+- handle->smu_mgr = smumgr;
+-
+- switch (smumgr->chip_family) {
+- case AMDGPU_FAMILY_CI:
+- smumgr->smumgr_funcs = &ci_smu_funcs;
+- break;
+- case AMDGPU_FAMILY_CZ:
+- smumgr->smumgr_funcs = &cz_smu_funcs;
+- break;
+- case AMDGPU_FAMILY_VI:
+- switch (smumgr->chip_id) {
+- case CHIP_TOPAZ:
+- smumgr->smumgr_funcs = &iceland_smu_funcs;
+- break;
+- case CHIP_TONGA:
+- smumgr->smumgr_funcs = &tonga_smu_funcs;
+- break;
+- case CHIP_FIJI:
+- smumgr->smumgr_funcs = &fiji_smu_funcs;
+- break;
+- case CHIP_POLARIS11:
+- case CHIP_POLARIS10:
+- case CHIP_POLARIS12:
+- smumgr->smumgr_funcs = &polaris10_smu_funcs;
+- break;
+- default:
+- return -EINVAL;
+- }
+- break;
+- case AMDGPU_FAMILY_AI:
+- switch (smumgr->chip_id) {
+- case CHIP_VEGA10:
+- smumgr->smumgr_funcs = &vega10_smu_funcs;
+- break;
+- default:
+- return -EINVAL;
+- }
+- break;
+- case AMDGPU_FAMILY_RV:
+- switch (smumgr->chip_id) {
+- case CHIP_RAVEN:
+- smumgr->smumgr_funcs = &rv_smu_funcs;
+- break;
+- default:
+- return -EINVAL;
+- }
+- break;
+- default:
+- kfree(smumgr);
+- return -EINVAL;
+- }
+-
+- return 0;
+-}
+-
+ int smum_thermal_avfs_enable(struct pp_hwmgr *hwmgr)
+ {
+- if (NULL != hwmgr->smumgr->smumgr_funcs->thermal_avfs_enable)
+- return hwmgr->smumgr->smumgr_funcs->thermal_avfs_enable(hwmgr);
++ if (NULL != hwmgr->smumgr_funcs->thermal_avfs_enable)
++ return hwmgr->smumgr_funcs->thermal_avfs_enable(hwmgr);
+
+ return 0;
+ }
+
+ int smum_thermal_setup_fan_table(struct pp_hwmgr *hwmgr)
+ {
+- if (NULL != hwmgr->smumgr->smumgr_funcs->thermal_setup_fan_table)
+- return hwmgr->smumgr->smumgr_funcs->thermal_setup_fan_table(hwmgr);
++ if (NULL != hwmgr->smumgr_funcs->thermal_setup_fan_table)
++ return hwmgr->smumgr_funcs->thermal_setup_fan_table(hwmgr);
+
+ return 0;
+ }
+@@ -136,8 +64,8 @@ int smum_thermal_setup_fan_table(struct pp_hwmgr *hwmgr)
+ int smum_update_sclk_threshold(struct pp_hwmgr *hwmgr)
+ {
+
+- if (NULL != hwmgr->smumgr->smumgr_funcs->update_sclk_threshold)
+- return hwmgr->smumgr->smumgr_funcs->update_sclk_threshold(hwmgr);
++ if (NULL != hwmgr->smumgr_funcs->update_sclk_threshold)
++ return hwmgr->smumgr_funcs->update_sclk_threshold(hwmgr);
+
+ return 0;
+ }
+@@ -145,74 +73,74 @@ int smum_update_sclk_threshold(struct pp_hwmgr *hwmgr)
+ int smum_update_smc_table(struct pp_hwmgr *hwmgr, uint32_t type)
+ {
+
+- if (NULL != hwmgr->smumgr->smumgr_funcs->update_smc_table)
+- return hwmgr->smumgr->smumgr_funcs->update_smc_table(hwmgr, type);
++ if (NULL != hwmgr->smumgr_funcs->update_smc_table)
++ return hwmgr->smumgr_funcs->update_smc_table(hwmgr, type);
+
+ return 0;
+ }
+
+ uint32_t smum_get_offsetof(struct pp_hwmgr *hwmgr, uint32_t type, uint32_t member)
+ {
+- if (NULL != hwmgr->smumgr->smumgr_funcs->get_offsetof)
+- return hwmgr->smumgr->smumgr_funcs->get_offsetof(type, member);
++ if (NULL != hwmgr->smumgr_funcs->get_offsetof)
++ return hwmgr->smumgr_funcs->get_offsetof(type, member);
+
+ return 0;
+ }
+
+ int smum_process_firmware_header(struct pp_hwmgr *hwmgr)
+ {
+- if (NULL != hwmgr->smumgr->smumgr_funcs->process_firmware_header)
+- return hwmgr->smumgr->smumgr_funcs->process_firmware_header(hwmgr);
++ if (NULL != hwmgr->smumgr_funcs->process_firmware_header)
++ return hwmgr->smumgr_funcs->process_firmware_header(hwmgr);
+ return 0;
+ }
+
+ int smum_get_argument(struct pp_hwmgr *hwmgr)
+ {
+- if (NULL != hwmgr->smumgr->smumgr_funcs->get_argument)
+- return hwmgr->smumgr->smumgr_funcs->get_argument(hwmgr);
++ if (NULL != hwmgr->smumgr_funcs->get_argument)
++ return hwmgr->smumgr_funcs->get_argument(hwmgr);
+
+ return 0;
+ }
+
+ uint32_t smum_get_mac_definition(struct pp_hwmgr *hwmgr, uint32_t value)
+ {
+- if (NULL != hwmgr->smumgr->smumgr_funcs->get_mac_definition)
+- return hwmgr->smumgr->smumgr_funcs->get_mac_definition(value);
++ if (NULL != hwmgr->smumgr_funcs->get_mac_definition)
++ return hwmgr->smumgr_funcs->get_mac_definition(value);
+
+ return 0;
+ }
+
+ int smum_download_powerplay_table(struct pp_hwmgr *hwmgr, void **table)
+ {
+- if (NULL != hwmgr->smumgr->smumgr_funcs->download_pptable_settings)
+- return hwmgr->smumgr->smumgr_funcs->download_pptable_settings(hwmgr,
++ if (NULL != hwmgr->smumgr_funcs->download_pptable_settings)
++ return hwmgr->smumgr_funcs->download_pptable_settings(hwmgr,
+ table);
+ return 0;
+ }
+
+ int smum_upload_powerplay_table(struct pp_hwmgr *hwmgr)
+ {
+- if (NULL != hwmgr->smumgr->smumgr_funcs->upload_pptable_settings)
+- return hwmgr->smumgr->smumgr_funcs->upload_pptable_settings(hwmgr);
++ if (NULL != hwmgr->smumgr_funcs->upload_pptable_settings)
++ return hwmgr->smumgr_funcs->upload_pptable_settings(hwmgr);
+
+ return 0;
+ }
+
+ int smum_send_msg_to_smc(struct pp_hwmgr *hwmgr, uint16_t msg)
+ {
+- if (hwmgr == NULL || hwmgr->smumgr->smumgr_funcs->send_msg_to_smc == NULL)
++ if (hwmgr == NULL || hwmgr->smumgr_funcs->send_msg_to_smc == NULL)
+ return -EINVAL;
+
+- return hwmgr->smumgr->smumgr_funcs->send_msg_to_smc(hwmgr, msg);
++ return hwmgr->smumgr_funcs->send_msg_to_smc(hwmgr, msg);
+ }
+
+ int smum_send_msg_to_smc_with_parameter(struct pp_hwmgr *hwmgr,
+ uint16_t msg, uint32_t parameter)
+ {
+ if (hwmgr == NULL ||
+- hwmgr->smumgr->smumgr_funcs->send_msg_to_smc_with_parameter == NULL)
++ hwmgr->smumgr_funcs->send_msg_to_smc_with_parameter == NULL)
+ return -EINVAL;
+- return hwmgr->smumgr->smumgr_funcs->send_msg_to_smc_with_parameter(
++ return hwmgr->smumgr_funcs->send_msg_to_smc_with_parameter(
+ hwmgr, msg, parameter);
+ }
+
+@@ -356,24 +284,24 @@ int smu_free_memory(void *device, void *handle)
+
+ int smum_init_smc_table(struct pp_hwmgr *hwmgr)
+ {
+- if (NULL != hwmgr->smumgr->smumgr_funcs->init_smc_table)
+- return hwmgr->smumgr->smumgr_funcs->init_smc_table(hwmgr);
++ if (NULL != hwmgr->smumgr_funcs->init_smc_table)
++ return hwmgr->smumgr_funcs->init_smc_table(hwmgr);
+
+ return 0;
+ }
+
+ int smum_populate_all_graphic_levels(struct pp_hwmgr *hwmgr)
+ {
+- if (NULL != hwmgr->smumgr->smumgr_funcs->populate_all_graphic_levels)
+- return hwmgr->smumgr->smumgr_funcs->populate_all_graphic_levels(hwmgr);
++ if (NULL != hwmgr->smumgr_funcs->populate_all_graphic_levels)
++ return hwmgr->smumgr_funcs->populate_all_graphic_levels(hwmgr);
+
+ return 0;
+ }
+
+ int smum_populate_all_memory_levels(struct pp_hwmgr *hwmgr)
+ {
+- if (NULL != hwmgr->smumgr->smumgr_funcs->populate_all_memory_levels)
+- return hwmgr->smumgr->smumgr_funcs->populate_all_memory_levels(hwmgr);
++ if (NULL != hwmgr->smumgr_funcs->populate_all_memory_levels)
++ return hwmgr->smumgr_funcs->populate_all_memory_levels(hwmgr);
+
+ return 0;
+ }
+@@ -381,16 +309,16 @@ int smum_populate_all_memory_levels(struct pp_hwmgr *hwmgr)
+ /*this interface is needed by island ci/vi */
+ int smum_initialize_mc_reg_table(struct pp_hwmgr *hwmgr)
+ {
+- if (NULL != hwmgr->smumgr->smumgr_funcs->initialize_mc_reg_table)
+- return hwmgr->smumgr->smumgr_funcs->initialize_mc_reg_table(hwmgr);
++ if (NULL != hwmgr->smumgr_funcs->initialize_mc_reg_table)
++ return hwmgr->smumgr_funcs->initialize_mc_reg_table(hwmgr);
+
+ return 0;
+ }
+
+ bool smum_is_dpm_running(struct pp_hwmgr *hwmgr)
+ {
+- if (NULL != hwmgr->smumgr->smumgr_funcs->is_dpm_running)
+- return hwmgr->smumgr->smumgr_funcs->is_dpm_running(hwmgr);
++ if (NULL != hwmgr->smumgr_funcs->is_dpm_running)
++ return hwmgr->smumgr_funcs->is_dpm_running(hwmgr);
+
+ return true;
+ }
+@@ -398,8 +326,8 @@ bool smum_is_dpm_running(struct pp_hwmgr *hwmgr)
+ int smum_populate_requested_graphic_levels(struct pp_hwmgr *hwmgr,
+ struct amd_pp_profile *request)
+ {
+- if (hwmgr->smumgr->smumgr_funcs->populate_requested_graphic_levels)
+- return hwmgr->smumgr->smumgr_funcs->populate_requested_graphic_levels(
++ if (hwmgr->smumgr_funcs->populate_requested_graphic_levels)
++ return hwmgr->smumgr_funcs->populate_requested_graphic_levels(
+ hwmgr, request);
+
+ return 0;
+@@ -407,8 +335,8 @@ int smum_populate_requested_graphic_levels(struct pp_hwmgr *hwmgr,
+
+ bool smum_is_hw_avfs_present(struct pp_hwmgr *hwmgr)
+ {
+- if (hwmgr->smumgr->smumgr_funcs->is_hw_avfs_present)
+- return hwmgr->smumgr->smumgr_funcs->is_hw_avfs_present(hwmgr);
++ if (hwmgr->smumgr_funcs->is_hw_avfs_present)
++ return hwmgr->smumgr_funcs->is_hw_avfs_present(hwmgr);
+
+ return false;
+ }
+diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smc.c b/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smc.c
+index 68e1e19..1f720cc 100644
+--- a/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smc.c
++++ b/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smc.c
+@@ -406,7 +406,7 @@ static int tonga_populate_smc_link_level(struct pp_hwmgr *hwmgr, SMU72_Discrete_
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+ struct smu7_dpm_table *dpm_table = &data->dpm_table;
+- struct tonga_smumgr *smu_data = (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ struct tonga_smumgr *smu_data = (struct tonga_smumgr *)(hwmgr->smu_backend);
+ uint32_t i;
+
+ /* Index (dpm_table->pcie_speed_table.count) is reserved for PCIE boot level. */
+@@ -598,7 +598,7 @@ static int tonga_populate_single_graphic_level(struct pp_hwmgr *hwmgr,
+ int tonga_populate_all_graphic_levels(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct tonga_smumgr *smu_data = (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ struct tonga_smumgr *smu_data = (struct tonga_smumgr *)(hwmgr->smu_backend);
+ struct phm_ppt_v1_information *pptable_info = (struct phm_ppt_v1_information *)(hwmgr->pptable);
+ struct smu7_dpm_table *dpm_table = &data->dpm_table;
+ struct phm_ppt_v1_pcie_table *pcie_table = pptable_info->pcie_table;
+@@ -1002,7 +1002,7 @@ int tonga_populate_all_memory_levels(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+ struct tonga_smumgr *smu_data =
+- (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ (struct tonga_smumgr *)(hwmgr->smu_backend);
+ struct smu7_dpm_table *dpm_table = &data->dpm_table;
+ int result;
+
+@@ -1090,7 +1090,7 @@ static int tonga_populate_smc_acpi_level(struct pp_hwmgr *hwmgr,
+ {
+ int result = 0;
+ struct tonga_smumgr *smu_data =
+- (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ (struct tonga_smumgr *)(hwmgr->smu_backend);
+ const struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+ struct pp_atomctrl_clock_dividers_vi dividers;
+
+@@ -1454,7 +1454,7 @@ static int tonga_program_memory_timing_parameters(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+ struct tonga_smumgr *smu_data =
+- (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ (struct tonga_smumgr *)(hwmgr->smu_backend);
+ int result = 0;
+ SMU72_Discrete_MCArbDramTimingTable arb_regs;
+ uint32_t i, j;
+@@ -1492,7 +1492,7 @@ static int tonga_populate_smc_boot_level(struct pp_hwmgr *hwmgr,
+ int result = 0;
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+ struct tonga_smumgr *smu_data =
+- (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ (struct tonga_smumgr *)(hwmgr->smu_backend);
+ table->GraphicsBootLevel = 0;
+ table->MemoryBootLevel = 0;
+
+@@ -1543,7 +1543,7 @@ static int tonga_populate_clock_stretcher_data_table(struct pp_hwmgr *hwmgr)
+ volt_with_cks, value;
+ uint16_t clock_freq_u16;
+ struct tonga_smumgr *smu_data =
+- (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ (struct tonga_smumgr *)(hwmgr->smu_backend);
+ uint8_t type, i, j, cks_setting, stretch_amount, stretch_amount2,
+ volt_offset = 0;
+ struct phm_ppt_v1_information *table_info =
+@@ -1784,7 +1784,7 @@ static int tonga_populate_vr_config(struct pp_hwmgr *hwmgr,
+ */
+ static int tonga_init_arb_table_index(struct pp_hwmgr *hwmgr)
+ {
+- struct tonga_smumgr *smu_data = (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ struct tonga_smumgr *smu_data = (struct tonga_smumgr *)(hwmgr->smu_backend);
+ uint32_t tmp;
+ int result;
+
+@@ -1814,7 +1814,7 @@ static int tonga_init_arb_table_index(struct pp_hwmgr *hwmgr)
+ static int tonga_populate_bapm_parameters_in_dpm_table(struct pp_hwmgr *hwmgr)
+ {
+ struct tonga_smumgr *smu_data =
+- (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ (struct tonga_smumgr *)(hwmgr->smu_backend);
+ const struct tonga_pt_defaults *defaults = smu_data->power_tune_defaults;
+ SMU72_Discrete_DpmTable *dpm_table = &(smu_data->smc_state_table);
+ struct phm_ppt_v1_information *table_info =
+@@ -1861,7 +1861,7 @@ static int tonga_populate_bapm_parameters_in_dpm_table(struct pp_hwmgr *hwmgr)
+ static int tonga_populate_svi_load_line(struct pp_hwmgr *hwmgr)
+ {
+ struct tonga_smumgr *smu_data =
+- (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ (struct tonga_smumgr *)(hwmgr->smu_backend);
+ const struct tonga_pt_defaults *defaults = smu_data->power_tune_defaults;
+
+ smu_data->power_tune_table.SviLoadLineEn = defaults->svi_load_line_en;
+@@ -1876,7 +1876,7 @@ static int tonga_populate_tdc_limit(struct pp_hwmgr *hwmgr)
+ {
+ uint16_t tdc_limit;
+ struct tonga_smumgr *smu_data =
+- (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ (struct tonga_smumgr *)(hwmgr->smu_backend);
+ const struct tonga_pt_defaults *defaults = smu_data->power_tune_defaults;
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+@@ -1897,7 +1897,7 @@ static int tonga_populate_tdc_limit(struct pp_hwmgr *hwmgr)
+ static int tonga_populate_dw8(struct pp_hwmgr *hwmgr, uint32_t fuse_table_offset)
+ {
+ struct tonga_smumgr *smu_data =
+- (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ (struct tonga_smumgr *)(hwmgr->smu_backend);
+ const struct tonga_pt_defaults *defaults = smu_data->power_tune_defaults;
+ uint32_t temp;
+
+@@ -1919,7 +1919,7 @@ static int tonga_populate_temperature_scaler(struct pp_hwmgr *hwmgr)
+ {
+ int i;
+ struct tonga_smumgr *smu_data =
+- (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ (struct tonga_smumgr *)(hwmgr->smu_backend);
+
+ /* Currently not used. Set all to zero. */
+ for (i = 0; i < 16; i++)
+@@ -1930,7 +1930,7 @@ static int tonga_populate_temperature_scaler(struct pp_hwmgr *hwmgr)
+
+ static int tonga_populate_fuzzy_fan(struct pp_hwmgr *hwmgr)
+ {
+- struct tonga_smumgr *smu_data = (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ struct tonga_smumgr *smu_data = (struct tonga_smumgr *)(hwmgr->smu_backend);
+
+ if ((hwmgr->thermal_controller.advanceFanControlParameters.
+ usFanOutputSensitivity & (1 << 15)) ||
+@@ -1949,7 +1949,7 @@ static int tonga_populate_gnb_lpml(struct pp_hwmgr *hwmgr)
+ {
+ int i;
+ struct tonga_smumgr *smu_data =
+- (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ (struct tonga_smumgr *)(hwmgr->smu_backend);
+
+ /* Currently not used. Set all to zero. */
+ for (i = 0; i < 16; i++)
+@@ -1961,7 +1961,7 @@ static int tonga_populate_gnb_lpml(struct pp_hwmgr *hwmgr)
+ static int tonga_populate_bapm_vddc_base_leakage_sidd(struct pp_hwmgr *hwmgr)
+ {
+ struct tonga_smumgr *smu_data =
+- (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ (struct tonga_smumgr *)(hwmgr->smu_backend);
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+ uint16_t hi_sidd = smu_data->power_tune_table.BapmVddCBaseLeakageHiSidd;
+@@ -1982,7 +1982,7 @@ static int tonga_populate_bapm_vddc_base_leakage_sidd(struct pp_hwmgr *hwmgr)
+ static int tonga_populate_pm_fuses(struct pp_hwmgr *hwmgr)
+ {
+ struct tonga_smumgr *smu_data =
+- (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ (struct tonga_smumgr *)(hwmgr->smu_backend);
+ uint32_t pm_fuse_table_offset;
+
+ if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
+@@ -2051,7 +2051,7 @@ static int tonga_populate_pm_fuses(struct pp_hwmgr *hwmgr)
+ static int tonga_populate_mc_reg_address(struct pp_hwmgr *hwmgr,
+ SMU72_Discrete_MCRegisters *mc_reg_table)
+ {
+- const struct tonga_smumgr *smu_data = (struct tonga_smumgr *)hwmgr->smumgr->backend;
++ const struct tonga_smumgr *smu_data = (struct tonga_smumgr *)hwmgr->smu_backend;
+
+ uint32_t i, j;
+
+@@ -2097,7 +2097,7 @@ static int tonga_convert_mc_reg_table_entry_to_smc(
+ SMU72_Discrete_MCRegisterSet *mc_reg_table_data
+ )
+ {
+- struct tonga_smumgr *smu_data = (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ struct tonga_smumgr *smu_data = (struct tonga_smumgr *)(hwmgr->smu_backend);
+ uint32_t i = 0;
+
+ for (i = 0; i < smu_data->mc_reg_table.num_entries; i++) {
+@@ -2141,7 +2141,7 @@ static int tonga_convert_mc_reg_table_to_smc(struct pp_hwmgr *hwmgr,
+
+ static int tonga_update_and_upload_mc_reg_table(struct pp_hwmgr *hwmgr)
+ {
+- struct tonga_smumgr *smu_data = (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ struct tonga_smumgr *smu_data = (struct tonga_smumgr *)(hwmgr->smu_backend);
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+ uint32_t address;
+ int32_t result;
+@@ -2172,7 +2172,7 @@ static int tonga_update_and_upload_mc_reg_table(struct pp_hwmgr *hwmgr)
+ static int tonga_populate_initial_mc_reg_table(struct pp_hwmgr *hwmgr)
+ {
+ int result;
+- struct tonga_smumgr *smu_data = (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ struct tonga_smumgr *smu_data = (struct tonga_smumgr *)(hwmgr->smu_backend);
+
+ memset(&smu_data->mc_regs, 0x00, sizeof(SMU72_Discrete_MCRegisters));
+ result = tonga_populate_mc_reg_address(hwmgr, &(smu_data->mc_regs));
+@@ -2191,7 +2191,7 @@ static int tonga_populate_initial_mc_reg_table(struct pp_hwmgr *hwmgr)
+
+ static void tonga_initialize_power_tune_defaults(struct pp_hwmgr *hwmgr)
+ {
+- struct tonga_smumgr *smu_data = (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ struct tonga_smumgr *smu_data = (struct tonga_smumgr *)(hwmgr->smu_backend);
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+
+@@ -2207,7 +2207,7 @@ static void tonga_initialize_power_tune_defaults(struct pp_hwmgr *hwmgr)
+
+ static void tonga_save_default_power_profile(struct pp_hwmgr *hwmgr)
+ {
+- struct tonga_smumgr *data = (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ struct tonga_smumgr *data = (struct tonga_smumgr *)(hwmgr->smu_backend);
+ struct SMU72_Discrete_GraphicsLevel *levels =
+ data->smc_state_table.GraphicsLevel;
+ unsigned min_level = 1;
+@@ -2253,7 +2253,7 @@ int tonga_init_smc_table(struct pp_hwmgr *hwmgr)
+ int result;
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+ struct tonga_smumgr *smu_data =
+- (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ (struct tonga_smumgr *)(hwmgr->smu_backend);
+ SMU72_Discrete_DpmTable *table = &(smu_data->smc_state_table);
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+@@ -2507,7 +2507,7 @@ int tonga_init_smc_table(struct pp_hwmgr *hwmgr)
+ int tonga_thermal_setup_fan_table(struct pp_hwmgr *hwmgr)
+ {
+ struct tonga_smumgr *smu_data =
+- (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ (struct tonga_smumgr *)(hwmgr->smu_backend);
+ SMU72_Discrete_FanTable fan_table = { FDO_MODE_HARDWARE };
+ uint32_t duty100;
+ uint32_t t_diff1, t_diff2, pwm_diff1, pwm_diff2;
+@@ -2611,7 +2611,7 @@ int tonga_update_sclk_threshold(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+ struct tonga_smumgr *smu_data =
+- (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ (struct tonga_smumgr *)(hwmgr->smu_backend);
+
+ int result = 0;
+ uint32_t low_sclk_interrupt_threshold = 0;
+@@ -2714,7 +2714,7 @@ uint32_t tonga_get_mac_definition(uint32_t value)
+ static int tonga_update_uvd_smc_table(struct pp_hwmgr *hwmgr)
+ {
+ struct tonga_smumgr *smu_data =
+- (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ (struct tonga_smumgr *)(hwmgr->smu_backend);
+ uint32_t mm_boot_level_offset, mm_boot_level_value;
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+@@ -2748,7 +2748,7 @@ static int tonga_update_uvd_smc_table(struct pp_hwmgr *hwmgr)
+ static int tonga_update_vce_smc_table(struct pp_hwmgr *hwmgr)
+ {
+ struct tonga_smumgr *smu_data =
+- (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ (struct tonga_smumgr *)(hwmgr->smu_backend);
+ uint32_t mm_boot_level_offset, mm_boot_level_value;
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+@@ -2778,7 +2778,7 @@ static int tonga_update_vce_smc_table(struct pp_hwmgr *hwmgr)
+
+ static int tonga_update_samu_smc_table(struct pp_hwmgr *hwmgr)
+ {
+- struct tonga_smumgr *smu_data = (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ struct tonga_smumgr *smu_data = (struct tonga_smumgr *)(hwmgr->smu_backend);
+ uint32_t mm_boot_level_offset, mm_boot_level_value;
+
+ smu_data->smc_state_table.SamuBootLevel = 0;
+@@ -2830,7 +2830,7 @@ int tonga_update_smc_table(struct pp_hwmgr *hwmgr, uint32_t type)
+ int tonga_process_firmware_header(struct pp_hwmgr *hwmgr)
+ {
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+- struct tonga_smumgr *smu_data = (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ struct tonga_smumgr *smu_data = (struct tonga_smumgr *)(hwmgr->smu_backend);
+
+ uint32_t tmp;
+ int result;
+@@ -3156,7 +3156,7 @@ static int tonga_set_valid_flag(struct tonga_mc_reg_table *table)
+ int tonga_initialize_mc_reg_table(struct pp_hwmgr *hwmgr)
+ {
+ int result;
+- struct tonga_smumgr *smu_data = (struct tonga_smumgr *)(hwmgr->smumgr->backend);
++ struct tonga_smumgr *smu_data = (struct tonga_smumgr *)(hwmgr->smu_backend);
+ pp_atomctrl_mc_reg_table *table;
+ struct tonga_mc_reg_table *ni_table = &smu_data->mc_reg_table;
+ uint8_t module_index = tonga_get_memory_modile_index(hwmgr);
+@@ -3239,7 +3239,7 @@ int tonga_populate_requested_graphic_levels(struct pp_hwmgr *hwmgr,
+ struct amd_pp_profile *request)
+ {
+ struct tonga_smumgr *smu_data = (struct tonga_smumgr *)
+- (hwmgr->smumgr->backend);
++ (hwmgr->smu_backend);
+ struct SMU72_Discrete_GraphicsLevel *levels =
+ smu_data->smc_state_table.GraphicsLevel;
+ uint32_t array = smu_data->smu7_data.dpm_table_start +
+diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c
+index c10e6f8..105cb2a 100644
+--- a/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c
++++ b/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c
+@@ -176,7 +176,7 @@ static int tonga_smu_init(struct pp_hwmgr *hwmgr)
+ if (tonga_priv == NULL)
+ return -ENOMEM;
+
+- hwmgr->smumgr->backend = tonga_priv;
++ hwmgr->smu_backend = tonga_priv;
+
+ if (smu7_init(hwmgr))
+ return -EINVAL;
+diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/vega10_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/vega10_smumgr.c
+index c631270..4cb5d34 100644
+--- a/drivers/gpu/drm/amd/powerplay/smumgr/vega10_smumgr.c
++++ b/drivers/gpu/drm/amd/powerplay/smumgr/vega10_smumgr.c
+@@ -224,7 +224,7 @@ int vega10_copy_table_from_smc(struct pp_hwmgr *hwmgr,
+ uint8_t *table, int16_t table_id)
+ {
+ struct vega10_smumgr *priv =
+- (struct vega10_smumgr *)(hwmgr->smumgr->backend);
++ (struct vega10_smumgr *)(hwmgr->smu_backend);
+
+ PP_ASSERT_WITH_CODE(table_id < MAX_SMU_TABLE,
+ "Invalid SMU Table ID!", return -EINVAL);
+@@ -262,7 +262,7 @@ int vega10_copy_table_to_smc(struct pp_hwmgr *hwmgr,
+ uint8_t *table, int16_t table_id)
+ {
+ struct vega10_smumgr *priv =
+- (struct vega10_smumgr *)(hwmgr->smumgr->backend);
++ (struct vega10_smumgr *)(hwmgr->smu_backend);
+
+ PP_ASSERT_WITH_CODE(table_id < MAX_SMU_TABLE,
+ "Invalid SMU Table ID!", return -EINVAL);
+@@ -339,7 +339,7 @@ int vega10_get_smc_features(struct pp_hwmgr *hwmgr,
+ int vega10_set_tools_address(struct pp_hwmgr *hwmgr)
+ {
+ struct vega10_smumgr *priv =
+- (struct vega10_smumgr *)(hwmgr->smumgr->backend);
++ (struct vega10_smumgr *)(hwmgr->smu_backend);
+
+ if (priv->smu_tables.entry[TOOLSTABLE].table_addr_high ||
+ priv->smu_tables.entry[TOOLSTABLE].table_addr_low) {
+@@ -412,7 +412,7 @@ static int vega10_smu_init(struct pp_hwmgr *hwmgr)
+ if (!priv)
+ return -ENOMEM;
+
+- hwmgr->smumgr->backend = priv;
++ hwmgr->smu_backend = priv;
+
+ /* allocate space for pptable */
+ smu_allocate_memory(hwmgr->device,
+@@ -425,7 +425,7 @@ static int vega10_smu_init(struct pp_hwmgr *hwmgr)
+
+ PP_ASSERT_WITH_CODE(kaddr,
+ "[vega10_smu_init] Out of memory for pptable.",
+- kfree(hwmgr->smumgr->backend);
++ kfree(hwmgr->smu_backend);
+ cgs_free_gpu_mem(hwmgr->device,
+ (cgs_handle_t)handle);
+ return -EINVAL);
+@@ -451,7 +451,7 @@ static int vega10_smu_init(struct pp_hwmgr *hwmgr)
+
+ PP_ASSERT_WITH_CODE(kaddr,
+ "[vega10_smu_init] Out of memory for wmtable.",
+- kfree(hwmgr->smumgr->backend);
++ kfree(hwmgr->smu_backend);
+ cgs_free_gpu_mem(hwmgr->device,
+ (cgs_handle_t)priv->smu_tables.entry[PPTABLE].handle);
+ cgs_free_gpu_mem(hwmgr->device,
+@@ -479,7 +479,7 @@ static int vega10_smu_init(struct pp_hwmgr *hwmgr)
+
+ PP_ASSERT_WITH_CODE(kaddr,
+ "[vega10_smu_init] Out of memory for avfs table.",
+- kfree(hwmgr->smumgr->backend);
++ kfree(hwmgr->smu_backend);
+ cgs_free_gpu_mem(hwmgr->device,
+ (cgs_handle_t)priv->smu_tables.entry[PPTABLE].handle);
+ cgs_free_gpu_mem(hwmgr->device,
+@@ -532,7 +532,7 @@ static int vega10_smu_init(struct pp_hwmgr *hwmgr)
+
+ PP_ASSERT_WITH_CODE(kaddr,
+ "[vega10_smu_init] Out of memory for avfs fuse table.",
+- kfree(hwmgr->smumgr->backend);
++ kfree(hwmgr->smu_backend);
+ cgs_free_gpu_mem(hwmgr->device,
+ (cgs_handle_t)priv->smu_tables.entry[PPTABLE].handle);
+ cgs_free_gpu_mem(hwmgr->device,
+@@ -561,7 +561,7 @@ static int vega10_smu_init(struct pp_hwmgr *hwmgr)
+ static int vega10_smu_fini(struct pp_hwmgr *hwmgr)
+ {
+ struct vega10_smumgr *priv =
+- (struct vega10_smumgr *)(hwmgr->smumgr->backend);
++ (struct vega10_smumgr *)(hwmgr->smu_backend);
+
+ if (priv) {
+ cgs_free_gpu_mem(hwmgr->device,
+@@ -575,8 +575,8 @@ static int vega10_smu_fini(struct pp_hwmgr *hwmgr)
+ (cgs_handle_t)priv->smu_tables.entry[TOOLSTABLE].handle);
+ cgs_free_gpu_mem(hwmgr->device,
+ (cgs_handle_t)priv->smu_tables.entry[AVFSFUSETABLE].handle);
+- kfree(hwmgr->smumgr->backend);
+- hwmgr->smumgr->backend = NULL;
++ kfree(hwmgr->smu_backend);
++ hwmgr->smu_backend = NULL;
+ }
+ return 0;
+ }
+--
+2.7.4
+