Commit d01b400b authored by Andrey Grodzovsky's avatar Andrey Grodzovsky Committed by Alex Deucher
Browse files

drm/amdgpu: Add amdgpu_ras_eeprom_reset_table



This will allow to reset the table on the fly.

Signed-off-by: default avatarAndrey Grodzovsky <andrey.grodzovsky@amd.com>
Reviewed-by: default avatarTao Zhou <tao.zhou1@amd.com>
Reviewed-by: default avatarGuchun Chen <guchun.chen@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent d99659a0
Loading
Loading
Loading
Loading
+17 −8
Original line number Diff line number Diff line
@@ -102,6 +102,22 @@ static int __update_table_header(struct amdgpu_ras_eeprom_control *control,

static uint32_t  __calc_hdr_byte_sum(struct amdgpu_ras_eeprom_control *control);

int amdgpu_ras_eeprom_reset_table(struct amdgpu_ras_eeprom_control *control)
{
	unsigned char buff[EEPROM_ADDRESS_SIZE + EEPROM_TABLE_HEADER_SIZE] = { 0 };
	struct amdgpu_device *adev = to_amdgpu_device(control);
	struct amdgpu_ras_eeprom_table_header *hdr = &control->tbl_hdr;

	hdr->header = EEPROM_TABLE_HDR_VAL;
	hdr->version = EEPROM_TABLE_VER;
	hdr->first_rec_offset = EEPROM_RECORD_START;
	hdr->tbl_size = EEPROM_TABLE_HEADER_SIZE;

	adev->psp.ras.ras->eeprom_control.tbl_byte_sum =
			__calc_hdr_byte_sum(&adev->psp.ras.ras->eeprom_control);
	return __update_table_header(control, buff);
}

int amdgpu_ras_eeprom_init(struct amdgpu_ras_eeprom_control *control)
{
	int ret = 0;
@@ -149,14 +165,7 @@ int amdgpu_ras_eeprom_init(struct amdgpu_ras_eeprom_control *control)
	} else {
		DRM_INFO("Creating new EEPROM table");

		hdr->header = EEPROM_TABLE_HDR_VAL;
		hdr->version = EEPROM_TABLE_VER;
		hdr->first_rec_offset = EEPROM_RECORD_START;
		hdr->tbl_size = EEPROM_TABLE_HEADER_SIZE;

		adev->psp.ras.ras->eeprom_control.tbl_byte_sum =
				__calc_hdr_byte_sum(&adev->psp.ras.ras->eeprom_control);
		ret = __update_table_header(control, buff);
		ret = amdgpu_ras_eeprom_reset_table(control);
	}

	/* Start inserting records from here */
+1 −0
Original line number Diff line number Diff line
@@ -79,6 +79,7 @@ struct eeprom_table_record {

int amdgpu_ras_eeprom_init(struct amdgpu_ras_eeprom_control *control);
void amdgpu_ras_eeprom_fini(struct amdgpu_ras_eeprom_control *control);
int amdgpu_ras_eeprom_reset_table(struct amdgpu_ras_eeprom_control *control);

int amdgpu_ras_eeprom_process_recods(struct amdgpu_ras_eeprom_control *control,
					    struct eeprom_table_record *records,