Commit 1327d8f4 authored by Lijo Lazar's avatar Lijo Lazar Committed by Alex Deucher
Browse files

drm/amd/pm: Use macro to initialize metrics table



Helps to keep a build time check about usage of right datatype and
avoids maintenance as new versions get added.

Signed-off-by: default avatarLijo Lazar <lijo.lazar@amd.com>
Reviewed-by: default avatarHawking Zhang <Hawking.Zhang@amd.com>
Reviewed-by: default avatarYang Wang <kevinyang.wang@amd.com>
Reviewed-by: default avatarAsad Kamal <asad.kamal@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 2ed4fd99
Loading
Loading
Loading
Loading
+0 −67
Original line number Diff line number Diff line
@@ -1051,73 +1051,6 @@ int smu_cmn_get_combo_pptable(struct smu_context *smu)
				    false);
}

void smu_cmn_init_soft_gpu_metrics(void *table, uint8_t frev, uint8_t crev)
{
	struct metrics_table_header *header = (struct metrics_table_header *)table;
	uint16_t structure_size;

#define METRICS_VERSION(a, b)	((a << 16) | b)

	switch (METRICS_VERSION(frev, crev)) {
	case METRICS_VERSION(1, 0):
		structure_size = sizeof(struct gpu_metrics_v1_0);
		break;
	case METRICS_VERSION(1, 1):
		structure_size = sizeof(struct gpu_metrics_v1_1);
		break;
	case METRICS_VERSION(1, 2):
		structure_size = sizeof(struct gpu_metrics_v1_2);
		break;
	case METRICS_VERSION(1, 3):
		structure_size = sizeof(struct gpu_metrics_v1_3);
		break;
	case METRICS_VERSION(1, 4):
		structure_size = sizeof(struct gpu_metrics_v1_4);
		break;
	case METRICS_VERSION(1, 5):
		structure_size = sizeof(struct gpu_metrics_v1_5);
		break;
	case METRICS_VERSION(1, 6):
		structure_size = sizeof(struct gpu_metrics_v1_6);
		break;
	case METRICS_VERSION(1, 7):
		structure_size = sizeof(struct gpu_metrics_v1_7);
		break;
	case METRICS_VERSION(1, 8):
		structure_size = sizeof(struct gpu_metrics_v1_8);
		break;
	case METRICS_VERSION(2, 0):
		structure_size = sizeof(struct gpu_metrics_v2_0);
		break;
	case METRICS_VERSION(2, 1):
		structure_size = sizeof(struct gpu_metrics_v2_1);
		break;
	case METRICS_VERSION(2, 2):
		structure_size = sizeof(struct gpu_metrics_v2_2);
		break;
	case METRICS_VERSION(2, 3):
		structure_size = sizeof(struct gpu_metrics_v2_3);
		break;
	case METRICS_VERSION(2, 4):
		structure_size = sizeof(struct gpu_metrics_v2_4);
		break;
	case METRICS_VERSION(3, 0):
		structure_size = sizeof(struct gpu_metrics_v3_0);
		break;
	default:
		return;
	}

#undef METRICS_VERSION

	memset(header, 0xFF, structure_size);

	header->format_revision = frev;
	header->content_revision = crev;
	header->structure_size = structure_size;

}

int smu_cmn_set_mp1_state(struct smu_context *smu,
			  enum pp_mp1_state mp1_state)
{
+12 −2
Original line number Diff line number Diff line
@@ -40,6 +40,18 @@
#define SMU_IH_INTERRUPT_CONTEXT_ID_FAN_ABNORMAL        0x8
#define SMU_IH_INTERRUPT_CONTEXT_ID_FAN_RECOVERY        0x9

#define smu_cmn_init_soft_gpu_metrics(ptr, frev, crev)         \
	do {                                                   \
		typecheck(struct gpu_metrics_v##frev##_##crev, \
			  typeof(*(ptr)));                     \
		struct metrics_table_header *header =          \
			(struct metrics_table_header *)(ptr);  \
		memset(header, 0xFF, sizeof(*(ptr)));          \
		header->format_revision = frev;                \
		header->content_revision = crev;               \
		header->structure_size = sizeof(*(ptr));       \
	} while (0)

extern const int link_speed[];

/* Helper to Convert from PCIE Gen 1/2/3/4/5/6 to 0.1 GT/s speed units */
@@ -125,8 +137,6 @@ int smu_cmn_get_metrics_table(struct smu_context *smu,

int smu_cmn_get_combo_pptable(struct smu_context *smu);

void smu_cmn_init_soft_gpu_metrics(void *table, uint8_t frev, uint8_t crev);

int smu_cmn_set_mp1_state(struct smu_context *smu,
			  enum pp_mp1_state mp1_state);