aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2400-drm-amd-powerplay-simplified-od_settings-for-each-as.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2400-drm-amd-powerplay-simplified-od_settings-for-each-as.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2400-drm-amd-powerplay-simplified-od_settings-for-each-as.patch386
1 files changed, 386 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2400-drm-amd-powerplay-simplified-od_settings-for-each-as.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2400-drm-amd-powerplay-simplified-od_settings-for-each-as.patch
new file mode 100644
index 00000000..c37c107e
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2400-drm-amd-powerplay-simplified-od_settings-for-each-as.patch
@@ -0,0 +1,386 @@
+From baba029a9ef737afeed348773a004dd4e188f9eb Mon Sep 17 00:00:00 2001
+From: Kevin Wang <kevin1.wang@amd.com>
+Date: Mon, 17 Jun 2019 13:17:27 -0500
+Subject: [PATCH 2400/2940] drm/amd/powerplay: simplified od_settings for each
+ asic
+
+the od_settings is asic related data, so move it to asic file.
+
+Signed-off-by: Kevin Wang <kevin1.wang@amd.com>
+Reviewed-by: Huang Rui <ray.huang@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/powerplay/amdgpu_smu.c | 12 --
+ .../gpu/drm/amd/powerplay/inc/amdgpu_smu.h | 7 +-
+ drivers/gpu/drm/amd/powerplay/vega20_ppt.c | 139 +++++++++---------
+ drivers/gpu/drm/amd/powerplay/vega20_ppt.h | 6 +
+ 4 files changed, 77 insertions(+), 87 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
+index a01ace1bda34..edd1da68c47d 100644
+--- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
++++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
+@@ -1058,21 +1058,9 @@ static int smu_hw_fini(void *handle)
+ kfree(table_context->max_sustainable_clocks);
+ table_context->max_sustainable_clocks = NULL;
+
+- kfree(table_context->od_feature_capabilities);
+- table_context->od_feature_capabilities = NULL;
+-
+- kfree(table_context->od_settings_max);
+- table_context->od_settings_max = NULL;
+-
+- kfree(table_context->od_settings_min);
+- table_context->od_settings_min = NULL;
+-
+ kfree(table_context->overdrive_table);
+ table_context->overdrive_table = NULL;
+
+- kfree(table_context->od8_settings);
+- table_context->od8_settings = NULL;
+-
+ kfree(smu->irq_source);
+ smu->irq_source = NULL;
+
+diff --git a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
+index 82c2c02347ac..a8e5f4d69861 100644
+--- a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
++++ b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
+@@ -431,13 +431,7 @@ struct smu_table_context
+ uint8_t thermal_controller_type;
+ uint16_t TDPODLimit;
+
+- uint8_t *od_feature_capabilities;
+- uint32_t *od_settings_max;
+- uint32_t *od_settings_min;
+ void *overdrive_table;
+- void *od8_settings;
+- bool od_gfxclk_update;
+- bool od_memclk_update;
+ };
+
+ struct smu_dpm_context {
+@@ -510,6 +504,7 @@ struct smu_context
+ struct smu_power_context smu_power;
+ struct smu_feature smu_feature;
+ struct amd_pp_display_configuration *display_config;
++ void *od_settings;
+
+ uint32_t pstate_sclk;
+ uint32_t pstate_mclk;
+diff --git a/drivers/gpu/drm/amd/powerplay/vega20_ppt.c b/drivers/gpu/drm/amd/powerplay/vega20_ppt.c
+index 43f9e2acb8e6..514e40979f19 100644
+--- a/drivers/gpu/drm/amd/powerplay/vega20_ppt.c
++++ b/drivers/gpu/drm/amd/powerplay/vega20_ppt.c
+@@ -365,6 +365,7 @@ static int vega20_setup_od8_information(struct smu_context *smu)
+ {
+ ATOM_Vega20_POWERPLAYTABLE *powerplay_table = NULL;
+ struct smu_table_context *table_context = &smu->smu_table;
++ struct vega20_od8_settings *od8_settings = (struct vega20_od8_settings *)smu->od_settings;
+
+ uint32_t od_feature_count, od_feature_array_size,
+ od_setting_count, od_setting_array_size;
+@@ -385,13 +386,13 @@ static int vega20_setup_od8_information(struct smu_context *smu)
+
+ od_feature_array_size = sizeof(uint8_t) * od_feature_count;
+
+- if (table_context->od_feature_capabilities)
++ if (od8_settings->od_feature_capabilities)
+ return -EINVAL;
+
+- table_context->od_feature_capabilities = kmemdup(&powerplay_table->OverDrive8Table.ODFeatureCapabilities,
++ od8_settings->od_feature_capabilities = kmemdup(&powerplay_table->OverDrive8Table.ODFeatureCapabilities,
+ od_feature_array_size,
+ GFP_KERNEL);
+- if (!table_context->od_feature_capabilities)
++ if (!od8_settings->od_feature_capabilities)
+ return -ENOMEM;
+
+ /* Setup correct ODSettingCount, and store ODSettingArray from
+@@ -404,31 +405,31 @@ static int vega20_setup_od8_information(struct smu_context *smu)
+
+ od_setting_array_size = sizeof(uint32_t) * od_setting_count;
+
+- if (table_context->od_settings_max)
++ if (od8_settings->od_settings_max)
+ return -EINVAL;
+
+- table_context->od_settings_max = kmemdup(&powerplay_table->OverDrive8Table.ODSettingsMax,
++ od8_settings->od_settings_max = kmemdup(&powerplay_table->OverDrive8Table.ODSettingsMax,
+ od_setting_array_size,
+ GFP_KERNEL);
+
+- if (!table_context->od_settings_max) {
+- kfree(table_context->od_feature_capabilities);
+- table_context->od_feature_capabilities = NULL;
++ if (!od8_settings->od_settings_max) {
++ kfree(od8_settings->od_feature_capabilities);
++ od8_settings->od_feature_capabilities = NULL;
+ return -ENOMEM;
+ }
+
+- if (table_context->od_settings_min)
++ if (od8_settings->od_settings_min)
+ return -EINVAL;
+
+- table_context->od_settings_min = kmemdup(&powerplay_table->OverDrive8Table.ODSettingsMin,
++ od8_settings->od_settings_min = kmemdup(&powerplay_table->OverDrive8Table.ODSettingsMin,
+ od_setting_array_size,
+ GFP_KERNEL);
+
+- if (!table_context->od_settings_min) {
+- kfree(table_context->od_feature_capabilities);
+- table_context->od_feature_capabilities = NULL;
+- kfree(table_context->od_settings_max);
+- table_context->od_settings_max = NULL;
++ if (!od8_settings->od_settings_min) {
++ kfree(od8_settings->od_feature_capabilities);
++ od8_settings->od_feature_capabilities = NULL;
++ kfree(od8_settings->od_settings_max);
++ od8_settings->od_settings_max = NULL;
+ return -ENOMEM;
+ }
+ }
+@@ -940,7 +941,7 @@ static int vega20_print_clk_levels(struct smu_context *smu,
+ struct smu_dpm_context *smu_dpm = &smu->smu_dpm;
+ struct vega20_dpm_table *dpm_table = NULL;
+ struct vega20_od8_settings *od8_settings =
+- (struct vega20_od8_settings *)table_context->od8_settings;
++ (struct vega20_od8_settings *)smu->od_settings;
+ OverDriveTable_t *od_table =
+ (OverDriveTable_t *)(table_context->overdrive_table);
+ PPTable_t *pptable = (PPTable_t *)table_context->driver_pptable;
+@@ -1496,22 +1497,22 @@ static int vega20_set_default_od8_setttings(struct smu_context *smu)
+ PPTable_t *smc_pptable = table_context->driver_pptable;
+ int i, ret;
+
+- if (table_context->od8_settings)
++ if (smu->od_settings)
+ return -EINVAL;
+
+- table_context->od8_settings = kzalloc(sizeof(struct vega20_od8_settings), GFP_KERNEL);
++ od8_settings = kzalloc(sizeof(struct vega20_od8_settings), GFP_KERNEL);
+
+- if (!table_context->od8_settings)
++ if (od8_settings)
+ return -ENOMEM;
+
+- od8_settings = (struct vega20_od8_settings *)table_context->od8_settings;
++ smu->od_settings = (void *)od8_settings;
+
+ if (smu_feature_is_enabled(smu, SMU_FEATURE_DPM_SOCCLK_BIT)) {
+- if (table_context->od_feature_capabilities[ATOM_VEGA20_ODFEATURE_GFXCLK_LIMITS] &&
+- table_context->od_settings_max[OD8_SETTING_GFXCLK_FMAX] > 0 &&
+- table_context->od_settings_min[OD8_SETTING_GFXCLK_FMIN] > 0 &&
+- (table_context->od_settings_max[OD8_SETTING_GFXCLK_FMAX] >=
+- table_context->od_settings_min[OD8_SETTING_GFXCLK_FMIN])) {
++ if (od8_settings->od_feature_capabilities[ATOM_VEGA20_ODFEATURE_GFXCLK_LIMITS] &&
++ od8_settings->od_settings_max[OD8_SETTING_GFXCLK_FMAX] > 0 &&
++ od8_settings->od_settings_min[OD8_SETTING_GFXCLK_FMIN] > 0 &&
++ (od8_settings->od_settings_max[OD8_SETTING_GFXCLK_FMAX] >=
++ od8_settings->od_settings_min[OD8_SETTING_GFXCLK_FMIN])) {
+ od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_FMIN].feature_id =
+ OD8_GFXCLK_LIMITS;
+ od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_FMAX].feature_id =
+@@ -1522,13 +1523,13 @@ static int vega20_set_default_od8_setttings(struct smu_context *smu)
+ od_table->GfxclkFmax;
+ }
+
+- if (table_context->od_feature_capabilities[ATOM_VEGA20_ODFEATURE_GFXCLK_CURVE] &&
+- (table_context->od_settings_min[OD8_SETTING_GFXCLK_VOLTAGE1] >=
++ if (od8_settings->od_feature_capabilities[ATOM_VEGA20_ODFEATURE_GFXCLK_CURVE] &&
++ (od8_settings->od_settings_min[OD8_SETTING_GFXCLK_VOLTAGE1] >=
+ smc_pptable->MinVoltageGfx / VOLTAGE_SCALE) &&
+- (table_context->od_settings_max[OD8_SETTING_GFXCLK_VOLTAGE3] <=
++ (od8_settings->od_settings_max[OD8_SETTING_GFXCLK_VOLTAGE3] <=
+ smc_pptable->MaxVoltageGfx / VOLTAGE_SCALE) &&
+- (table_context->od_settings_min[OD8_SETTING_GFXCLK_VOLTAGE1] <=
+- table_context->od_settings_max[OD8_SETTING_GFXCLK_VOLTAGE3])) {
++ (od8_settings->od_settings_min[OD8_SETTING_GFXCLK_VOLTAGE1] <=
++ od8_settings->od_settings_max[OD8_SETTING_GFXCLK_VOLTAGE3])) {
+ od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_FREQ1].feature_id =
+ OD8_GFXCLK_CURVE;
+ od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_VOLTAGE1].feature_id =
+@@ -1580,11 +1581,11 @@ static int vega20_set_default_od8_setttings(struct smu_context *smu)
+ }
+
+ if (smu_feature_is_enabled(smu, SMU_FEATURE_DPM_UCLK_BIT)) {
+- if (table_context->od_feature_capabilities[ATOM_VEGA20_ODFEATURE_UCLK_MAX] &&
+- table_context->od_settings_min[OD8_SETTING_UCLK_FMAX] > 0 &&
+- table_context->od_settings_max[OD8_SETTING_UCLK_FMAX] > 0 &&
+- (table_context->od_settings_max[OD8_SETTING_UCLK_FMAX] >=
+- table_context->od_settings_min[OD8_SETTING_UCLK_FMAX])) {
++ if (od8_settings->od_feature_capabilities[ATOM_VEGA20_ODFEATURE_UCLK_MAX] &&
++ od8_settings->od_settings_min[OD8_SETTING_UCLK_FMAX] > 0 &&
++ od8_settings->od_settings_max[OD8_SETTING_UCLK_FMAX] > 0 &&
++ (od8_settings->od_settings_max[OD8_SETTING_UCLK_FMAX] >=
++ od8_settings->od_settings_min[OD8_SETTING_UCLK_FMAX])) {
+ od8_settings->od8_settings_array[OD8_SETTING_UCLK_FMAX].feature_id =
+ OD8_UCLK_MAX;
+ od8_settings->od8_settings_array[OD8_SETTING_UCLK_FMAX].default_value =
+@@ -1592,11 +1593,11 @@ static int vega20_set_default_od8_setttings(struct smu_context *smu)
+ }
+ }
+
+- if (table_context->od_feature_capabilities[ATOM_VEGA20_ODFEATURE_POWER_LIMIT] &&
+- table_context->od_settings_min[OD8_SETTING_POWER_PERCENTAGE] > 0 &&
+- table_context->od_settings_min[OD8_SETTING_POWER_PERCENTAGE] <= 100 &&
+- table_context->od_settings_max[OD8_SETTING_POWER_PERCENTAGE] > 0 &&
+- table_context->od_settings_max[OD8_SETTING_POWER_PERCENTAGE] <= 100) {
++ if (od8_settings->od_feature_capabilities[ATOM_VEGA20_ODFEATURE_POWER_LIMIT] &&
++ od8_settings->od_settings_min[OD8_SETTING_POWER_PERCENTAGE] > 0 &&
++ od8_settings->od_settings_min[OD8_SETTING_POWER_PERCENTAGE] <= 100 &&
++ od8_settings->od_settings_max[OD8_SETTING_POWER_PERCENTAGE] > 0 &&
++ od8_settings->od_settings_max[OD8_SETTING_POWER_PERCENTAGE] <= 100) {
+ od8_settings->od8_settings_array[OD8_SETTING_POWER_PERCENTAGE].feature_id =
+ OD8_POWER_LIMIT;
+ od8_settings->od8_settings_array[OD8_SETTING_POWER_PERCENTAGE].default_value =
+@@ -1604,22 +1605,22 @@ static int vega20_set_default_od8_setttings(struct smu_context *smu)
+ }
+
+ if (smu_feature_is_enabled(smu, SMU_FEATURE_FAN_CONTROL_BIT)) {
+- if (table_context->od_feature_capabilities[ATOM_VEGA20_ODFEATURE_FAN_ACOUSTIC_LIMIT] &&
+- table_context->od_settings_min[OD8_SETTING_FAN_ACOUSTIC_LIMIT] > 0 &&
+- table_context->od_settings_max[OD8_SETTING_FAN_ACOUSTIC_LIMIT] > 0 &&
+- (table_context->od_settings_max[OD8_SETTING_FAN_ACOUSTIC_LIMIT] >=
+- table_context->od_settings_min[OD8_SETTING_FAN_ACOUSTIC_LIMIT])) {
++ if (od8_settings->od_feature_capabilities[ATOM_VEGA20_ODFEATURE_FAN_ACOUSTIC_LIMIT] &&
++ od8_settings->od_settings_min[OD8_SETTING_FAN_ACOUSTIC_LIMIT] > 0 &&
++ od8_settings->od_settings_max[OD8_SETTING_FAN_ACOUSTIC_LIMIT] > 0 &&
++ (od8_settings->od_settings_max[OD8_SETTING_FAN_ACOUSTIC_LIMIT] >=
++ od8_settings->od_settings_min[OD8_SETTING_FAN_ACOUSTIC_LIMIT])) {
+ od8_settings->od8_settings_array[OD8_SETTING_FAN_ACOUSTIC_LIMIT].feature_id =
+ OD8_ACOUSTIC_LIMIT_SCLK;
+ od8_settings->od8_settings_array[OD8_SETTING_FAN_ACOUSTIC_LIMIT].default_value =
+ od_table->FanMaximumRpm;
+ }
+
+- if (table_context->od_feature_capabilities[ATOM_VEGA20_ODFEATURE_FAN_SPEED_MIN] &&
+- table_context->od_settings_min[OD8_SETTING_FAN_MIN_SPEED] > 0 &&
+- table_context->od_settings_max[OD8_SETTING_FAN_MIN_SPEED] > 0 &&
+- (table_context->od_settings_max[OD8_SETTING_FAN_MIN_SPEED] >=
+- table_context->od_settings_min[OD8_SETTING_FAN_MIN_SPEED])) {
++ if (od8_settings->od_feature_capabilities[ATOM_VEGA20_ODFEATURE_FAN_SPEED_MIN] &&
++ od8_settings->od_settings_min[OD8_SETTING_FAN_MIN_SPEED] > 0 &&
++ od8_settings->od_settings_max[OD8_SETTING_FAN_MIN_SPEED] > 0 &&
++ (od8_settings->od_settings_max[OD8_SETTING_FAN_MIN_SPEED] >=
++ od8_settings->od_settings_min[OD8_SETTING_FAN_MIN_SPEED])) {
+ od8_settings->od8_settings_array[OD8_SETTING_FAN_MIN_SPEED].feature_id =
+ OD8_FAN_SPEED_MIN;
+ od8_settings->od8_settings_array[OD8_SETTING_FAN_MIN_SPEED].default_value =
+@@ -1628,22 +1629,22 @@ static int vega20_set_default_od8_setttings(struct smu_context *smu)
+ }
+
+ if (smu_feature_is_enabled(smu, SMU_FEATURE_THERMAL_BIT)) {
+- if (table_context->od_feature_capabilities[ATOM_VEGA20_ODFEATURE_TEMPERATURE_FAN] &&
+- table_context->od_settings_min[OD8_SETTING_FAN_TARGET_TEMP] > 0 &&
+- table_context->od_settings_max[OD8_SETTING_FAN_TARGET_TEMP] > 0 &&
+- (table_context->od_settings_max[OD8_SETTING_FAN_TARGET_TEMP] >=
+- table_context->od_settings_min[OD8_SETTING_FAN_TARGET_TEMP])) {
++ if (od8_settings->od_feature_capabilities[ATOM_VEGA20_ODFEATURE_TEMPERATURE_FAN] &&
++ od8_settings->od_settings_min[OD8_SETTING_FAN_TARGET_TEMP] > 0 &&
++ od8_settings->od_settings_max[OD8_SETTING_FAN_TARGET_TEMP] > 0 &&
++ (od8_settings->od_settings_max[OD8_SETTING_FAN_TARGET_TEMP] >=
++ od8_settings->od_settings_min[OD8_SETTING_FAN_TARGET_TEMP])) {
+ od8_settings->od8_settings_array[OD8_SETTING_FAN_TARGET_TEMP].feature_id =
+ OD8_TEMPERATURE_FAN;
+ od8_settings->od8_settings_array[OD8_SETTING_FAN_TARGET_TEMP].default_value =
+ od_table->FanTargetTemperature;
+ }
+
+- if (table_context->od_feature_capabilities[ATOM_VEGA20_ODFEATURE_TEMPERATURE_SYSTEM] &&
+- table_context->od_settings_min[OD8_SETTING_OPERATING_TEMP_MAX] > 0 &&
+- table_context->od_settings_max[OD8_SETTING_OPERATING_TEMP_MAX] > 0 &&
+- (table_context->od_settings_max[OD8_SETTING_OPERATING_TEMP_MAX] >=
+- table_context->od_settings_min[OD8_SETTING_OPERATING_TEMP_MAX])) {
++ if (od8_settings->od_feature_capabilities[ATOM_VEGA20_ODFEATURE_TEMPERATURE_SYSTEM] &&
++ od8_settings->od_settings_min[OD8_SETTING_OPERATING_TEMP_MAX] > 0 &&
++ od8_settings->od_settings_max[OD8_SETTING_OPERATING_TEMP_MAX] > 0 &&
++ (od8_settings->od_settings_max[OD8_SETTING_OPERATING_TEMP_MAX] >=
++ od8_settings->od_settings_min[OD8_SETTING_OPERATING_TEMP_MAX])) {
+ od8_settings->od8_settings_array[OD8_SETTING_OPERATING_TEMP_MAX].feature_id =
+ OD8_TEMPERATURE_SYSTEM;
+ od8_settings->od8_settings_array[OD8_SETTING_OPERATING_TEMP_MAX].default_value =
+@@ -1654,9 +1655,9 @@ static int vega20_set_default_od8_setttings(struct smu_context *smu)
+ for (i = 0; i < OD8_SETTING_COUNT; i++) {
+ if (od8_settings->od8_settings_array[i].feature_id) {
+ od8_settings->od8_settings_array[i].min_value =
+- table_context->od_settings_min[i];
++ od8_settings->od_settings_min[i];
+ od8_settings->od8_settings_array[i].max_value =
+- table_context->od_settings_max[i];
++ od8_settings->od_settings_max[i];
+ od8_settings->od8_settings_array[i].current_value =
+ od8_settings->od8_settings_array[i].default_value;
+ } else {
+@@ -2415,7 +2416,7 @@ static int vega20_update_specified_od8_value(struct smu_context *smu,
+ OverDriveTable_t *od_table =
+ (OverDriveTable_t *)(table_context->overdrive_table);
+ struct vega20_od8_settings *od8_settings =
+- (struct vega20_od8_settings *)table_context->od8_settings;
++ (struct vega20_od8_settings *)smu->od_settings;
+
+ switch (index) {
+ case OD8_SETTING_GFXCLK_FMIN:
+@@ -2596,7 +2597,7 @@ static int vega20_odn_edit_dpm_table(struct smu_context *smu,
+ struct vega20_dpm_table *dpm_table = NULL;
+ struct vega20_single_dpm_table *single_dpm_table;
+ struct vega20_od8_settings *od8_settings =
+- (struct vega20_od8_settings *)table_context->od8_settings;
++ (struct vega20_od8_settings *)smu->od_settings;
+ struct pp_clock_levels_with_latency clocks;
+ int32_t input_index, input_clk, input_vol, i;
+ int od8_id;
+@@ -2643,10 +2644,10 @@ static int vega20_odn_edit_dpm_table(struct smu_context *smu,
+
+ if (input_index == 0 && od_table->GfxclkFmin != input_clk) {
+ od_table->GfxclkFmin = input_clk;
+- table_context->od_gfxclk_update = true;
++ od8_settings->od_gfxclk_update = true;
+ } else if (input_index == 1 && od_table->GfxclkFmax != input_clk) {
+ od_table->GfxclkFmax = input_clk;
+- table_context->od_gfxclk_update = true;
++ od8_settings->od_gfxclk_update = true;
+ }
+ }
+
+@@ -2691,7 +2692,7 @@ static int vega20_odn_edit_dpm_table(struct smu_context *smu,
+ }
+
+ if (input_index == 1 && od_table->UclkFmax != input_clk) {
+- table_context->od_gfxclk_update = true;
++ od8_settings->od_gfxclk_update = true;
+ od_table->UclkFmax = input_clk;
+ }
+ }
+@@ -2782,8 +2783,8 @@ static int vega20_odn_edit_dpm_table(struct smu_context *smu,
+ }
+
+ /* retrieve updated gfxclk table */
+- if (table_context->od_gfxclk_update) {
+- table_context->od_gfxclk_update = false;
++ if (od8_settings->od_gfxclk_update) {
++ od8_settings->od_gfxclk_update = false;
+ single_dpm_table = &(dpm_table->gfx_table);
+
+ if (smu_feature_is_enabled(smu, SMU_FEATURE_DPM_GFXCLK_BIT)) {
+diff --git a/drivers/gpu/drm/amd/powerplay/vega20_ppt.h b/drivers/gpu/drm/amd/powerplay/vega20_ppt.h
+index 87f3a8303645..2dc10e47b767 100644
+--- a/drivers/gpu/drm/amd/powerplay/vega20_ppt.h
++++ b/drivers/gpu/drm/amd/powerplay/vega20_ppt.h
+@@ -166,6 +166,12 @@ struct vega20_od8_single_setting {
+
+ struct vega20_od8_settings {
+ struct vega20_od8_single_setting od8_settings_array[OD8_SETTING_COUNT];
++ uint8_t *od_feature_capabilities;
++ uint32_t *od_settings_max;
++ uint32_t *od_settings_min;
++ void *od8_settings;
++ bool od_gfxclk_update;
++ bool od_memclk_update;
+ };
+
+ extern void vega20_set_ppt_funcs(struct smu_context *smu);
+--
+2.17.1
+