aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorKenneth Feng <kenneth.feng@amd.com>2018-03-28 05:58:03 -0400
committerAlex Deucher <alexander.deucher@amd.com>2018-04-03 14:08:43 -0400
commit5d41535c5d66b0a9ad2b7d5d1a72025cbca13ed2 (patch)
treebd55fac0cb7a44405ef6ab75c1c612af46874276 /drivers/gpu
parent4a8e06f7aad797e92413a3042d09d3b385fa1fda (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')
-rw-r--r--drivers/gpu/drm/amd/include/atomfirmware.h12
-rw-r--r--drivers/gpu/drm/amd/powerplay/hwmgr/ppatomfwctrl.c10
-rw-r--r--drivers/gpu/drm/amd/powerplay/hwmgr/ppatomfwctrl.h10
-rw-r--r--drivers/gpu/drm/amd/powerplay/hwmgr/vega12_processpptables.c11
-rw-r--r--drivers/gpu/drm/amd/powerplay/inc/vega12/smu9_driver_if.h14
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
208int pp_atomfwctrl_get_gpu_pll_dividers_vega10(struct pp_hwmgr *hwmgr, 212int 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];