Skip to content

Commit c8c875c

Browse files
Sung Leesmb49
authored andcommitted
drm/amd/display: Add option to retrieve detile buffer size
BugLink: https://bugs.launchpad.net/bugs/2102118 [ Upstream commit 6a7fd76 ] [WHY] For better power profiling knowing the detile buffer size at a given point in time would be useful. [HOW] Add interface to retrieve detile buffer from dc state. Cc: Mario Limonciello <mario.limonciello@amd.com> Cc: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org Reviewed-by: Aric Cyr <aric.cyr@amd.com> Signed-off-by: Sung Lee <Sung.Lee@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Sasha Levin <sashal@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> [koichiroden: dropped changes for dcn351_resource.c due to missing commit: 2728e9c ("drm/amd/display: add DC changes for DCN351")] Signed-off-by: Koichiro Den <koichiro.den@canonical.com> Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
1 parent 3eb81e3 commit c8c875c

File tree

9 files changed

+34
-0
lines changed

9 files changed

+34
-0
lines changed

drivers/gpu/drm/amd/display/dc/core/dc.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5548,3 +5548,20 @@ struct dc_power_profile dc_get_power_profile_for_dc_state(const struct dc_state
55485548
return profile;
55495549
}
55505550

5551+
/*
5552+
**********************************************************************************
5553+
* dc_get_det_buffer_size_from_state() - extracts detile buffer size from dc state
5554+
*
5555+
* Called when DM wants to log detile buffer size from dc_state
5556+
*
5557+
**********************************************************************************
5558+
*/
5559+
unsigned int dc_get_det_buffer_size_from_state(const struct dc_state *context)
5560+
{
5561+
struct dc *dc = context->clk_mgr->ctx->dc;
5562+
5563+
if (dc->res_pool->funcs->get_det_buffer_size)
5564+
return dc->res_pool->funcs->get_det_buffer_size(context);
5565+
else
5566+
return 0;
5567+
}

drivers/gpu/drm/amd/display/dc/dc.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2391,6 +2391,8 @@ struct dc_power_profile {
23912391

23922392
struct dc_power_profile dc_get_power_profile_for_dc_state(const struct dc_state *context);
23932393

2394+
unsigned int dc_get_det_buffer_size_from_state(const struct dc_state *context);
2395+
23942396
/* DSC Interfaces */
23952397
#include "dc_dsc.h"
23962398

drivers/gpu/drm/amd/display/dc/inc/core_types.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ struct resource_funcs {
202202

203203
void (*get_panel_config_defaults)(struct dc_panel_config *panel_config);
204204
void (*build_pipe_pix_clk_params)(struct pipe_ctx *pipe_ctx);
205+
unsigned int (*get_det_buffer_size)(const struct dc_state *context);
205206
};
206207

207208
struct audio_support{

drivers/gpu/drm/amd/display/dc/resource/dcn31/dcn31_resource.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1722,6 +1722,12 @@ int dcn31_populate_dml_pipes_from_context(
17221722
return pipe_cnt;
17231723
}
17241724

1725+
unsigned int dcn31_get_det_buffer_size(
1726+
const struct dc_state *context)
1727+
{
1728+
return context->bw_ctx.dml.ip.det_buffer_size_kbytes;
1729+
}
1730+
17251731
void dcn31_calculate_wm_and_dlg(
17261732
struct dc *dc, struct dc_state *context,
17271733
display_e2e_pipe_params_st *pipes,
@@ -1844,6 +1850,7 @@ static struct resource_funcs dcn31_res_pool_funcs = {
18441850
.update_bw_bounding_box = dcn31_update_bw_bounding_box,
18451851
.patch_unknown_plane_state = dcn20_patch_unknown_plane_state,
18461852
.get_panel_config_defaults = dcn31_get_panel_config_defaults,
1853+
.get_det_buffer_size = dcn31_get_det_buffer_size,
18471854
};
18481855

18491856
static struct clock_source *dcn30_clock_source_create(

drivers/gpu/drm/amd/display/dc/resource/dcn31/dcn31_resource.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ struct resource_pool *dcn31_create_resource_pool(
6363
const struct dc_init_data *init_data,
6464
struct dc *dc);
6565

66+
unsigned int dcn31_get_det_buffer_size(
67+
const struct dc_state *context);
68+
6669
/*temp: B0 specific before switch to dcn313 headers*/
6770
#ifndef regPHYPLLF_PIXCLK_RESYNC_CNTL
6871
#define regPHYPLLF_PIXCLK_RESYNC_CNTL 0x007e

drivers/gpu/drm/amd/display/dc/resource/dcn314/dcn314_resource.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1817,6 +1817,7 @@ static struct resource_funcs dcn314_res_pool_funcs = {
18171817
.patch_unknown_plane_state = dcn20_patch_unknown_plane_state,
18181818
.get_panel_config_defaults = dcn314_get_panel_config_defaults,
18191819
.get_preferred_eng_id_dpia = dcn314_get_preferred_eng_id_dpia,
1820+
.get_det_buffer_size = dcn31_get_det_buffer_size,
18201821
};
18211822

18221823
static struct clock_source *dcn30_clock_source_create(

drivers/gpu/drm/amd/display/dc/resource/dcn315/dcn315_resource.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1836,6 +1836,7 @@ static struct resource_funcs dcn315_res_pool_funcs = {
18361836
.update_bw_bounding_box = dcn315_update_bw_bounding_box,
18371837
.patch_unknown_plane_state = dcn20_patch_unknown_plane_state,
18381838
.get_panel_config_defaults = dcn315_get_panel_config_defaults,
1839+
.get_det_buffer_size = dcn31_get_det_buffer_size,
18391840
};
18401841

18411842
static bool dcn315_resource_construct(

drivers/gpu/drm/amd/display/dc/resource/dcn316/dcn316_resource.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1721,6 +1721,7 @@ static struct resource_funcs dcn316_res_pool_funcs = {
17211721
.update_bw_bounding_box = dcn316_update_bw_bounding_box,
17221722
.patch_unknown_plane_state = dcn20_patch_unknown_plane_state,
17231723
.get_panel_config_defaults = dcn316_get_panel_config_defaults,
1724+
.get_det_buffer_size = dcn31_get_det_buffer_size,
17241725
};
17251726

17261727
static bool dcn316_resource_construct(

drivers/gpu/drm/amd/display/dc/resource/dcn35/dcn35_resource.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1775,6 +1775,7 @@ static struct resource_funcs dcn35_res_pool_funcs = {
17751775
.patch_unknown_plane_state = dcn20_patch_unknown_plane_state,
17761776
.get_panel_config_defaults = dcn35_get_panel_config_defaults,
17771777
.get_preferred_eng_id_dpia = dcn35_get_preferred_eng_id_dpia,
1778+
.get_det_buffer_size = dcn31_get_det_buffer_size,
17781779
};
17791780

17801781
static bool dcn35_resource_construct(

0 commit comments

Comments
 (0)