Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d41535c authored by Kenneth Feng's avatar Kenneth Feng Committed by Alex Deucher
Browse files

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: default avatarKenneth Feng <kenneth.feng@amd.com>
Reviewed-by: default avatarEvan Quan <evan.quan@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 4a8e06f7
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -1264,9 +1264,9 @@ struct atom_smc_dpm_info_v4_1
  uint8_t  ledpin2;
  uint8_t  padding8_4;

  uint8_t  gfxclkspreadenabled;
  uint8_t  gfxclkspreadpercent;
  uint16_t gfxclkspreadfreq;
	uint8_t  pllgfxclkspreadenabled;
	uint8_t  pllgfxclkspreadpercent;
	uint16_t pllgfxclkspreadfreq;

  uint8_t uclkspreadenabled;
  uint8_t uclkspreadpercent;
@@ -1276,7 +1276,11 @@ struct atom_smc_dpm_info_v4_1
  uint8_t socclkspreadpercent;
  uint16_t socclkspreadfreq;

  uint32_t boardreserved[3];
	uint8_t  acggfxclkspreadenabled;
	uint8_t  acggfxclkspreadpercent;
	uint16_t acggfxclkspreadfreq;

	uint32_t boardreserved[10];
};


+7 −3
Original line number Diff line number Diff line
@@ -616,9 +616,9 @@ int pp_atomfwctrl_get_smc_dpm_information(struct pp_hwmgr *hwmgr,
	param->ledpin1 = info->ledpin1;
	param->ledpin2 = info->ledpin2;

	param->gfxclkspreadenabled = info->gfxclkspreadenabled;
	param->gfxclkspreadpercent = info->gfxclkspreadpercent;
	param->gfxclkspreadfreq = info->gfxclkspreadfreq;
	param->pllgfxclkspreadenabled = info->pllgfxclkspreadenabled;
	param->pllgfxclkspreadpercent = info->pllgfxclkspreadpercent;
	param->pllgfxclkspreadfreq = info->pllgfxclkspreadfreq;

	param->uclkspreadenabled = info->uclkspreadenabled;
	param->uclkspreadpercent = info->uclkspreadpercent;
@@ -628,5 +628,9 @@ int pp_atomfwctrl_get_smc_dpm_information(struct pp_hwmgr *hwmgr,
	param->socclkspreadpercent = info->socclkspreadpercent;
	param->socclkspreadfreq = info->socclkspreadfreq;

	param->acggfxclkspreadenabled = info->acggfxclkspreadenabled;
	param->acggfxclkspreadpercent = info->acggfxclkspreadpercent;
	param->acggfxclkspreadfreq = info->acggfxclkspreadfreq;

	return 0;
}
+7 −3
Original line number Diff line number Diff line
@@ -192,9 +192,9 @@ struct pp_atomfwctrl_smc_dpm_parameters
  uint8_t  ledpin1;
  uint8_t  ledpin2;

  uint8_t  gfxclkspreadenabled;
  uint8_t  gfxclkspreadpercent;
  uint16_t gfxclkspreadfreq;
	uint8_t  pllgfxclkspreadenabled;
	uint8_t  pllgfxclkspreadpercent;
	uint16_t pllgfxclkspreadfreq;

  uint8_t  uclkspreadenabled;
  uint8_t  uclkspreadpercent;
@@ -203,6 +203,10 @@ struct pp_atomfwctrl_smc_dpm_parameters
  uint8_t socclkspreadenabled;
  uint8_t socclkspreadpercent;
  uint16_t socclkspreadfreq;

	uint8_t  acggfxclkspreadenabled;
	uint8_t  acggfxclkspreadpercent;
	uint16_t acggfxclkspreadfreq;
};

int pp_atomfwctrl_get_gpu_pll_dividers_vega10(struct pp_hwmgr *hwmgr,
+8 −3
Original line number Diff line number Diff line
@@ -208,9 +208,9 @@ static int append_vbios_pptable(struct pp_hwmgr *hwmgr, PPTable_t *ppsmc_pptable
	ppsmc_pptable->LedPin1 = smc_dpm_table.ledpin1;
	ppsmc_pptable->LedPin2 = smc_dpm_table.ledpin2;

	ppsmc_pptable->GfxclkSpreadEnabled = smc_dpm_table.gfxclkspreadenabled;
	ppsmc_pptable->GfxclkSpreadPercent = smc_dpm_table.gfxclkspreadpercent;
	ppsmc_pptable->GfxclkSpreadFreq = smc_dpm_table.gfxclkspreadfreq;
	ppsmc_pptable->PllGfxclkSpreadEnabled = smc_dpm_table.pllgfxclkspreadenabled;
	ppsmc_pptable->PllGfxclkSpreadPercent = smc_dpm_table.pllgfxclkspreadpercent;
	ppsmc_pptable->PllGfxclkSpreadFreq = smc_dpm_table.pllgfxclkspreadfreq;

	ppsmc_pptable->UclkSpreadEnabled = 0;
	ppsmc_pptable->UclkSpreadPercent = smc_dpm_table.uclkspreadpercent;
@@ -220,6 +220,11 @@ static int append_vbios_pptable(struct pp_hwmgr *hwmgr, PPTable_t *ppsmc_pptable
	ppsmc_pptable->SocclkSpreadPercent = smc_dpm_table.socclkspreadpercent;
	ppsmc_pptable->SocclkSpreadFreq = smc_dpm_table.socclkspreadfreq;

	ppsmc_pptable->AcgGfxclkSpreadEnabled = smc_dpm_table.acggfxclkspreadenabled;
	ppsmc_pptable->AcgGfxclkSpreadPercent = smc_dpm_table.acggfxclkspreadpercent;
	ppsmc_pptable->AcgGfxclkSpreadFreq = smc_dpm_table.acggfxclkspreadfreq;


	return 0;
}

+9 −5
Original line number Diff line number Diff line
@@ -481,9 +481,9 @@ typedef struct {
  uint8_t      padding8_4;


  uint8_t      GfxclkSpreadEnabled;
  uint8_t      GfxclkSpreadPercent;
  uint16_t     GfxclkSpreadFreq;
	uint8_t      PllGfxclkSpreadEnabled;
	uint8_t      PllGfxclkSpreadPercent;
	uint16_t     PllGfxclkSpreadFreq;

  uint8_t      UclkSpreadEnabled;
  uint8_t      UclkSpreadPercent;
@@ -493,7 +493,11 @@ typedef struct {
  uint8_t      SocclkSpreadPercent;
  uint16_t     SocclkSpreadFreq;

  uint32_t     BoardReserved[3];
	uint8_t      AcgGfxclkSpreadEnabled;
	uint8_t      AcgGfxclkSpreadPercent;
	uint16_t     AcgGfxclkSpreadFreq;

	uint32_t     BoardReserved[10];


  uint32_t     MmHubPadding[7];