Commit e3bfb8d9 authored by Yang Wang's avatar Yang Wang Committed by Alex Deucher
Browse files

drm/amdgpu: implement smu send rma reason for smu v13.0.6



implement smu send rma reason function for smu v13.0.6

Signed-off-by: default avatarYang Wang <kevinyang.wang@amd.com>
Reviewed-by: default avatarTao Zhou <tao.zhou1@amd.com>
Reviewed-by: default avatarHawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 53edf771
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -693,6 +693,21 @@ int amdgpu_dpm_send_hbm_bad_channel_flag(struct amdgpu_device *adev, uint32_t si
	return ret;
}

int amdgpu_dpm_send_rma_reason(struct amdgpu_device *adev)
{
	struct smu_context *smu = adev->powerplay.pp_handle;
	int ret;

	if (!is_support_sw_smu(adev))
		return -EOPNOTSUPP;

	mutex_lock(&adev->pm.mutex);
	ret = smu_send_rma_reason(smu);
	mutex_unlock(&adev->pm.mutex);

	return ret;
}

int amdgpu_dpm_get_dpm_freq_range(struct amdgpu_device *adev,
				  enum pp_clock_type type,
				  uint32_t *min,
+1 −0
Original line number Diff line number Diff line
@@ -450,6 +450,7 @@ int amdgpu_pm_load_smu_firmware(struct amdgpu_device *adev, uint32_t *smu_versio
int amdgpu_dpm_handle_passthrough_sbr(struct amdgpu_device *adev, bool enable);
int amdgpu_dpm_send_hbm_bad_pages_num(struct amdgpu_device *adev, uint32_t size);
int amdgpu_dpm_send_hbm_bad_channel_flag(struct amdgpu_device *adev, uint32_t size);
int amdgpu_dpm_send_rma_reason(struct amdgpu_device *adev);
int amdgpu_dpm_get_dpm_freq_range(struct amdgpu_device *adev,
				       enum pp_clock_type type,
				       uint32_t *min,
+10 −0
Original line number Diff line number Diff line
@@ -3679,3 +3679,13 @@ int smu_send_hbm_bad_channel_flag(struct smu_context *smu, uint32_t size)

	return ret;
}

int smu_send_rma_reason(struct smu_context *smu)
{
	int ret = 0;

	if (smu->ppt_funcs && smu->ppt_funcs->send_rma_reason)
		ret = smu->ppt_funcs->send_rma_reason(smu);

	return ret;
}
+6 −0
Original line number Diff line number Diff line
@@ -1341,6 +1341,11 @@ struct pptable_funcs {
	 */
	int (*send_hbm_bad_pages_num)(struct smu_context *smu, uint32_t size);

	/**
	 * @send_rma_reason: message rma reason event to SMU.
	 */
	int (*send_rma_reason)(struct smu_context *smu);

	/**
	 * @get_ecc_table:  message SMU to get ECC INFO table.
	 */
@@ -1588,5 +1593,6 @@ int smu_stb_collect_info(struct smu_context *smu, void *buff, uint32_t size);
void amdgpu_smu_stb_debug_fs_init(struct amdgpu_device *adev);
int smu_send_hbm_bad_pages_num(struct smu_context *smu, uint32_t size);
int smu_send_hbm_bad_channel_flag(struct smu_context *smu, uint32_t size);
int smu_send_rma_reason(struct smu_context *smu);
#endif
#endif
+2 −1
Original line number Diff line number Diff line
@@ -91,7 +91,8 @@
#define PPSMC_MSG_QueryValidMcaCeCount              0x3A
#define PPSMC_MSG_McaBankCeDumpDW                   0x3B
#define PPSMC_MSG_SelectPLPDMode                    0x40
#define PPSMC_Message_Count                         0x41
#define PPSMC_MSG_RmaDueToBadPageThreshold          0x43
#define PPSMC_Message_Count                         0x44

//PPSMC Reset Types for driver msg argument
#define PPSMC_RESET_TYPE_DRIVER_MODE_1_RESET        0x1
Loading