diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/0056-drm-amd-display-Added-timing-sync-trace.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.14.71/0056-drm-amd-display-Added-timing-sync-trace.patch | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/0056-drm-amd-display-Added-timing-sync-trace.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/0056-drm-amd-display-Added-timing-sync-trace.patch new file mode 100644 index 00000000..5b0387e8 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/0056-drm-amd-display-Added-timing-sync-trace.patch @@ -0,0 +1,130 @@ +From 8621808029f8a9d604aaabc934e4dc25847381b4 Mon Sep 17 00:00:00 2001 +From: Yongqiang Sun <yongqiang.sun@amd.com> +Date: Thu, 8 Dec 2016 09:47:11 -0500 +Subject: [PATCH 0056/4131] drm/amd/display: Added timing sync trace. + +Signed-off-by: Yongqiang Sun <yongqiang.sun@amd.com> +Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> +Acked-by: Harry Wentland <Harry.Wentland@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/display/dc/core/dc.c | 4 ++- + drivers/gpu/drm/amd/display/dc/core/dc_debug.c | 32 ++++++++++++++++++++++ + drivers/gpu/drm/amd/display/dc/dc.h | 1 + + .../amd/display/dc/dce110/dce110_hw_sequencer.c | 1 - + .../gpu/drm/amd/display/include/logger_interface.h | 5 ++++ + 5 files changed, 41 insertions(+), 2 deletions(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c +index 8e1d695..de99d71 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc.c +@@ -1488,8 +1488,10 @@ void dc_update_surfaces_for_target(struct dc *dc, struct dc_surface_update *upda + core_dc->hwss.prepare_pipe_for_context( + core_dc, pipe_ctx, context); + } +- if (apply_ctx) ++ if (apply_ctx) { + core_dc->hwss.apply_ctx_for_surface(core_dc, surface, context); ++ context_timing_trace(dc, &context->res_ctx); ++ } + } + + for (i = context->res_ctx.pool->pipe_count - 1; i >= 0; i--) { +diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_debug.c b/drivers/gpu/drm/amd/display/dc/core/dc_debug.c +index 8ca0f1e..78b8e0c 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc_debug.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc_debug.c +@@ -22,6 +22,13 @@ + ##__VA_ARGS__); \ + } while (0) + ++#define TIMING_TRACE(...) do {\ ++ if (dc->debug.timing_trace) \ ++ dm_logger_write(logger, \ ++ LOG_SYNC, \ ++ ##__VA_ARGS__); \ ++} while (0) ++ + void pre_surface_trace( + const struct dc *dc, + const struct dc_surface *const *surfaces, +@@ -268,3 +275,28 @@ void post_surface_trace(const struct dc *dc) + SURFACE_TRACE("post surface process.\n"); + + } ++ ++void context_timing_trace( ++ const struct dc *dc, ++ struct resource_context *res_ctx) ++{ ++ int i; ++ struct core_dc *core_dc = DC_TO_CORE(dc); ++ struct dal_logger *logger = core_dc->ctx->logger; ++ ++ for (i = 0; i < core_dc->res_pool->pipe_count; i++) { ++ struct pipe_ctx *pipe_ctx = &res_ctx->pipe_ctx[i]; ++ int h_pos = 0; ++ int v_pos = 0; ++ ++ if (pipe_ctx->stream == NULL) ++ continue; ++ ++ pipe_ctx->tg->funcs->get_position(pipe_ctx->tg, &h_pos, &v_pos); ++ TIMING_TRACE("Pipe_%d H_tot:%d V_tot:%d H_pos:%d V_pos:%d\n", ++ pipe_ctx->pipe_idx, ++ pipe_ctx->stream->public.timing.h_total, ++ pipe_ctx->stream->public.timing.v_total, ++ h_pos, v_pos); ++ } ++} +diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h +index 5f60800..454485b 100644 +--- a/drivers/gpu/drm/amd/display/dc/dc.h ++++ b/drivers/gpu/drm/amd/display/dc/dc.h +@@ -140,6 +140,7 @@ struct dc_debug { + bool max_disp_clk; + bool target_trace; + bool surface_trace; ++ bool timing_trace; + bool validation_trace; + bool disable_stutter; + bool disable_dcc; +diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c +index 6ad23f3..99937fa 100644 +--- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c ++++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c +@@ -1892,7 +1892,6 @@ static void dce110_apply_ctx_for_surface( + program_blender(dc, pipe_ctx); + + } +- + } + + static void dce110_power_down_fe(struct core_dc *dc, struct pipe_ctx *pipe) +diff --git a/drivers/gpu/drm/amd/display/include/logger_interface.h b/drivers/gpu/drm/amd/display/include/logger_interface.h +index b58d30d..08a6911 100644 +--- a/drivers/gpu/drm/amd/display/include/logger_interface.h ++++ b/drivers/gpu/drm/amd/display/include/logger_interface.h +@@ -31,6 +31,7 @@ + struct dc_context; + struct dc_link; + struct dc_surface_update; ++struct resource_context; + + /* + * +@@ -85,6 +86,10 @@ void update_surface_trace( + + void post_surface_trace(const struct dc *dc); + ++void context_timing_trace( ++ const struct dc *dc, ++ struct resource_context *res_ctx); ++ + + /* Any function which is empty or have incomplete implementation should be + * marked by this macro. +-- +2.7.4 + |