diff options
author | Kenneth Feng <kenneth.feng@amd.com> | 2018-03-28 05:58:03 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-04-03 14:08:43 -0400 |
commit | 5d41535c5d66b0a9ad2b7d5d1a72025cbca13ed2 (patch) | |
tree | bd55fac0cb7a44405ef6ab75c1c612af46874276 /drivers/gpu | |
parent | 4a8e06f7aad797e92413a3042d09d3b385fa1fda (diff) |
drm/amd/powerplay: Enable ACG SS feature
Port the atomfirmware.h and populates the
updated pptable to SMU.With the new parameters
in the new pptable, the ACG SS feature is enabled.
Signed-off-by: Kenneth Feng <kenneth.feng@amd.com>
Reviewed-by: Evan Quan <evan.quan@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu')
5 files changed, 39 insertions, 18 deletions
diff --git a/drivers/gpu/drm/amd/include/atomfirmware.h b/drivers/gpu/drm/amd/include/atomfirmware.h index 3ae3da4e7c14..0f5ad54d3fd3 100644 --- a/drivers/gpu/drm/amd/include/atomfirmware.h +++ b/drivers/gpu/drm/amd/include/atomfirmware.h | |||
@@ -1264,9 +1264,9 @@ struct atom_smc_dpm_info_v4_1 | |||
1264 | uint8_t ledpin2; | 1264 | uint8_t ledpin2; |
1265 | uint8_t padding8_4; | 1265 | uint8_t padding8_4; |
1266 | 1266 | ||
1267 | uint8_t gfxclkspreadenabled; | 1267 | uint8_t pllgfxclkspreadenabled; |
1268 | uint8_t gfxclkspreadpercent; | 1268 | uint8_t pllgfxclkspreadpercent; |
1269 | uint16_t gfxclkspreadfreq; | 1269 | uint16_t pllgfxclkspreadfreq; |
1270 | 1270 | ||
1271 | uint8_t uclkspreadenabled; | 1271 | uint8_t uclkspreadenabled; |
1272 | uint8_t uclkspreadpercent; | 1272 | uint8_t uclkspreadpercent; |
@@ -1276,7 +1276,11 @@ struct atom_smc_dpm_info_v4_1 | |||
1276 | uint8_t socclkspreadpercent; | 1276 | uint8_t socclkspreadpercent; |
1277 | uint16_t socclkspreadfreq; | 1277 | uint16_t socclkspreadfreq; |
1278 | 1278 | ||
1279 | uint32_t boardreserved[3]; | 1279 | uint8_t acggfxclkspreadenabled; |
1280 | uint8_t acggfxclkspreadpercent; | ||
1281 | uint16_t acggfxclkspreadfreq; | ||
1282 | |||
1283 | uint32_t boardreserved[10]; | ||
1280 | }; | 1284 | }; |
1281 | 1285 | ||
1282 | 1286 | ||
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/ppatomfwctrl.c b/drivers/gpu/drm/amd/powerplay/hwmgr/ppatomfwctrl.c index 55f9b30513ff..ad42caac033e 100644 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/ppatomfwctrl.c +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/ppatomfwctrl.c | |||
@@ -616,9 +616,9 @@ int pp_atomfwctrl_get_smc_dpm_information(struct pp_hwmgr *hwmgr, | |||
616 | param->ledpin1 = info->ledpin1; | 616 | param->ledpin1 = info->ledpin1; |
617 | param->ledpin2 = info->ledpin2; | 617 | param->ledpin2 = info->ledpin2; |
618 | 618 | ||
619 | param->gfxclkspreadenabled = info->gfxclkspreadenabled; | 619 | param->pllgfxclkspreadenabled = info->pllgfxclkspreadenabled; |
620 | param->gfxclkspreadpercent = info->gfxclkspreadpercent; | 620 | param->pllgfxclkspreadpercent = info->pllgfxclkspreadpercent; |
621 | param->gfxclkspreadfreq = info->gfxclkspreadfreq; | 621 | param->pllgfxclkspreadfreq = info->pllgfxclkspreadfreq; |
622 | 622 | ||
623 | param->uclkspreadenabled = info->uclkspreadenabled; | 623 | param->uclkspreadenabled = info->uclkspreadenabled; |
624 | param->uclkspreadpercent = info->uclkspreadpercent; | 624 | param->uclkspreadpercent = info->uclkspreadpercent; |
@@ -628,5 +628,9 @@ int pp_atomfwctrl_get_smc_dpm_information(struct pp_hwmgr *hwmgr, | |||
628 | param->socclkspreadpercent = info->socclkspreadpercent; | 628 | param->socclkspreadpercent = info->socclkspreadpercent; |
629 | param->socclkspreadfreq = info->socclkspreadfreq; | 629 | param->socclkspreadfreq = info->socclkspreadfreq; |
630 | 630 | ||
631 | param->acggfxclkspreadenabled = info->acggfxclkspreadenabled; | ||
632 | param->acggfxclkspreadpercent = info->acggfxclkspreadpercent; | ||
633 | param->acggfxclkspreadfreq = info->acggfxclkspreadfreq; | ||
634 | |||
631 | return 0; | 635 | return 0; |
632 | } | 636 | } |
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/ppatomfwctrl.h b/drivers/gpu/drm/amd/powerplay/hwmgr/ppatomfwctrl.h index a957d8f08029..8df1e84f27c9 100644 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/ppatomfwctrl.h +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/ppatomfwctrl.h | |||
@@ -192,9 +192,9 @@ struct pp_atomfwctrl_smc_dpm_parameters | |||
192 | uint8_t ledpin1; | 192 | uint8_t ledpin1; |
193 | uint8_t ledpin2; | 193 | uint8_t ledpin2; |
194 | 194 | ||
195 | uint8_t gfxclkspreadenabled; | 195 | uint8_t pllgfxclkspreadenabled; |
196 | uint8_t gfxclkspreadpercent; | 196 | uint8_t pllgfxclkspreadpercent; |
197 | uint16_t gfxclkspreadfreq; | 197 | uint16_t pllgfxclkspreadfreq; |
198 | 198 | ||
199 | uint8_t uclkspreadenabled; | 199 | uint8_t uclkspreadenabled; |
200 | uint8_t uclkspreadpercent; | 200 | uint8_t uclkspreadpercent; |
@@ -203,6 +203,10 @@ struct pp_atomfwctrl_smc_dpm_parameters | |||
203 | uint8_t socclkspreadenabled; | 203 | uint8_t socclkspreadenabled; |
204 | uint8_t socclkspreadpercent; | 204 | uint8_t socclkspreadpercent; |
205 | uint16_t socclkspreadfreq; | 205 | uint16_t socclkspreadfreq; |
206 | |||
207 | uint8_t acggfxclkspreadenabled; | ||
208 | uint8_t acggfxclkspreadpercent; | ||
209 | uint16_t acggfxclkspreadfreq; | ||
206 | }; | 210 | }; |
207 | 211 | ||
208 | int pp_atomfwctrl_get_gpu_pll_dividers_vega10(struct pp_hwmgr *hwmgr, | 212 | int pp_atomfwctrl_get_gpu_pll_dividers_vega10(struct pp_hwmgr *hwmgr, |
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_processpptables.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_processpptables.c index e7d794980b84..b34113f45904 100644 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_processpptables.c +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_processpptables.c | |||
@@ -208,9 +208,9 @@ static int append_vbios_pptable(struct pp_hwmgr *hwmgr, PPTable_t *ppsmc_pptable | |||
208 | ppsmc_pptable->LedPin1 = smc_dpm_table.ledpin1; | 208 | ppsmc_pptable->LedPin1 = smc_dpm_table.ledpin1; |
209 | ppsmc_pptable->LedPin2 = smc_dpm_table.ledpin2; | 209 | ppsmc_pptable->LedPin2 = smc_dpm_table.ledpin2; |
210 | 210 | ||
211 | ppsmc_pptable->GfxclkSpreadEnabled = smc_dpm_table.gfxclkspreadenabled; | 211 | ppsmc_pptable->PllGfxclkSpreadEnabled = smc_dpm_table.pllgfxclkspreadenabled; |
212 | ppsmc_pptable->GfxclkSpreadPercent = smc_dpm_table.gfxclkspreadpercent; | 212 | ppsmc_pptable->PllGfxclkSpreadPercent = smc_dpm_table.pllgfxclkspreadpercent; |
213 | ppsmc_pptable->GfxclkSpreadFreq = smc_dpm_table.gfxclkspreadfreq; | 213 | ppsmc_pptable->PllGfxclkSpreadFreq = smc_dpm_table.pllgfxclkspreadfreq; |
214 | 214 | ||
215 | ppsmc_pptable->UclkSpreadEnabled = 0; | 215 | ppsmc_pptable->UclkSpreadEnabled = 0; |
216 | ppsmc_pptable->UclkSpreadPercent = smc_dpm_table.uclkspreadpercent; | 216 | ppsmc_pptable->UclkSpreadPercent = smc_dpm_table.uclkspreadpercent; |
@@ -220,6 +220,11 @@ static int append_vbios_pptable(struct pp_hwmgr *hwmgr, PPTable_t *ppsmc_pptable | |||
220 | ppsmc_pptable->SocclkSpreadPercent = smc_dpm_table.socclkspreadpercent; | 220 | ppsmc_pptable->SocclkSpreadPercent = smc_dpm_table.socclkspreadpercent; |
221 | ppsmc_pptable->SocclkSpreadFreq = smc_dpm_table.socclkspreadfreq; | 221 | ppsmc_pptable->SocclkSpreadFreq = smc_dpm_table.socclkspreadfreq; |
222 | 222 | ||
223 | ppsmc_pptable->AcgGfxclkSpreadEnabled = smc_dpm_table.acggfxclkspreadenabled; | ||
224 | ppsmc_pptable->AcgGfxclkSpreadPercent = smc_dpm_table.acggfxclkspreadpercent; | ||
225 | ppsmc_pptable->AcgGfxclkSpreadFreq = smc_dpm_table.acggfxclkspreadfreq; | ||
226 | |||
227 | |||
223 | return 0; | 228 | return 0; |
224 | } | 229 | } |
225 | 230 | ||
diff --git a/drivers/gpu/drm/amd/powerplay/inc/vega12/smu9_driver_if.h b/drivers/gpu/drm/amd/powerplay/inc/vega12/smu9_driver_if.h index cd2e503a87da..fb696e3d06cf 100644 --- a/drivers/gpu/drm/amd/powerplay/inc/vega12/smu9_driver_if.h +++ b/drivers/gpu/drm/amd/powerplay/inc/vega12/smu9_driver_if.h | |||
@@ -127,7 +127,7 @@ | |||
127 | #define FEATURE_GFX_EDC_MASK (1 << FEATURE_GFX_EDC_BIT ) | 127 | #define FEATURE_GFX_EDC_MASK (1 << FEATURE_GFX_EDC_BIT ) |
128 | #define FEATURE_GFXOFF_MASK (1 << FEATURE_GFXOFF_BIT ) | 128 | #define FEATURE_GFXOFF_MASK (1 << FEATURE_GFXOFF_BIT ) |
129 | #define FEATURE_CG_MASK (1 << FEATURE_CG_BIT ) | 129 | #define FEATURE_CG_MASK (1 << FEATURE_CG_BIT ) |
130 | #define FEATURE_ACG_MASK (1 << FEATURE_ACG_BIT ) | 130 | #define FEATURE_ACG_MASK (1 << FEATURE_ACG_BIT) |
131 | #define FEATURE_SPARE_29_MASK (1 << FEATURE_SPARE_29_BIT ) | 131 | #define FEATURE_SPARE_29_MASK (1 << FEATURE_SPARE_29_BIT ) |
132 | #define FEATURE_SPARE_30_MASK (1 << FEATURE_SPARE_30_BIT ) | 132 | #define FEATURE_SPARE_30_MASK (1 << FEATURE_SPARE_30_BIT ) |
133 | #define FEATURE_SPARE_31_MASK (1 << FEATURE_SPARE_31_BIT ) | 133 | #define FEATURE_SPARE_31_MASK (1 << FEATURE_SPARE_31_BIT ) |
@@ -481,9 +481,9 @@ typedef struct { | |||
481 | uint8_t padding8_4; | 481 | uint8_t padding8_4; |
482 | 482 | ||
483 | 483 | ||
484 | uint8_t GfxclkSpreadEnabled; | 484 | uint8_t PllGfxclkSpreadEnabled; |
485 | uint8_t GfxclkSpreadPercent; | 485 | uint8_t PllGfxclkSpreadPercent; |
486 | uint16_t GfxclkSpreadFreq; | 486 | uint16_t PllGfxclkSpreadFreq; |
487 | 487 | ||
488 | uint8_t UclkSpreadEnabled; | 488 | uint8_t UclkSpreadEnabled; |
489 | uint8_t UclkSpreadPercent; | 489 | uint8_t UclkSpreadPercent; |
@@ -493,7 +493,11 @@ typedef struct { | |||
493 | uint8_t SocclkSpreadPercent; | 493 | uint8_t SocclkSpreadPercent; |
494 | uint16_t SocclkSpreadFreq; | 494 | uint16_t SocclkSpreadFreq; |
495 | 495 | ||
496 | uint32_t BoardReserved[3]; | 496 | uint8_t AcgGfxclkSpreadEnabled; |
497 | uint8_t AcgGfxclkSpreadPercent; | ||
498 | uint16_t AcgGfxclkSpreadFreq; | ||
499 | |||
500 | uint32_t BoardReserved[10]; | ||
497 | 501 | ||
498 | 502 | ||
499 | uint32_t MmHubPadding[7]; | 503 | uint32_t MmHubPadding[7]; |