Skip to content

Commit c1b353b

Browse files
Evan Quanalexdeucher
authored andcommitted
drm/amd/powerplay: update the tables init related
To avoid cross calling and maintain clear code layer. Signed-off-by: Evan Quan <[email protected]> Reviewed-by: Alex Deucher <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent caad261 commit c1b353b

File tree

9 files changed

+83
-120
lines changed

9 files changed

+83
-120
lines changed

drivers/gpu/drm/amd/powerplay/arcturus_ppt.c

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -207,9 +207,10 @@ static const struct cmn2asic_mapping arcturus_workload_map[PP_SMC_POWER_PROFILE_
207207
WORKLOAD_MAP(PP_SMC_POWER_PROFILE_CUSTOM, WORKLOAD_PPLIB_CUSTOM_BIT),
208208
};
209209

210-
static int arcturus_tables_init(struct smu_context *smu, struct smu_table *tables)
210+
static int arcturus_tables_init(struct smu_context *smu)
211211
{
212212
struct smu_table_context *smu_table = &smu->smu_table;
213+
struct smu_table *tables = smu_table->tables;
213214

214215
SMU_TABLE_INIT(tables, SMU_TABLE_PPTABLE, sizeof(PPTable_t),
215216
PAGE_SIZE, AMDGPU_GEM_DOMAIN_VRAM);
@@ -258,6 +259,21 @@ static int arcturus_allocate_dpm_context(struct smu_context *smu)
258259
return 0;
259260
}
260261

262+
static int arcturus_init_smc_tables(struct smu_context *smu)
263+
{
264+
int ret = 0;
265+
266+
ret = arcturus_tables_init(smu);
267+
if (ret)
268+
return ret;
269+
270+
ret = arcturus_allocate_dpm_context(smu);
271+
if (ret)
272+
return ret;
273+
274+
return smu_v11_0_init_smc_tables(smu);
275+
}
276+
261277
static int
262278
arcturus_get_allowed_feature_mask(struct smu_context *smu,
263279
uint32_t *feature_mask, uint32_t num)
@@ -2237,9 +2253,6 @@ static void arcturus_log_thermal_throttling_event(struct smu_context *smu)
22372253
}
22382254

