mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
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: Lijo Lazar <lijo.lazar@amd.com> Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com> Reviewed-by: Yang Wang <kevinyang.wang@amd.com> Reviewed-by: Asad Kamal <asad.kamal@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user