Skip to content

Commit 4161ec7

Browse files
committed
drm/msm/dpu: move max clock decision to dpu_kms.
dpu_core_perf should not make decisions on the maximum possible core clock rate. Pass the value from dpu_kms_hw_init() and drop handling of core_clk from dpu_core_perf.c Reviewed-by: Abhinav Kumar <[email protected]> Signed-off-by: Dmitry Baryshkov <[email protected]> Patchwork: https://patchwork.freedesktop.org/patch/550201/ Link: https://lore.kernel.org/r/[email protected]
1 parent d64d838 commit 4161ec7

File tree

3 files changed

+15
-17
lines changed

3 files changed

+15
-17
lines changed

drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -489,21 +489,14 @@ void dpu_core_perf_destroy(struct dpu_core_perf *perf)
489489
}
490490

491491
perf->max_core_clk_rate = 0;
492-
perf->core_clk = NULL;
493492
}
494493

495494
int dpu_core_perf_init(struct dpu_core_perf *perf,
496495
const struct dpu_perf_cfg *perf_cfg,
497-
struct clk *core_clk)
496+
unsigned long max_core_clk_rate)
498497
{
499498
perf->perf_cfg = perf_cfg;
500-
perf->core_clk = core_clk;
501-
502-
perf->max_core_clk_rate = clk_get_rate(core_clk);
503-
if (!perf->max_core_clk_rate) {
504-
DPU_DEBUG("optional max core clk rate, use default\n");
505-
perf->max_core_clk_rate = DPU_PERF_DEFAULT_MAX_CORE_CLK_RATE;
506-
}
499+
perf->max_core_clk_rate = max_core_clk_rate;
507500

508501
return 0;
509502
}

drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212

1313
#include "dpu_hw_catalog.h"
1414

15-
#define DPU_PERF_DEFAULT_MAX_CORE_CLK_RATE 412500000
16-
1715
/**
1816
* struct dpu_core_perf_params - definition of performance parameters
1917
* @max_per_pipe_ib: maximum instantaneous bandwidth request
@@ -37,7 +35,6 @@ struct dpu_core_perf_tune {
3735
/**
3836
* struct dpu_core_perf - definition of core performance context
3937
* @perf_cfg: Platform-specific performance configuration
40-
* @core_clk: Pointer to the core clock
4138
* @core_clk_rate: current core clock rate
4239
* @max_core_clk_rate: maximum allowable core clock rate
4340
* @perf_tune: debug control for performance tuning
@@ -48,7 +45,6 @@ struct dpu_core_perf_tune {
4845
*/
4946
struct dpu_core_perf {
5047
const struct dpu_perf_cfg *perf_cfg;
51-
struct clk *core_clk;
5248
u64 core_clk_rate;
5349
u64 max_core_clk_rate;
5450
struct dpu_core_perf_tune perf_tune;
@@ -92,11 +88,11 @@ void dpu_core_perf_destroy(struct dpu_core_perf *perf);
9288
* dpu_core_perf_init - initialize the given core performance context
9389
* @perf: Pointer to core performance context
9490
* @perf_cfg: Pointer to platform performance configuration
95-
* @core_clk: pointer to core clock
91+
* @max_core_clk_rate: Maximum core clock rate
9692
*/
9793
int dpu_core_perf_init(struct dpu_core_perf *perf,
9894
const struct dpu_perf_cfg *perf_cfg,
99-
struct clk *core_clk);
95+
unsigned long max_core_clk_rate);
10096

10197
struct dpu_kms;
10298

drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1052,11 +1052,14 @@ unsigned long dpu_kms_get_clk_rate(struct dpu_kms *dpu_kms, char *clock_name)
10521052
return clk_get_rate(clk);
10531053
}
10541054

1055+
#define DPU_PERF_DEFAULT_MAX_CORE_CLK_RATE 412500000
1056+
10551057
static int dpu_kms_hw_init(struct msm_kms *kms)
10561058
{
10571059
struct dpu_kms *dpu_kms;
10581060
struct drm_device *dev;
10591061
int i, rc = -EINVAL;
1062+
unsigned long max_core_clk_rate;
10601063
u32 core_rev;
10611064

10621065
if (!kms) {
@@ -1170,8 +1173,14 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
11701173
dpu_kms->hw_vbif[vbif->id] = hw;
11711174
}
11721175

1173-
rc = dpu_core_perf_init(&dpu_kms->perf, dpu_kms->catalog->perf,
1174-
msm_clk_bulk_get_clock(dpu_kms->clocks, dpu_kms->num_clocks, "core"));
1176+
/* TODO: use the same max_freq as in dpu_kms_hw_init */
1177+
max_core_clk_rate = dpu_kms_get_clk_rate(dpu_kms, "core");
1178+
if (!max_core_clk_rate) {
1179+
DPU_DEBUG("max core clk rate not determined, using default\n");
1180+
max_core_clk_rate = DPU_PERF_DEFAULT_MAX_CORE_CLK_RATE;
1181+
}
1182+
1183+
rc = dpu_core_perf_init(&dpu_kms->perf, dpu_kms->catalog->perf, max_core_clk_rate);
11751184
if (rc) {
11761185
DPU_ERROR("failed to init perf %d\n", rc);
11771186
goto perf_err;

0 commit comments

Comments
 (0)