22392255
static const struct pptable_funcs arcturus_ppt_funcs = {
2240-
/* internal structurs allocations */
2241-
.tables_init = arcturus_tables_init,
2242-
.alloc_dpm_context = arcturus_allocate_dpm_context,
22432256
/* init dpm */
22442257
.get_allowed_feature_mask = arcturus_get_allowed_feature_mask,
22452258
/* btc */
@@ -2267,7 +2280,7 @@ static const struct pptable_funcs arcturus_ppt_funcs = {
22672280
.init_microcode = smu_v11_0_init_microcode,
22682281
.load_microcode = smu_v11_0_load_microcode,
22692282
.fini_microcode = smu_v11_0_fini_microcode,
2270-
.init_smc_tables = smu_v11_0_init_smc_tables,
2283+
.init_smc_tables = arcturus_init_smc_tables,
22712284
.fini_smc_tables = smu_v11_0_fini_smc_tables,
22722285
.init_power = smu_v11_0_init_power,
22732286
.fini_power = smu_v11_0_fini_power,

drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ struct smu_table_context
259259
void *max_sustainable_clocks;
260260
struct smu_bios_boot_up_values boot_values;
261261
void *driver_pptable;
262-
struct smu_table *tables;
262+
struct smu_table tables[SMU_TABLE_COUNT];
263263
/*
264264
* The driver table is just a staging buffer for
265265
* uploading/downloading content from the SMU.
@@ -451,7 +451,6 @@ struct smu_context
451451
struct i2c_adapter;
452452

453453
struct pptable_funcs {
454-
int (*alloc_dpm_context)(struct smu_context *smu);
455454
int (*run_btc)(struct smu_context *smu);
456455
int (*get_allowed_feature_mask)(struct smu_context *smu, uint32_t *feature_mask, uint32_t num);
457456
enum amd_pm_state_type (*get_current_power_state)(struct smu_context *smu);
@@ -490,7 +489,6 @@ struct pptable_funcs {
490489
int (*notify_smc_display_config)(struct smu_context *smu);
491490
int (*set_cpu_power_state)(struct smu_context *smu);
492491
bool (*is_dpm_running)(struct smu_context *smu);
493-
int (*tables_init)(struct smu_context *smu, struct smu_table *tables);
494492
int (*get_fan_speed_percent)(struct smu_context *smu, uint32_t *speed);
495493
int (*get_fan_speed_rpm)(struct smu_context *smu, uint32_t *speed);
496494
int (*set_watermarks_table)(struct smu_context *smu,

drivers/gpu/drm/amd/powerplay/inc/smu_v12_0.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,6 @@ uint32_t smu_v12_0_get_gfxoff_status(struct smu_context *smu);
5858

5959
int smu_v12_0_gfx_off_control(struct smu_context *smu, bool enable);
6060

61-
int smu_v12_0_init_smc_tables(struct smu_context *smu);
62-
6361
int smu_v12_0_fini_smc_tables(struct smu_context *smu);
6462

6563
int smu_v12_0_set_default_dpm_tables(struct smu_context *smu);

drivers/gpu/drm/amd/powerplay/navi10_ppt.c

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -448,9 +448,10 @@ static int navi10_setup_pptable(struct smu_context *smu)
448448
return ret;
449449
}
450450

451-
static int navi10_tables_init(struct smu_context *smu, struct smu_table *tables)
451+
static int navi10_tables_init(struct smu_context *smu)
452452
{
453453
struct smu_table_context *smu_table = &smu->smu_table;
454+
struct smu_table *tables = smu_table->tables;
454455

455456
SMU_TABLE_INIT(tables, SMU_TABLE_PPTABLE, sizeof(PPTable_t),
456457
PAGE_SIZE, AMDGPU_GEM_DOMAIN_VRAM);
@@ -579,9 +580,6 @@ static int navi10_allocate_dpm_context(struct smu_context *smu)
579580
{
580581
struct smu_dpm_context *smu_dpm = &smu->smu_dpm;
581582

582-
if (smu_dpm->dpm_context)
583-
return -EINVAL;
584-
585583
smu_dpm->dpm_context = kzalloc(sizeof(struct smu_11_0_dpm_context),
586584
GFP_KERNEL);
587585
if (!smu_dpm->dpm_context)
@@ -592,6 +590,21 @@ static int navi10_allocate_dpm_context(struct smu_context *smu)
592590
return 0;
593591
}
594592

593+
static int navi10_init_smc_tables(struct smu_context *smu)
594+
{
595+
int ret = 0;
596+
597+
ret = navi10_tables_init(smu);
598+
if (ret)
599+
return ret;
600+
601+
ret = navi10_allocate_dpm_context(smu);
602+
if (ret)
603+
return ret;
604+
605+
return smu_v11_0_init_smc_tables(smu);
606+
}
607+
595608
static int navi10_set_default_dpm_table(struct smu_context *smu)
596609
{
597610
struct smu_11_0_dpm_context *dpm_context = smu->smu_dpm.dpm_context;
@@ -2252,8 +2265,6 @@ static int navi10_disable_umc_cdr_12gbps_workaround(struct smu_context *smu)
22522265
}
22532266

22542267
static const struct pptable_funcs navi10_ppt_funcs = {
2255-
.tables_init = navi10_tables_init,
2256-
.alloc_dpm_context = navi10_allocate_dpm_context,
22572268
.get_allowed_feature_mask = navi10_get_allowed_feature_mask,
22582269
.set_default_dpm_table = navi10_set_default_dpm_table,
22592270
.dpm_set_vcn_enable = navi10_dpm_set_vcn_enable,
@@ -2281,7 +2292,7 @@ static const struct pptable_funcs navi10_ppt_funcs = {
22812292
.init_microcode = smu_v11_0_init_microcode,
22822293
.load_microcode = smu_v11_0_load_microcode,
22832294
.fini_microcode = smu_v11_0_fini_microcode,
2284-
.init_smc_tables = smu_v11_0_init_smc_tables,
2295+
.init_smc_tables = navi10_init_smc_tables,
22852296
.fini_smc_tables = smu_v11_0_fini_smc_tables,
22862297
.init_power = smu_v11_0_init_power,
22872298
.fini_power = smu_v11_0_fini_power,

drivers/gpu/drm/amd/powerplay/renoir_ppt.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,10 @@ static int renoir_get_metrics_table(struct smu_context *smu,
151151
return ret;
152152
}
153153

154-
static int renoir_tables_init(struct smu_context *smu, struct smu_table *tables)
154+
static int renoir_init_smc_tables(struct smu_context *smu)
155155
{
156156
struct smu_table_context *smu_table = &smu->smu_table;
157+
struct smu_table *tables = smu_table->tables;
157158

158159
SMU_TABLE_INIT(tables, SMU_TABLE_WATERMARKS, sizeof(Watermarks_t),
159160
PAGE_SIZE, AMDGPU_GEM_DOMAIN_VRAM);
@@ -994,7 +995,6 @@ static bool renoir_is_dpm_running(struct smu_context *smu)
994995
}
995996

996997
static const struct pptable_funcs renoir_ppt_funcs = {
997-
.tables_init = renoir_tables_init,
998998
.set_power_state = NULL,
999999
.print_clk_levels = renoir_print_clk_levels,
10001000
.get_current_power_state = renoir_get_current_power_state,
@@ -1014,7 +1014,7 @@ static const struct pptable_funcs renoir_ppt_funcs = {
10141014
.set_gfx_cgpg = smu_v12_0_set_gfx_cgpg,
10151015
.gfx_off_control = smu_v12_0_gfx_off_control,
10161016
.get_gfx_off_status = smu_v12_0_get_gfxoff_status,
1017-
.init_smc_tables = smu_v12_0_init_smc_tables,
1017+
.init_smc_tables = renoir_init_smc_tables,
10181018
.fini_smc_tables = smu_v12_0_fini_smc_tables,
10191019
.set_default_dpm_table = smu_v12_0_set_default_dpm_tables,
10201020
.get_enabled_mask = smu_cmn_get_enabled_mask,

drivers/gpu/drm/amd/powerplay/sienna_cichlid_ppt.c

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -355,9 +355,10 @@ static int sienna_cichlid_setup_pptable(struct smu_context *smu)
355355
return ret;
356356
}
357357

358-
static int sienna_cichlid_tables_init(struct smu_context *smu, struct smu_table *tables)
358+
static int sienna_cichlid_tables_init(struct smu_context *smu)
359359
{
360360
struct smu_table_context *smu_table = &smu->smu_table;
361+
struct smu_table *tables = smu_table->tables;
361362

362363
SMU_TABLE_INIT(tables, SMU_TABLE_PPTABLE, sizeof(PPTable_t),
363364
PAGE_SIZE, AMDGPU_GEM_DOMAIN_VRAM);
@@ -493,9 +494,6 @@ static int sienna_cichlid_allocate_dpm_context(struct smu_context *smu)
493494
{
494495
struct smu_dpm_context *smu_dpm = &smu->smu_dpm;
495496

496-
if (smu_dpm->dpm_context)
497-
return -EINVAL;
498-
499497
smu_dpm->dpm_context = kzalloc(sizeof(struct smu_11_0_dpm_context),
500498
GFP_KERNEL);
501499
if (!smu_dpm->dpm_context)
@@ -506,6 +504,21 @@ static int sienna_cichlid_allocate_dpm_context(struct smu_context *smu)
506504
return 0;
507505
}
508506

507+
static int sienna_cichlid_init_smc_tables(struct smu_context *smu)
508+
{
509+
int ret = 0;
510+
511+
ret = sienna_cichlid_tables_init(smu);
512+
if (ret)
513+
return ret;
514+
515+
ret = sienna_cichlid_allocate_dpm_context(smu);
516+
if (ret)
517+
return ret;
518+
519+
return smu_v11_0_init_smc_tables(smu);
520+
}
521+
509522
static int sienna_cichlid_set_default_dpm_table(struct smu_context *smu)
510523
{
511524
struct smu_11_0_dpm_context *dpm_context = smu->smu_dpm.dpm_context;
@@ -2405,8 +2418,6 @@ static void sienna_cichlid_dump_pptable(struct smu_context *smu)
24052418
}
24062419

24072420
static const struct pptable_funcs sienna_cichlid_ppt_funcs = {
2408-
.tables_init = sienna_cichlid_tables_init,
2409-
.alloc_dpm_context = sienna_cichlid_allocate_dpm_context,
24102421
.get_allowed_feature_mask = sienna_cichlid_get_allowed_feature_mask,
24112422
.set_default_dpm_table = sienna_cichlid_set_default_dpm_table,
24122423
.dpm_set_vcn_enable = sienna_cichlid_dpm_set_vcn_enable,
@@ -2433,7 +2444,7 @@ static const struct pptable_funcs sienna_cichlid_ppt_funcs = {
24332444
.dump_pptable = sienna_cichlid_dump_pptable,
24342445
.init_microcode = smu_v11_0_init_microcode,
24352446
.load_microcode = smu_v11_0_load_microcode,
2436-
.init_smc_tables = smu_v11_0_init_smc_tables,
2447+
.init_smc_tables = sienna_cichlid_init_smc_tables,
24372448
.fini_smc_tables = smu_v11_0_fini_smc_tables,
24382449
.init_power = smu_v11_0_init_power,
24392450
.fini_power = smu_v11_0_fini_power,

drivers/gpu/drm/amd/powerplay/smu_internal.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@
5151
#define smu_set_default_od_settings(smu) smu_ppt_funcs(set_default_od_settings, 0, smu)
5252
#define smu_send_smc_msg_with_param(smu, msg, param, read_arg) smu_ppt_funcs(send_smc_msg_with_param, 0, smu, msg, param, read_arg)
5353
#define smu_send_smc_msg(smu, msg, read_arg) smu_ppt_funcs(send_smc_msg_with_param, 0, smu, msg, 0, read_arg)
54-
#define smu_alloc_dpm_context(smu) smu_ppt_funcs(alloc_dpm_context, 0, smu)
5554
#define smu_init_display_count(smu, count) smu_ppt_funcs(init_display_count, 0, smu, count)
5655
#define smu_feature_set_allowed_mask(smu) smu_ppt_funcs(set_allowed_mask, 0, smu)
5756
#define smu_feature_get_enabled_mask(smu, mask, num) smu_ppt_funcs(get_enabled_mask, 0, smu, mask, num)
@@ -62,7 +61,6 @@
6261
#define smu_set_default_dpm_table(smu) smu_ppt_funcs(set_default_dpm_table, 0, smu)
6362
#define smu_populate_umd_state_clk(smu) smu_ppt_funcs(populate_umd_state_clk, 0, smu)
6463
#define smu_set_default_od8_settings(smu) smu_ppt_funcs(set_default_od8_settings, 0, smu)
65-
#define smu_tables_init(smu, tab) smu_ppt_funcs(tables_init, 0, smu, tab)
6664
#define smu_enable_thermal_alert(smu) smu_ppt_funcs(enable_thermal_alert, 0, smu)
6765
#define smu_disable_thermal_alert(smu) smu_ppt_funcs(disable_thermal_alert, 0, smu)
6866
#define smu_smc_read_sensor(smu, sensor, data, size) smu_ppt_funcs(read_sensor, -EINVAL, smu, sensor, data, size)

0 commit comments

Comments
 (0)