[PATCH 3/4] drm/amd/powerplay: move VI common AVFS code to smu7_smumgr.c

Deucher, Alexander Alexander.Deucher at amd.com
Mon Jul 3 15:53:15 UTC 2017


> -----Original Message-----
> From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf
> Of Rex Zhu
> Sent: Monday, July 03, 2017 6:14 AM
> To: amd-gfx at lists.freedesktop.org
> Cc: Zhu, Rex
> Subject: [PATCH 3/4] drm/amd/powerplay: move VI common AVFS code to
> smu7_smumgr.c
> 
> Change-Id: I2bee3e700281a57ad77132794187ef45d2d79dcd
> Signed-off-by: Rex Zhu <Rex.Zhu at amd.com>
> ---
>  drivers/gpu/drm/amd/powerplay/inc/smumgr.h         |  3 +
>  drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c    |  6 +-
>  drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c | 73 ++++++++++-
> -----------
>  drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.h | 11 ----
>  .../gpu/drm/amd/powerplay/smumgr/polaris10_smc.c   |  4 +-
>  .../drm/amd/powerplay/smumgr/polaris10_smumgr.c    | 29 ++++-----
>  .../drm/amd/powerplay/smumgr/polaris10_smumgr.h    | 12 +---
>  drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c |  6 +-
>  drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.h |  8 ++-
>  drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c      |  8 +++
>  10 files changed, 74 insertions(+), 86 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/powerplay/inc/smumgr.h
> b/drivers/gpu/drm/amd/powerplay/inc/smumgr.h
> index 976e942..5d61cc9 100644
> --- a/drivers/gpu/drm/amd/powerplay/inc/smumgr.h
> +++ b/drivers/gpu/drm/amd/powerplay/inc/smumgr.h
> @@ -131,6 +131,7 @@ struct pp_smumgr_func {
>  	bool (*is_dpm_running)(struct pp_hwmgr *hwmgr);
>  	int (*populate_requested_graphic_levels)(struct pp_hwmgr
> *hwmgr,
>  			struct amd_pp_profile *request);
> +	bool (*is_hw_avfs_present)(struct pp_smumgr *smumgr);
>  };
> 
>  struct pp_smumgr {
> @@ -202,6 +203,8 @@ extern uint32_t smum_get_offsetof(struct
> pp_smumgr *smumgr,
>  extern int smum_populate_requested_graphic_levels(struct pp_hwmgr
> *hwmgr,
>  		struct amd_pp_profile *request);
> 
> +extern bool smum_is_hw_avfs_present(struct pp_smumgr *smumgr);
> +
>  #define SMUM_FIELD_SHIFT(reg, field) reg##__##field##__SHIFT
> 
>  #define SMUM_FIELD_MASK(reg, field) reg##__##field##_MASK
> diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c
> b/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c
> index ca24e15..0750530 100644
> --- a/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c
> +++ b/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c
> @@ -2134,16 +2134,16 @@ int fiji_thermal_avfs_enable(struct pp_hwmgr
> *hwmgr)
>  {
>  	int ret;
>  	struct pp_smumgr *smumgr = (struct pp_smumgr *)(hwmgr-
> >smumgr);
> -	struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(smumgr-
> >backend);
> +	struct smu7_smumgr *smu_data = (struct smu7_smumgr
> *)(smumgr->backend);
> 
> -	if (smu_data->avfs.AvfsBtcStatus != AVFS_BTC_ENABLEAVFS)
> +	if (smu_data->avfs.avfs_btc_param != AVFS_BTC_ENABLEAVFS)
>  		return 0;
> 
>  	ret = smum_send_msg_to_smc(smumgr,
> PPSMC_MSG_EnableAvfs);
> 
>  	if (!ret)
>  		/* If this param is not changed, this function could fire
> unnecessarily */
> -		smu_data->avfs.AvfsBtcStatus =
> AVFS_BTC_COMPLETED_PREVIOUSLY;
> +		smu_data->avfs.avfs_btc_param =
> AVFS_BTC_COMPLETED_PREVIOUSLY;
> 
>  	return ret;
>  }
> diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c
> b/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c
> index 719e885..492f682 100644
> --- a/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c
> +++ b/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c
> @@ -161,43 +161,46 @@ static int
> fiji_start_smu_in_non_protection_mode(struct pp_smumgr *smumgr)
> 
>  static int fiji_setup_pwr_virus(struct pp_smumgr *smumgr)
>  {
> -	int i, result = -1;
> +	int i;
> +	int result = -EINVAL;
>  	uint32_t reg, data;
> -	const PWR_Command_Table *virus = PwrVirusTable;
> -	struct fiji_smumgr *priv = (struct fiji_smumgr *)(smumgr->backend);
> 
> -	priv->avfs.AvfsBtcStatus = AVFS_LOAD_VIRUS;
> -	for (i = 0; (i < PWR_VIRUS_TABLE_SIZE); i++) {
> -		switch (virus->command) {
> +	const PWR_Command_Table *pvirus = PwrVirusTable;
> +	struct smu7_smumgr *smu_data = (struct smu7_smumgr
> *)(smumgr->backend);
> +
> +	for (i = 0; i < PWR_VIRUS_TABLE_SIZE; i++) {
> +		switch (pvirus->command) {
>  		case PwrCmdWrite:
> -			reg  = virus->reg;
> -			data = virus->data;
> +			reg  = pvirus->reg;
> +			data = pvirus->data;
>  			cgs_write_register(smumgr->device, reg, data);
>  			break;
> +
>  		case PwrCmdEnd:
> -			priv->avfs.AvfsBtcStatus =
> AVFS_BTC_VIRUS_LOADED;
>  			result = 0;
>  			break;
> +
>  		default:
> -			pr_err("Table Exit with Invalid Command!");
> -			priv->avfs.AvfsBtcStatus = AVFS_BTC_VIRUS_FAIL;
> -			result = -1;
> +			pr_info("Table Exit with Invalid Command!");
> +			smu_data->avfs.avfs_btc_status =
> AVFS_BTC_VIRUS_FAIL;
> +			result = -EINVAL;
>  			break;
>  		}
> -		virus++;
> +		pvirus++;
>  	}
> +
>  	return result;
>  }
> 
>  static int fiji_start_avfs_btc(struct pp_smumgr *smumgr)
>  {
>  	int result = 0;
> -	struct fiji_smumgr *priv = (struct fiji_smumgr *)(smumgr->backend);
> +	struct smu7_smumgr *smu_data = (struct smu7_smumgr
> *)(smumgr->backend);
> 
> -	if (priv->avfs.AvfsBtcParam) {
> -		if (!smum_send_msg_to_smc_with_parameter(smumgr,
> -				PPSMC_MSG_PerformBtc, priv-
> >avfs.AvfsBtcParam)) {
> -			pr_err("PerformBTC SMU msg failed \n");
> +	if (0 != smu_data->avfs.avfs_btc_param) {
> +		if (0 != smu7_send_msg_to_smc_with_parameter(smumgr,
> +				PPSMC_MSG_PerformBtc, smu_data-
> >avfs.avfs_btc_param)) {
> +			pr_info("[AVFS][SmuPolaris10_PerformBtc]
> PerformBTC SMU msg failed");
>  			result = -1;
>  		}
>  	}
> @@ -252,39 +255,39 @@ static int fiji_setup_graphics_level_structure(struct
> pp_smumgr *smumgr)
> 
>  static int fiji_avfs_event_mgr(struct pp_smumgr *smumgr, bool
> smu_started)
>  {
> -	struct fiji_smumgr *priv = (struct fiji_smumgr *)(smumgr->backend);
> +	struct smu7_smumgr *smu_data = (struct smu7_smumgr
> *)(smumgr->backend);
> 
> -	switch (priv->avfs.AvfsBtcStatus) {
> +	switch (smu_data->avfs.avfs_btc_param) {
>  	case AVFS_BTC_COMPLETED_PREVIOUSLY:
>  		break;
> 
>  	case AVFS_BTC_BOOT: /*Cold Boot State - Post SMU Start*/
>  		if (!smu_started)
>  			break;
> -		priv->avfs.AvfsBtcStatus = AVFS_BTC_FAILED;
> +		smu_data->avfs.avfs_btc_param = AVFS_BTC_FAILED;
>  		PP_ASSERT_WITH_CODE(0 ==
> fiji_setup_graphics_level_structure(smumgr),
>  				"[AVFS][fiji_avfs_event_mgr] Could not Copy
> Graphics Level"
>  				" table over to SMU",
> -				return -1;);
> -		priv->avfs.AvfsBtcStatus = AVFS_BTC_VIRUS_FAIL;
> +				return -EINVAL;);
> +		smu_data->avfs.avfs_btc_param = AVFS_BTC_VIRUS_FAIL;
>  		PP_ASSERT_WITH_CODE(0 ==
> fiji_setup_pwr_virus(smumgr),
>  				"[AVFS][fiji_avfs_event_mgr] Could not
> setup "
>  				"Pwr Virus for AVFS ",
> -				return -1;);
> -		priv->avfs.AvfsBtcStatus = AVFS_BTC_FAILED;
> +				return -EINVAL;);
> +		smu_data->avfs.avfs_btc_param = AVFS_BTC_FAILED;
>  		PP_ASSERT_WITH_CODE(0 == fiji_start_avfs_btc(smumgr),
>  				"[AVFS][fiji_avfs_event_mgr] Failure at "
>  				"fiji_start_avfs_btc. AVFS Disabled",
> -				return -1;);
> +				return -EINVAL;);
> 
> -		priv->avfs.AvfsBtcStatus =  AVFS_BTC_ENABLEAVFS;
> +		smu_data->avfs.avfs_btc_param = AVFS_BTC_ENABLEAVFS;
>  		break;
>  	case AVFS_BTC_DISABLED: /* Do nothing */
>  	case AVFS_BTC_NOTSUPPORTED: /* Do nothing */
>  	case AVFS_BTC_ENABLEAVFS:
>  		break;
>  	default:
> -		pr_err("AVFS failed status is %x !\n", priv-
> >avfs.AvfsBtcStatus);
> +		pr_err("AVFS failed status is %x !\n", smu_data-
> >avfs.avfs_btc_param);
>  		break;
>  	}
>  	return 0;
> @@ -377,19 +380,6 @@ static int fiji_smu_init(struct pp_smumgr *smumgr)
>  	if (smu7_init(smumgr))
>  		return -EINVAL;
> 
> -	fiji_priv->avfs.AvfsBtcStatus = AVFS_BTC_BOOT;
> -	if (fiji_is_hw_avfs_present(smumgr))
> -		/* AVFS Parameter
> -		 * 0 - BTC DC disabled, BTC AC disabled
> -		 * 1 - BTC DC enabled,  BTC AC disabled
> -		 * 2 - BTC DC disabled, BTC AC enabled
> -		 * 3 - BTC DC enabled,  BTC AC enabled
> -		 * Default is 0 - BTC DC disabled, BTC AC disabled
> -		 */
> -		fiji_priv->avfs.AvfsBtcParam = 0;
> -	else
> -		fiji_priv->avfs.AvfsBtcStatus = AVFS_BTC_NOTSUPPORTED;
> -
>  	for (i = 0; i < SMU73_MAX_LEVELS_GRAPHICS; i++)
>  		fiji_priv->activity_target[i] = 30;
> 
> @@ -421,4 +411,5 @@ static int fiji_smu_init(struct pp_smumgr *smumgr)
>  	.initialize_mc_reg_table = fiji_initialize_mc_reg_table,
>  	.is_dpm_running = fiji_is_dpm_running,
>  	.populate_requested_graphic_levels =
> fiji_populate_requested_graphic_levels,
> +	.is_hw_avfs_present = fiji_is_hw_avfs_present,
>  };
> diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.h
> b/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.h
> index adcbdfb..175bf9f 100644
> --- a/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.h
> +++ b/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.h
> @@ -28,17 +28,8 @@
>  #include "smu7_smumgr.h"
> 
> 
> -
> -struct fiji_smu_avfs {
> -	enum AVFS_BTC_STATUS AvfsBtcStatus;
> -	uint32_t           AvfsBtcParam;
> -};
> -
> -
>  struct fiji_smumgr {
>  	struct smu7_smumgr                   smu7_data;
> -
> -	struct fiji_smu_avfs avfs;
>  	struct SMU73_Discrete_DpmTable       smc_state_table;
>  	struct SMU73_Discrete_Ulv            ulv_setting;
>  	struct SMU73_Discrete_PmFuses  power_tune_table;
> @@ -47,7 +38,5 @@ struct fiji_smumgr {
> 
>  };
> 
> -
> -
>  #endif
> 
> diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smc.c
> b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smc.c
> index f68e759..99a00bd 100644
> --- a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smc.c
> +++ b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smc.c
> @@ -1498,7 +1498,7 @@ static int
> polaris10_populate_avfs_parameters(struct pp_hwmgr *hwmgr)
>  			table_info->vdd_dep_on_sclk;
> 
> 
> -	if (smu_data->avfs.avfs_btc_status == AVFS_BTC_NOTSUPPORTED)
> +	if (((struct smu7_smumgr *)smu_data)->avfs.avfs_btc_status ==
> AVFS_BTC_NOTSUPPORTED)
>  		return result;
> 
>  	result = atomctrl_get_avfs_information(hwmgr, &avfs_params);
> @@ -1889,7 +1889,7 @@ int polaris10_thermal_avfs_enable(struct
> pp_hwmgr *hwmgr)
>  {
>  	int ret;
>  	struct pp_smumgr *smumgr = (struct pp_smumgr *)(hwmgr-
> >smumgr);
> -	struct polaris10_smumgr *smu_data = (struct polaris10_smumgr
> *)(smumgr->backend);
> +	struct smu7_smumgr *smu_data = (struct smu7_smumgr
> *)(smumgr->backend);
>  	struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr-
> >backend);
> 
>  	if (smu_data->avfs.avfs_btc_status == AVFS_BTC_NOTSUPPORTED)
> diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
> b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
> index 7e03470..75f43da 100644
> --- a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
> +++ b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
> @@ -60,16 +60,14 @@
>  static const SMU74_Discrete_MemoryLevel avfs_memory_level_polaris10 =
> {
>  	0x100ea446, 0, 0x30750000, 0x01, 0x01, 0x01, 0x00, 0x00, 0x64, 0x00,
> 0x00, 0x1f00, 0x00, 0x00};
> 
> -
>  static int polaris10_setup_pwr_virus(struct pp_smumgr *smumgr)
>  {
>  	int i;
> -	int result = -1;
> +	int result = -EINVAL;
>  	uint32_t reg, data;
> 
>  	const PWR_Command_Table *pvirus = pwr_virus_table;
> -	struct polaris10_smumgr *smu_data = (struct polaris10_smumgr
> *)(smumgr->backend);
> -
> +	struct smu7_smumgr *smu_data = (struct smu7_smumgr
> *)(smumgr->backend);
> 
>  	for (i = 0; i < PWR_VIRUS_TABLE_SIZE; i++) {
>  		switch (pvirus->command) {
> @@ -86,7 +84,7 @@ static int polaris10_setup_pwr_virus(struct pp_smumgr
> *smumgr)
>  		default:
>  			pr_info("Table Exit with Invalid Command!");
>  			smu_data->avfs.avfs_btc_status =
> AVFS_BTC_VIRUS_FAIL;
> -			result = -1;
> +			result = -EINVAL;
>  			break;
>  		}
>  		pvirus++;
> @@ -98,7 +96,7 @@ static int polaris10_setup_pwr_virus(struct pp_smumgr
> *smumgr)
>  static int polaris10_perform_btc(struct pp_smumgr *smumgr)
>  {
>  	int result = 0;
> -	struct polaris10_smumgr *smu_data = (struct polaris10_smumgr
> *)(smumgr->backend);
> +	struct smu7_smumgr *smu_data = (struct smu7_smumgr
> *)(smumgr->backend);
> 
>  	if (0 != smu_data->avfs.avfs_btc_param) {
>  		if (0 != smu7_send_msg_to_smc_with_parameter(smumgr,
> PPSMC_MSG_PerformBtc, smu_data->avfs.avfs_btc_param)) {
> @@ -172,10 +170,11 @@ static int
> polaris10_setup_graphics_level_structure(struct pp_smumgr *smumgr)
>  	return 0;
>  }
> 
> +
>  static int
>  polaris10_avfs_event_mgr(struct pp_smumgr *smumgr, bool
> SMU_VFT_INTACT)
>  {
> -	struct polaris10_smumgr *smu_data = (struct polaris10_smumgr
> *)(smumgr->backend);
> +	struct smu7_smumgr *smu_data = (struct smu7_smumgr
> *)(smumgr->backend);
> 
>  	switch (smu_data->avfs.avfs_btc_status) {
>  	case AVFS_BTC_COMPLETED_PREVIOUSLY:
> @@ -185,21 +184,21 @@ static int
> polaris10_setup_graphics_level_structure(struct pp_smumgr *smumgr)
> 
>  		smu_data->avfs.avfs_btc_status =
> AVFS_BTC_DPMTABLESETUP_FAILED;
>  		PP_ASSERT_WITH_CODE(0 ==
> polaris10_setup_graphics_level_structure(smumgr),
> -		"[AVFS][Polaris10_AVFSEventMgr] Could not Copy Graphics
> Level table over to SMU",
> -		return -1);
> +			"[AVFS][Polaris10_AVFSEventMgr] Could not Copy
> Graphics Level table over to SMU",
> +			return -EINVAL);
> 
>  		if (smu_data->avfs.avfs_btc_param > 1) {
>  			pr_info("[AVFS][Polaris10_AVFSEventMgr] AC BTC
> has not been successfully verified on Fiji. There may be in this setting.");
>  			smu_data->avfs.avfs_btc_status =
> AVFS_BTC_VIRUS_FAIL;
> -			PP_ASSERT_WITH_CODE(-1 ==
> polaris10_setup_pwr_virus(smumgr),
> +			PP_ASSERT_WITH_CODE(0 ==
> polaris10_setup_pwr_virus(smumgr),
>  			"[AVFS][Polaris10_AVFSEventMgr] Could not setup
> Pwr Virus for AVFS ",
> -			return -1);
> +			return -EINVAL);
>  		}
> 
>  		smu_data->avfs.avfs_btc_status = AVFS_BTC_FAILED;
>  		PP_ASSERT_WITH_CODE(0 ==
> polaris10_perform_btc(smumgr),
>  					"[AVFS][Polaris10_AVFSEventMgr]
> Failure at SmuPolaris10_PerformBTC. AVFS Disabled",
> -				 return -1);
> +				 return -EINVAL);
>  		smu_data->avfs.avfs_btc_status = AVFS_BTC_ENABLEAVFS;
>  		break;
> 
> @@ -377,11 +376,6 @@ static int polaris10_smu_init(struct pp_smumgr
> *smumgr)
>  	if (smu7_init(smumgr))
>  		return -EINVAL;
> 
> -	if (polaris10_is_hw_avfs_present(smumgr))
> -		smu_data->avfs.avfs_btc_status = AVFS_BTC_BOOT;
> -	else
> -		smu_data->avfs.avfs_btc_status =
> AVFS_BTC_NOTSUPPORTED;
> -
>  	for (i = 0; i < SMU74_MAX_LEVELS_GRAPHICS; i++)
>  		smu_data->activity_target[i] =
> PPPOLARIS10_TARGETACTIVITY_DFLT;
> 
> @@ -411,4 +405,5 @@ static int polaris10_smu_init(struct pp_smumgr
> *smumgr)
>  	.get_mac_definition = polaris10_get_mac_definition,
>  	.is_dpm_running = polaris10_is_dpm_running,
>  	.populate_requested_graphic_levels =
> polaris10_populate_requested_graphic_levels,
> +	.is_hw_avfs_present = polaris10_is_hw_avfs_present,
>  };
> diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.h
> b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.h
> index 49ebf1d..5e19c24 100644
> --- a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.h
> +++ b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.h
> @@ -32,11 +32,6 @@
> 
>  #define SMC_RAM_END 0x40000
> 
> -struct polaris10_avfs {
> -	enum AVFS_BTC_STATUS avfs_btc_status;
> -	uint32_t           avfs_btc_param;
> -};
> -
>  struct polaris10_pt_defaults {
>  	uint8_t   SviLoadLineEn;
>  	uint8_t   SviLoadLineVddC;
> @@ -51,8 +46,6 @@ struct polaris10_pt_defaults {
>  	uint16_t  BAPMTI_RC[SMU74_DTE_ITERATIONS *
> SMU74_DTE_SOURCES * SMU74_DTE_SINKS];
>  };
> 
> -
> -
>  struct polaris10_range_table {
>  	uint32_t trans_lower_frequency; /* in 10khz */
>  	uint32_t trans_upper_frequency;
> @@ -61,14 +54,13 @@ struct polaris10_range_table {
>  struct polaris10_smumgr {
>  	struct smu7_smumgr smu7_data;
>  	uint8_t protected_mode;
> -	struct polaris10_avfs  avfs;
>  	SMU74_Discrete_DpmTable              smc_state_table;
>  	struct SMU74_Discrete_Ulv            ulv_setting;
>  	struct SMU74_Discrete_PmFuses  power_tune_table;
>  	struct polaris10_range_table
> range_table[NUM_SCLK_RANGE];
>  	const struct polaris10_pt_defaults       *power_tune_defaults;
> -	uint32_t                   activity_target[SMU74_MAX_LEVELS_GRAPHICS];
> -	uint32_t                   bif_sclk_table[SMU74_MAX_LEVELS_LINK];
> +	uint32_t               activity_target[SMU74_MAX_LEVELS_GRAPHICS];
> +	uint32_t               bif_sclk_table[SMU74_MAX_LEVELS_LINK];
>  };
> 
> 
> diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c
> b/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c
> index 35ac276..76347ff 100644
> --- a/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c
> +++ b/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c
> @@ -540,7 +540,6 @@ int smu7_upload_smu_firmware_image(struct
> pp_smumgr *smumgr)
>  	return result;
>  }
> 
> -
>  int smu7_init(struct pp_smumgr *smumgr)
>  {
>  	struct smu7_smumgr *smu_data;
> @@ -596,6 +595,11 @@ int smu7_init(struct pp_smumgr *smumgr)
>  		(cgs_handle_t)smu_data->smu_buffer.handle);
>  		return -EINVAL);
> 
> +	if (smum_is_hw_avfs_present(smumgr))
> +		smu_data->avfs.avfs_btc_status = AVFS_BTC_BOOT;
> +	else
> +		smu_data->avfs.avfs_btc_status =
> AVFS_BTC_NOTSUPPORTED;
> +
>  	return 0;
>  }
> 
> diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.h
> b/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.h
> index 919be43..ee5e32d 100644
> --- a/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.h
> +++ b/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.h
> @@ -37,6 +37,11 @@ struct smu7_buffer_entry {
>  	unsigned long  handle;
>  };
> 
> +struct smu7_avfs {
> +	enum AVFS_BTC_STATUS avfs_btc_status;
> +	uint32_t           avfs_btc_param;
> +};
> +
>  struct smu7_smumgr {
>  	uint8_t *header;
>  	uint8_t *mec_image;
> @@ -50,7 +55,8 @@ struct smu7_smumgr {
>  	uint32_t                             arb_table_start;
>  	uint32_t                             ulv_setting_starts;
>  	uint8_t                              security_hard_key;
> -	uint32_t acpi_optimization;
> +	uint32_t                             acpi_optimization;
> +	struct smu7_avfs                     avfs;
>  };
> 
> 
> diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c
> b/drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c
> index c234029..e0a73ae 100644
> --- a/drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c
> +++ b/drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c
> @@ -402,3 +402,11 @@ int
> smum_populate_requested_graphic_levels(struct pp_hwmgr *hwmgr,
> 
>  	return 0;
>  }
> +
> +bool smum_is_hw_avfs_present(struct pp_smumgr *smumgr)
> +{
> +	if (smumgr->smumgr_funcs->is_hw_avfs_present)
> +		return smumgr->smumgr_funcs-
> >is_hw_avfs_present(smumgr);
> +
> +	return false;
> +}
> \ No newline at end of file

With the above newline fixed,
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

> --
> 1.9.1
> 
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list