aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvan Quan <evan.quan@amd.com>2018-09-13 04:14:33 -0400
committerAlex Deucher <alexander.deucher@amd.com>2018-09-19 13:37:55 -0400
commitb1f82cb21231ccfec3c15b628f8deed778cce22b (patch)
tree35186e49e0ef6f21a65895b196d9ca370716c083
parent8a1304a5b4310b941d08c988326d15673ed0f689 (diff)
drm/amd/powerplay: update OD to take voltage value instead of offset
With the latest SMC fw, we are able to get the voltage value for specific frequency point. So, we update the OD relates to take absolute voltage instead of offset. Signed-off-by: Evan Quan <evan.quan@amd.com> Acked-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c12
-rw-r--r--drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c112
-rw-r--r--drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.h4
-rw-r--r--drivers/gpu/drm/amd/powerplay/inc/smu11_driver_if.h6
-rw-r--r--drivers/gpu/drm/amd/powerplay/inc/vega20_ppsmc.h3
5 files changed, 96 insertions, 41 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
index 396c826100e6..8c334fc808c2 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
@@ -502,7 +502,7 @@ static ssize_t amdgpu_set_pp_table(struct device *dev,
502 * 502 *
503 * - maximum memory clock labeled OD_MCLK 503 * - maximum memory clock labeled OD_MCLK
504 * 504 *
505 * - three <frequency, voltage offset> points labeled OD_VDDC_CURVE. 505 * - three <frequency, voltage> points labeled OD_VDDC_CURVE.
506 * They can be used to calibrate the sclk voltage curve. 506 * They can be used to calibrate the sclk voltage curve.
507 * 507 *
508 * - a list of valid ranges for sclk, mclk, and voltage curve points 508 * - a list of valid ranges for sclk, mclk, and voltage curve points
@@ -519,11 +519,11 @@ static ssize_t amdgpu_set_pp_table(struct device *dev,
519 * "m 1 800" will update maximum mclk to be 800Mhz. 519 * "m 1 800" will update maximum mclk to be 800Mhz.
520 * 520 *
521 * For sclk voltage curve, enter the new values by writing a 521 * For sclk voltage curve, enter the new values by writing a
522 * string that contains "vc point clock voff" to the file. The 522 * string that contains "vc point clock voltage" to the file. The
523 * points are indexed by 0, 1 and 2. E.g., "vc 0 300 10" will 523 * points are indexed by 0, 1 and 2. E.g., "vc 0 300 600" will
524 * update point1 with clock set as 300Mhz and voltage increased 524 * update point1 with clock set as 300Mhz and voltage as
525 * by 10mV. "vc 2 1000 -10" will update point3 with clock set 525 * 600mV. "vc 2 1000 1000" will update point3 with clock set
526 * as 1000Mhz and voltage drop by 10mV. 526 * as 1000Mhz and voltage 1000mV.
527 * 527 *
528 * - When you have edited all of the states as needed, write "c" (commit) 528 * - When you have edited all of the states as needed, write "c" (commit)
529 * to the file to commit your changes 529 * to the file to commit your changes
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c
index dc6144183968..4f9bf6049d1c 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c
@@ -1001,6 +1001,26 @@ static int vega20_od8_set_feature_id(
1001 return 0; 1001 return 0;
1002} 1002}
1003 1003
1004static int vega20_od8_get_gfx_clock_base_voltage(
1005 struct pp_hwmgr *hwmgr,
1006 uint32_t *voltage,
1007 uint32_t freq)
1008{
1009 int ret = 0;
1010
1011 ret = smum_send_msg_to_smc_with_parameter(hwmgr,
1012 PPSMC_MSG_GetAVFSVoltageByDpm,
1013 ((AVFS_CURVE << 24) | (OD8_HOTCURVE_TEMPERATURE << 16) | freq));
1014 PP_ASSERT_WITH_CODE(!ret,
1015 "[GetBaseVoltage] failed to get GFXCLK AVFS voltage from SMU!",
1016 return ret);
1017
1018 vega20_read_arg_from_smc(hwmgr, voltage);
1019 *voltage = *voltage / VOLTAGE_SCALE;
1020
1021 return 0;
1022}
1023
1004static int vega20_od8_initialize_default_settings( 1024static int vega20_od8_initialize_default_settings(
1005 struct pp_hwmgr *hwmgr) 1025 struct pp_hwmgr *hwmgr)
1006{ 1026{
@@ -1036,18 +1056,41 @@ static int vega20_od8_initialize_default_settings(
1036 } 1056 }
1037 1057
1038 if (od8_settings->overdrive8_capabilities & OD8_GFXCLK_CURVE) { 1058 if (od8_settings->overdrive8_capabilities & OD8_GFXCLK_CURVE) {
1059 od_table->GfxclkFreq1 = od_table->GfxclkFmin;
1039 od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_FREQ1].default_value = 1060 od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_FREQ1].default_value =
1040 od_table->GfxclkFreq1; 1061 od_table->GfxclkFreq1;
1041 od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_VOLTAGE1].default_value = 1062
1042 od_table->GfxclkOffsetVolt1; 1063 od_table->GfxclkFreq3 = od_table->GfxclkFmax;
1043 od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_FREQ2].default_value =
1044 od_table->GfxclkFreq2;
1045 od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_VOLTAGE2].default_value =
1046 od_table->GfxclkOffsetVolt2;
1047 od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_FREQ3].default_value = 1064 od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_FREQ3].default_value =
1048 od_table->GfxclkFreq3; 1065 od_table->GfxclkFreq3;
1049 od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_VOLTAGE3].default_value = 1066
1050 od_table->GfxclkOffsetVolt3; 1067 od_table->GfxclkFreq2 = (od_table->GfxclkFreq1 + od_table->GfxclkFreq3) / 2;
1068 od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_FREQ2].default_value =
1069 od_table->GfxclkFreq2;
1070
1071 PP_ASSERT_WITH_CODE(!vega20_od8_get_gfx_clock_base_voltage(hwmgr,
1072 &(od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_VOLTAGE1].default_value),
1073 od_table->GfxclkFreq1),
1074 "[PhwVega20_OD8_InitializeDefaultSettings] Failed to get Base clock voltage from SMU!",
1075 od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_VOLTAGE1].default_value = 0);
1076 od_table->GfxclkVolt1 = od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_VOLTAGE1].default_value
1077 * VOLTAGE_SCALE;
1078
1079 PP_ASSERT_WITH_CODE(!vega20_od8_get_gfx_clock_base_voltage(hwmgr,
1080 &(od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_VOLTAGE2].default_value),
1081 od_table->GfxclkFreq2),
1082 "[PhwVega20_OD8_InitializeDefaultSettings] Failed to get Base clock voltage from SMU!",
1083 od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_VOLTAGE2].default_value = 0);
1084 od_table->GfxclkVolt2 = od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_VOLTAGE2].default_value
1085 * VOLTAGE_SCALE;
1086
1087 PP_ASSERT_WITH_CODE(!vega20_od8_get_gfx_clock_base_voltage(hwmgr,
1088 &(od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_VOLTAGE3].default_value),
1089 od_table->GfxclkFreq3),
1090 "[PhwVega20_OD8_InitializeDefaultSettings] Failed to get Base clock voltage from SMU!",
1091 od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_VOLTAGE3].default_value = 0);
1092 od_table->GfxclkVolt3 = od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_VOLTAGE3].default_value
1093 * VOLTAGE_SCALE;
1051 } else { 1094 } else {
1052 od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_FREQ1].default_value = 1095 od8_settings->od8_settings_array[OD8_SETTING_GFXCLK_FREQ1].default_value =
1053 0; 1096 0;
@@ -1086,7 +1129,7 @@ static int vega20_od8_initialize_default_settings(
1086 1129
1087 if (od8_settings->overdrive8_capabilities & OD8_FAN_SPEED_MIN) 1130 if (od8_settings->overdrive8_capabilities & OD8_FAN_SPEED_MIN)
1088 od8_settings->od8_settings_array[OD8_SETTING_FAN_MIN_SPEED].default_value = 1131 od8_settings->od8_settings_array[OD8_SETTING_FAN_MIN_SPEED].default_value =
1089 od_table->FanMinimumPwm; 1132 od_table->FanMinimumPwm * data->smc_state_table.pp_table.FanMaximumRpm / 100;
1090 else 1133 else
1091 od8_settings->od8_settings_array[OD8_SETTING_FAN_MIN_SPEED].default_value = 1134 od8_settings->od8_settings_array[OD8_SETTING_FAN_MIN_SPEED].default_value =
1092 0; 1135 0;
@@ -1123,6 +1166,11 @@ static int vega20_od8_initialize_default_settings(
1123 } 1166 }
1124 } 1167 }
1125 1168
1169 ret = vega20_copy_table_to_smc(hwmgr, (uint8_t *)od_table, TABLE_OVERDRIVE);
1170 PP_ASSERT_WITH_CODE(!ret,
1171 "Failed to import over drive table!",
1172 return ret);
1173
1126 return 0; 1174 return 0;
1127} 1175}
1128 1176
@@ -1150,19 +1198,19 @@ static int vega20_od8_set_settings(
1150 od_table.GfxclkFreq1 = (uint16_t)value; 1198 od_table.GfxclkFreq1 = (uint16_t)value;
1151 break; 1199 break;
1152 case OD8_SETTING_GFXCLK_VOLTAGE1: 1200 case OD8_SETTING_GFXCLK_VOLTAGE1:
1153 od_table.GfxclkOffsetVolt1 = (uint16_t)value; 1201 od_table.GfxclkVolt1 = (uint16_t)value;
1154 break; 1202 break;
1155 case OD8_SETTING_GFXCLK_FREQ2: 1203 case OD8_SETTING_GFXCLK_FREQ2:
1156 od_table.GfxclkFreq2 = (uint16_t)value; 1204 od_table.GfxclkFreq2 = (uint16_t)value;
1157 break; 1205 break;
1158 case OD8_SETTING_GFXCLK_VOLTAGE2: 1206 case OD8_SETTING_GFXCLK_VOLTAGE2:
1159 od_table.GfxclkOffsetVolt2 = (uint16_t)value; 1207 od_table.GfxclkVolt2 = (uint16_t)value;
1160 break; 1208 break;
1161 case OD8_SETTING_GFXCLK_FREQ3: 1209 case OD8_SETTING_GFXCLK_FREQ3:
1162 od_table.GfxclkFreq3 = (uint16_t)value; 1210 od_table.GfxclkFreq3 = (uint16_t)value;
1163 break; 1211 break;
1164 case OD8_SETTING_GFXCLK_VOLTAGE3: 1212 case OD8_SETTING_GFXCLK_VOLTAGE3:
1165 od_table.GfxclkOffsetVolt3 = (uint16_t)value; 1213 od_table.GfxclkVolt3 = (uint16_t)value;
1166 break; 1214 break;
1167 case OD8_SETTING_UCLK_FMAX: 1215 case OD8_SETTING_UCLK_FMAX:
1168 od_table.UclkFmax = (uint16_t)value; 1216 od_table.UclkFmax = (uint16_t)value;
@@ -2364,6 +2412,7 @@ static int vega20_odn_edit_dpm_table(struct pp_hwmgr *hwmgr,
2364 &(data->smc_state_table.overdrive_table); 2412 &(data->smc_state_table.overdrive_table);
2365 struct pp_clock_levels_with_latency clocks; 2413 struct pp_clock_levels_with_latency clocks;
2366 int32_t input_index, input_clk, input_vol, i; 2414 int32_t input_index, input_clk, input_vol, i;
2415 int od8_id;
2367 int ret; 2416 int ret;
2368 2417
2369 PP_ASSERT_WITH_CODE(input, "NULL user input for clock and voltage", 2418 PP_ASSERT_WITH_CODE(input, "NULL user input for clock and voltage",
@@ -2480,37 +2529,38 @@ static int vega20_odn_edit_dpm_table(struct pp_hwmgr *hwmgr,
2480 return -EINVAL; 2529 return -EINVAL;
2481 } 2530 }
2482 2531
2483 if (input_clk < od8_settings[OD8_SETTING_GFXCLK_FMIN].min_value || 2532 od8_id = OD8_SETTING_GFXCLK_FREQ1 + 2 * input_index;
2484 input_clk > od8_settings[OD8_SETTING_GFXCLK_FMAX].max_value) { 2533 if (input_clk < od8_settings[od8_id].min_value ||
2534 input_clk > od8_settings[od8_id].max_value) {
2485 pr_info("clock freq %d is not within allowed range [%d - %d]\n", 2535 pr_info("clock freq %d is not within allowed range [%d - %d]\n",
2486 input_clk, 2536 input_clk,
2487 od8_settings[OD8_SETTING_GFXCLK_FMIN].min_value, 2537 od8_settings[od8_id].min_value,
2488 od8_settings[OD8_SETTING_GFXCLK_FMAX].max_value); 2538 od8_settings[od8_id].max_value);
2489 return -EINVAL; 2539 return -EINVAL;
2490 } 2540 }
2491 2541
2492 /* TODO: suppose voltage1/2/3 has the same min/max value */ 2542 od8_id = OD8_SETTING_GFXCLK_VOLTAGE1 + 2 * input_index;
2493 if (input_vol < od8_settings[OD8_SETTING_GFXCLK_VOLTAGE1].min_value || 2543 if (input_vol < od8_settings[od8_id].min_value ||
2494 input_vol > od8_settings[OD8_SETTING_GFXCLK_VOLTAGE1].max_value) { 2544 input_vol > od8_settings[od8_id].max_value) {
2495 pr_info("clock voltage offset %d is not within allowed range [%d - %d]\n", 2545 pr_info("clock voltage %d is not within allowed range [%d - %d]\n",
2496 input_vol, 2546 input_vol,
2497 od8_settings[OD8_SETTING_GFXCLK_VOLTAGE1].min_value, 2547 od8_settings[od8_id].min_value,
2498 od8_settings[OD8_SETTING_GFXCLK_VOLTAGE1].max_value); 2548 od8_settings[od8_id].max_value);
2499 return -EINVAL; 2549 return -EINVAL;
2500 } 2550 }
2501 2551
2502 switch (input_index) { 2552 switch (input_index) {
2503 case 0: 2553 case 0:
2504 od_table->GfxclkFreq1 = input_clk; 2554 od_table->GfxclkFreq1 = input_clk;
2505 od_table->GfxclkOffsetVolt1 = input_vol; 2555 od_table->GfxclkVolt1 = input_vol * VOLTAGE_SCALE;
2506 break; 2556 break;
2507 case 1: 2557 case 1:
2508 od_table->GfxclkFreq2 = input_clk; 2558 od_table->GfxclkFreq2 = input_clk;
2509 od_table->GfxclkOffsetVolt2 = input_vol; 2559 od_table->GfxclkVolt2 = input_vol * VOLTAGE_SCALE;
2510 break; 2560 break;
2511 case 2: 2561 case 2:
2512 od_table->GfxclkFreq3 = input_clk; 2562 od_table->GfxclkFreq3 = input_clk;
2513 od_table->GfxclkOffsetVolt3 = input_vol; 2563 od_table->GfxclkVolt3 = input_vol * VOLTAGE_SCALE;
2514 break; 2564 break;
2515 } 2565 }
2516 } 2566 }
@@ -2623,13 +2673,13 @@ static int vega20_print_clock_levels(struct pp_hwmgr *hwmgr,
2623 size = sprintf(buf, "%s:\n", "OD_VDDC_CURVE"); 2673 size = sprintf(buf, "%s:\n", "OD_VDDC_CURVE");
2624 size += sprintf(buf + size, "0: %10uMhz %10dmV\n", 2674 size += sprintf(buf + size, "0: %10uMhz %10dmV\n",
2625 od_table->GfxclkFreq1, 2675 od_table->GfxclkFreq1,
2626 od_table->GfxclkOffsetVolt1); 2676 od_table->GfxclkVolt1 / VOLTAGE_SCALE);
2627 size += sprintf(buf + size, "1: %10uMhz %10dmV\n", 2677 size += sprintf(buf + size, "1: %10uMhz %10dmV\n",
2628 od_table->GfxclkFreq2, 2678 od_table->GfxclkFreq2,
2629 od_table->GfxclkOffsetVolt2); 2679 od_table->GfxclkVolt2 / VOLTAGE_SCALE);
2630 size += sprintf(buf + size, "2: %10uMhz %10dmV\n", 2680 size += sprintf(buf + size, "2: %10uMhz %10dmV\n",
2631 od_table->GfxclkFreq3, 2681 od_table->GfxclkFreq3,
2632 od_table->GfxclkOffsetVolt3); 2682 od_table->GfxclkVolt3 / VOLTAGE_SCALE);
2633 } 2683 }
2634 2684
2635 break; 2685 break;
@@ -2664,19 +2714,19 @@ static int vega20_print_clock_levels(struct pp_hwmgr *hwmgr,
2664 size += sprintf(buf + size, "VDDC_CURVE_SCLK[0]: %7uMhz %10uMhz\n", 2714 size += sprintf(buf + size, "VDDC_CURVE_SCLK[0]: %7uMhz %10uMhz\n",
2665 od8_settings[OD8_SETTING_GFXCLK_FREQ1].min_value, 2715 od8_settings[OD8_SETTING_GFXCLK_FREQ1].min_value,
2666 od8_settings[OD8_SETTING_GFXCLK_FREQ1].max_value); 2716 od8_settings[OD8_SETTING_GFXCLK_FREQ1].max_value);
2667 size += sprintf(buf + size, "VDDC_CURVE_VOFF[0]: %7dmV %11dmV\n", 2717 size += sprintf(buf + size, "VDDC_CURVE_VOLT[0]: %7dmV %11dmV\n",
2668 od8_settings[OD8_SETTING_GFXCLK_VOLTAGE1].min_value, 2718 od8_settings[OD8_SETTING_GFXCLK_VOLTAGE1].min_value,
2669 od8_settings[OD8_SETTING_GFXCLK_VOLTAGE1].max_value); 2719 od8_settings[OD8_SETTING_GFXCLK_VOLTAGE1].max_value);
2670 size += sprintf(buf + size, "VDDC_CURVE_SCLK[1]: %7uMhz %10uMhz\n", 2720 size += sprintf(buf + size, "VDDC_CURVE_SCLK[1]: %7uMhz %10uMhz\n",
2671 od8_settings[OD8_SETTING_GFXCLK_FREQ2].min_value, 2721 od8_settings[OD8_SETTING_GFXCLK_FREQ2].min_value,
2672 od8_settings[OD8_SETTING_GFXCLK_FREQ2].max_value); 2722 od8_settings[OD8_SETTING_GFXCLK_FREQ2].max_value);
2673 size += sprintf(buf + size, "VDDC_CURVE_VOFF[1]: %7dmV %11dmV\n", 2723 size += sprintf(buf + size, "VDDC_CURVE_VOLT[1]: %7dmV %11dmV\n",
2674 od8_settings[OD8_SETTING_GFXCLK_VOLTAGE2].min_value, 2724 od8_settings[OD8_SETTING_GFXCLK_VOLTAGE2].min_value,
2675 od8_settings[OD8_SETTING_GFXCLK_VOLTAGE2].max_value); 2725 od8_settings[OD8_SETTING_GFXCLK_VOLTAGE2].max_value);
2676 size += sprintf(buf + size, "VDDC_CURVE_SCLK[2]: %7uMhz %10uMhz\n", 2726 size += sprintf(buf + size, "VDDC_CURVE_SCLK[2]: %7uMhz %10uMhz\n",
2677 od8_settings[OD8_SETTING_GFXCLK_FREQ3].min_value, 2727 od8_settings[OD8_SETTING_GFXCLK_FREQ3].min_value,
2678 od8_settings[OD8_SETTING_GFXCLK_FREQ3].max_value); 2728 od8_settings[OD8_SETTING_GFXCLK_FREQ3].max_value);
2679 size += sprintf(buf + size, "VDDC_CURVE_VOFF[2]: %7dmV %11dmV\n", 2729 size += sprintf(buf + size, "VDDC_CURVE_VOLT[2]: %7dmV %11dmV\n",
2680 od8_settings[OD8_SETTING_GFXCLK_VOLTAGE3].min_value, 2730 od8_settings[OD8_SETTING_GFXCLK_VOLTAGE3].min_value,
2681 od8_settings[OD8_SETTING_GFXCLK_VOLTAGE3].max_value); 2731 od8_settings[OD8_SETTING_GFXCLK_VOLTAGE3].max_value);
2682 } 2732 }
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.h b/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.h
index 72e4f2a55641..b71a5f25c734 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.h
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.h
@@ -38,6 +38,10 @@
38#define VG20_PSUEDO_NUM_DCEFCLK_DPM_LEVELS 8 38#define VG20_PSUEDO_NUM_DCEFCLK_DPM_LEVELS 8
39#define VG20_PSUEDO_NUM_UCLK_DPM_LEVELS 4 39#define VG20_PSUEDO_NUM_UCLK_DPM_LEVELS 4
40 40
41//OverDriver8 macro defs
42#define AVFS_CURVE 0
43#define OD8_HOTCURVE_TEMPERATURE 85
44
41typedef uint32_t PP_Clock; 45typedef uint32_t PP_Clock;
42 46
43enum { 47enum {
diff --git a/drivers/gpu/drm/amd/powerplay/inc/smu11_driver_if.h b/drivers/gpu/drm/amd/powerplay/inc/smu11_driver_if.h
index 59e621ef33ac..71191deb4e76 100644
--- a/drivers/gpu/drm/amd/powerplay/inc/smu11_driver_if.h
+++ b/drivers/gpu/drm/amd/powerplay/inc/smu11_driver_if.h
@@ -569,11 +569,11 @@ typedef struct {
569 uint16_t GfxclkFmin; 569 uint16_t GfxclkFmin;
570 uint16_t GfxclkFmax; 570 uint16_t GfxclkFmax;
571 uint16_t GfxclkFreq1; 571 uint16_t GfxclkFreq1;
572 int16_t GfxclkOffsetVolt1; 572 uint16_t GfxclkVolt1;
573 uint16_t GfxclkFreq2; 573 uint16_t GfxclkFreq2;
574 int16_t GfxclkOffsetVolt2; 574 uint16_t GfxclkVolt2;
575 uint16_t GfxclkFreq3; 575 uint16_t GfxclkFreq3;
576 int16_t GfxclkOffsetVolt3; 576 uint16_t GfxclkVolt3;
577 uint16_t UclkFmax; 577 uint16_t UclkFmax;
578 int16_t OverDrivePct; 578 int16_t OverDrivePct;
579 uint16_t FanMaximumRpm; 579 uint16_t FanMaximumRpm;
diff --git a/drivers/gpu/drm/amd/powerplay/inc/vega20_ppsmc.h b/drivers/gpu/drm/amd/powerplay/inc/vega20_ppsmc.h
index 165429f717c4..45d64a81e945 100644
--- a/drivers/gpu/drm/amd/powerplay/inc/vega20_ppsmc.h
+++ b/drivers/gpu/drm/amd/powerplay/inc/vega20_ppsmc.h
@@ -117,7 +117,8 @@
117#define PPSMC_MSG_PrepareMp1ForReset 0x59 117#define PPSMC_MSG_PrepareMp1ForReset 0x59
118#define PPSMC_MSG_PrepareMp1ForShutdown 0x5A 118#define PPSMC_MSG_PrepareMp1ForShutdown 0x5A
119#define PPSMC_MSG_SetMGpuFanBoostLimitRpm 0x5D 119#define PPSMC_MSG_SetMGpuFanBoostLimitRpm 0x5D
120#define PPSMC_Message_Count 0x5E 120#define PPSMC_MSG_GetAVFSVoltageByDpm 0x5F
121#define PPSMC_Message_Count 0x60
121 122
122typedef uint32_t PPSMC_Result; 123typedef uint32_t PPSMC_Result;
123typedef uint32_t PPSMC_Msg; 124typedef uint32_t PPSMC_Msg;