aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/4533-drm-amd-display-Add-function-to-get-optc-active-size.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4533-drm-amd-display-Add-function-to-get-optc-active-size.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/4533-drm-amd-display-Add-function-to-get-optc-active-size.patch95
1 files changed, 95 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4533-drm-amd-display-Add-function-to-get-optc-active-size.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4533-drm-amd-display-Add-function-to-get-optc-active-size.patch
new file mode 100644
index 00000000..d2d98337
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4533-drm-amd-display-Add-function-to-get-optc-active-size.patch
@@ -0,0 +1,95 @@
+From 873a1fd3c64ea82ba4ca184715316f507b61fe00 Mon Sep 17 00:00:00 2001
+From: Eric Bernstein <eric.bernstein@amd.com>
+Date: Tue, 8 May 2018 16:20:52 -0400
+Subject: [PATCH 4533/5725] drm/amd/display: Add function to get optc active
+ size
+
+Signed-off-by: Eric Bernstein <eric.bernstein@amd.com>
+Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
+Acked-by: Harry Wentland <harry.wentland@amd.com>
+---
+ drivers/gpu/drm/amd/display/dc/dcn10/dcn10_optc.c | 32 ++++++++++++++++++++++
+ drivers/gpu/drm/amd/display/dc/dcn10/dcn10_optc.h | 4 +++
+ .../drm/amd/display/dc/inc/hw/timing_generator.h | 3 ++
+ 3 files changed, 39 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_optc.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_optc.c
+index f2fbce0..e6a3ade 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_optc.c
++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_optc.c
+@@ -1257,6 +1257,37 @@ void optc1_read_otg_state(struct optc *optc1,
+ OPTC_UNDERFLOW_OCCURRED_STATUS, &s->underflow_occurred_status);
+ }
+
++bool optc1_get_otg_active_size(struct timing_generator *optc,
++ uint32_t *otg_active_width,
++ uint32_t *otg_active_height)
++{
++ uint32_t otg_enabled;
++ uint32_t v_blank_start;
++ uint32_t v_blank_end;
++ uint32_t h_blank_start;
++ uint32_t h_blank_end;
++ struct optc *optc1 = DCN10TG_FROM_TG(optc);
++
++
++ REG_GET(OTG_CONTROL,
++ OTG_MASTER_EN, &otg_enabled);
++
++ if (otg_enabled == 0)
++ return false;
++
++ REG_GET_2(OTG_V_BLANK_START_END,
++ OTG_V_BLANK_START, &v_blank_start,
++ OTG_V_BLANK_END, &v_blank_end);
++
++ REG_GET_2(OTG_H_BLANK_START_END,
++ OTG_H_BLANK_START, &h_blank_start,
++ OTG_H_BLANK_END, &h_blank_end);
++
++ *otg_active_width = v_blank_start - v_blank_end;
++ *otg_active_height = h_blank_start - h_blank_end;
++ return true;
++}
++
+ void optc1_clear_optc_underflow(struct timing_generator *optc)
+ {
+ struct optc *optc1 = DCN10TG_FROM_TG(optc);
+@@ -1305,6 +1336,7 @@ static const struct timing_generator_funcs dcn10_tg_funcs = {
+ .get_position = optc1_get_position,
+ .get_frame_count = optc1_get_vblank_counter,
+ .get_scanoutpos = optc1_get_crtc_scanoutpos,
++ .get_otg_active_size = optc1_get_otg_active_size,
+ .set_early_control = optc1_set_early_control,
+ /* used by enable_timing_synchronization. Not need for FPGA */
+ .wait_for_state = optc1_wait_for_state,
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_optc.h b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_optc.h
+index c62052f..59ed272 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_optc.h
++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_optc.h
+@@ -507,4 +507,8 @@ bool optc1_is_optc_underflow_occurred(struct timing_generator *optc);
+
+ void optc1_set_blank_data_double_buffer(struct timing_generator *optc, bool enable);
+
++bool optc1_get_otg_active_size(struct timing_generator *optc,
++ uint32_t *otg_active_width,
++ uint32_t *otg_active_height);
++
+ #endif /* __DC_TIMING_GENERATOR_DCN10_H__ */
+diff --git a/drivers/gpu/drm/amd/display/dc/inc/hw/timing_generator.h b/drivers/gpu/drm/amd/display/dc/inc/hw/timing_generator.h
+index 69cb0a1..af700c7 100644
+--- a/drivers/gpu/drm/amd/display/dc/inc/hw/timing_generator.h
++++ b/drivers/gpu/drm/amd/display/dc/inc/hw/timing_generator.h
+@@ -156,6 +156,9 @@ struct timing_generator_funcs {
+ uint32_t *v_blank_end,
+ uint32_t *h_position,
+ uint32_t *v_position);
++ bool (*get_otg_active_size)(struct timing_generator *optc,
++ uint32_t *otg_active_width,
++ uint32_t *otg_active_height);
+ void (*set_early_control)(struct timing_generator *tg,
+ uint32_t early_cntl);
+ void (*wait_for_state)(struct timing_generator *tg,
+--
+2.7.4
+