aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3434-drm-amd-display-Add-Logging-for-Gamma-Related-inform.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3434-drm-amd-display-Add-Logging-for-Gamma-Related-inform.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3434-drm-amd-display-Add-Logging-for-Gamma-Related-inform.patch114
1 files changed, 114 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3434-drm-amd-display-Add-Logging-for-Gamma-Related-inform.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3434-drm-amd-display-Add-Logging-for-Gamma-Related-inform.patch
new file mode 100644
index 00000000..bd669d57
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3434-drm-amd-display-Add-Logging-for-Gamma-Related-inform.patch
@@ -0,0 +1,114 @@
+From 195fb6ba689935a22b42866a98afef7649d9925a Mon Sep 17 00:00:00 2001
+From: Wyatt Wood <wyatt.wood@amd.com>
+Date: Wed, 24 Jul 2019 13:37:08 -0400
+Subject: [PATCH 3434/4256] drm/amd/display: Add Logging for Gamma Related
+ information (2/2)
+
+[Why]
+A recent bug showed that logging would be useful in debugging
+various gamma issues.
+
+[How]
+Add logging in dc.
+
+Signed-off-by: Wyatt Wood <wyatt.wood@amd.com>
+Reviewed-by: Krunoslav Kovac <Krunoslav.Kovac@amd.com>
+Acked-by: Leo Li <sunpeng.li@amd.com>
+---
+ .../amd/display/dc/dcn10/dcn10_cm_common.c | 4 +--
+ .../amd/display/dc/dcn10/dcn10_hw_sequencer.c | 32 +++++++++++++++++++
+ .../drm/amd/display/include/logger_types.h | 6 ++++
+ 3 files changed, 40 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_cm_common.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_cm_common.c
+index 8166fdbacd73..01c7e30b9ce1 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_cm_common.c
++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_cm_common.c
+@@ -343,8 +343,8 @@ bool cm_helper_translate_curve_to_hw_format(
+ region_start = -MAX_LOW_POINT;
+ region_end = NUMBER_REGIONS - MAX_LOW_POINT;
+ } else {
+- /* 10 segments
+- * segment is from 2^-10 to 2^0
++ /* 11 segments
++ * segment is from 2^-10 to 2^1
+ * There are less than 256 points, for optimization
+ */
+ seg_distr[0] = 3;
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c
+index ee553262039f..2846017a544d 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c
++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c
+@@ -1433,6 +1433,34 @@ static bool dcn10_set_input_transfer_func(struct pipe_ctx *pipe_ctx,
+ return result;
+ }
+
++#define MAX_NUM_HW_POINTS 0x200
++
++static void log_tf(struct dc_context *ctx,
++ struct dc_transfer_func *tf, uint32_t hw_points_num)
++{
++ // DC_LOG_GAMMA is default logging of all hw points
++ // DC_LOG_ALL_GAMMA logs all points, not only hw points
++ // DC_LOG_ALL_TF_POINTS logs all channels of the tf
++ int i = 0;
++
++ DC_LOGGER_INIT(ctx->logger);
++ DC_LOG_GAMMA("Gamma Correction TF");
++ DC_LOG_ALL_GAMMA("Logging all tf points...");
++ DC_LOG_ALL_TF_CHANNELS("Logging all channels...");
++
++ for (i = 0; i < hw_points_num; i++) {
++ DC_LOG_GAMMA("R %d %llu\n", i, tf->tf_pts.red[i].value);
++ DC_LOG_ALL_TF_CHANNELS("G %d, %llu\n", i, tf->tf_pts.green[i].value);
++ DC_LOG_ALL_TF_CHANNELS("B %d, %llu\n", i, tf->tf_pts.blue[i].value);
++ }
++
++ for (i = hw_points_num; i < MAX_NUM_HW_POINTS; i++) {
++ DC_LOG_ALL_GAMMA("R %d %llu\n", i, tf->tf_pts.red[i].value);
++ DC_LOG_ALL_TF_CHANNELS("G %d %llu\n", i, tf->tf_pts.green[i].value);
++ DC_LOG_ALL_TF_CHANNELS("B %d %llu\n", i, tf->tf_pts.blue[i].value);
++ }
++}
++
+ static bool
+ dcn10_set_output_transfer_func(struct pipe_ctx *pipe_ctx,
+ const struct dc_stream_state *stream)
+@@ -1461,6 +1489,10 @@ dcn10_set_output_transfer_func(struct pipe_ctx *pipe_ctx,
+ } else
+ dpp->funcs->dpp_program_regamma_pwl(dpp, NULL, OPP_REGAMMA_BYPASS);
+
++ log_tf(stream->ctx,
++ stream->out_transfer_func,
++ dpp->regamma_params.hw_points_num);
++
+ return true;
+ }
+
+diff --git a/drivers/gpu/drm/amd/display/include/logger_types.h b/drivers/gpu/drm/amd/display/include/logger_types.h
+index 81650ee40f0b..2b219cdb13ad 100644
+--- a/drivers/gpu/drm/amd/display/include/logger_types.h
++++ b/drivers/gpu/drm/amd/display/include/logger_types.h
+@@ -63,6 +63,9 @@
+ #define DC_LOG_IF_TRACE(...) pr_debug("[IF_TRACE]:"__VA_ARGS__)
+ #define DC_LOG_PERF_TRACE(...) DRM_DEBUG_KMS(__VA_ARGS__)
+ #define DC_LOG_RETIMER_REDRIVER(...) DRM_DEBUG_KMS(__VA_ARGS__)
++#define DC_LOG_GAMMA(...) pr_debug("[GAMMA]:"__VA_ARGS__)
++#define DC_LOG_ALL_GAMMA(...) pr_debug("[GAMMA]:"__VA_ARGS__)
++#define DC_LOG_ALL_TF_CHANNELS(...) pr_debug("[GAMMA]:"__VA_ARGS__)
+ #ifdef CONFIG_DRM_AMD_DC_DSC_SUPPORT
+ #define DC_LOG_DSC(...) DRM_DEBUG_KMS(__VA_ARGS__)
+ #endif
+@@ -118,6 +121,9 @@ enum dc_log_type {
+ #endif
+ LOG_DWB,
+ LOG_GAMMA_DEBUG,
++ LOG_MAX_HW_POINTS,
++ LOG_ALL_TF_CHANNELS,
++ LOG_SAMPLE_1DLUT,
+ LOG_SECTION_TOTAL_COUNT
+ };
+
+--
+2.17.1
+