aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3752-drm-amd-display-fix-check-condition-for-edp-power-co.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3752-drm-amd-display-fix-check-condition-for-edp-power-co.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3752-drm-amd-display-fix-check-condition-for-edp-power-co.patch83
1 files changed, 83 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3752-drm-amd-display-fix-check-condition-for-edp-power-co.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3752-drm-amd-display-fix-check-condition-for-edp-power-co.patch
new file mode 100644
index 00000000..3072e6ac
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3752-drm-amd-display-fix-check-condition-for-edp-power-co.patch
@@ -0,0 +1,83 @@
+From be740387191caeeab28115c774f8f3ff16d31fdd Mon Sep 17 00:00:00 2001
+From: Eric Yang <Eric.Yang2@amd.com>
+Date: Tue, 27 Feb 2018 15:34:30 -0500
+Subject: [PATCH 3752/4131] drm/amd/display: fix check condition for edp power
+ control
+
+Per discussion with VBIOS team, the orginal check is not correct in
+all cases on latest VBIOS. Additional check is needed. This change should
+maintain old behaviour on older VBIOS.
+
+Signed-off-by: Eric Yang <Eric.Yang2@amd.com>
+Reviewed-by: Charlene Liu <Charlene.Liu@amd.com>
+Acked-by: Harry Wentland <harry.wentland@amd.com>
+---
+ drivers/gpu/drm/amd/display/dc/dce/dce_hwseq.h | 14 ++++++++++----
+ .../gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c | 10 +++++++---
+ 2 files changed, 17 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_hwseq.h b/drivers/gpu/drm/amd/display/dc/dce/dce_hwseq.h
+index c7ea2c6..19ca7f0 100644
+--- a/drivers/gpu/drm/amd/display/dc/dce/dce_hwseq.h
++++ b/drivers/gpu/drm/amd/display/dc/dce/dce_hwseq.h
+@@ -329,6 +329,8 @@ struct dce_hwseq_registers {
+ HWSEQ_DCE10_MASK_SH_LIST(mask_sh),\
+ SF(DCFEV_CLOCK_CONTROL, DCFEV_CLOCK_ENABLE, mask_sh),\
+ HWS_SF(, LVTMA_PWRSEQ_CNTL, LVTMA_BLON, mask_sh),\
++ HWS_SF(, LVTMA_PWRSEQ_CNTL, LVTMA_DIGON, mask_sh),\
++ HWS_SF(, LVTMA_PWRSEQ_CNTL, LVTMA_DIGON_OVRD, mask_sh),\
+ HWS_SF(, LVTMA_PWRSEQ_STATE, LVTMA_PWRSEQ_TARGET_STATE_R, mask_sh),\
+ HWSEQ_PIXEL_RATE_MASK_SH_LIST(mask_sh, CRTC0_)
+
+@@ -405,10 +407,12 @@ struct dce_hwseq_registers {
+ HWS_SF(, DOMAIN6_PG_STATUS, DOMAIN6_PGFSM_PWR_STATUS, mask_sh), \
+ HWS_SF(, DOMAIN7_PG_STATUS, DOMAIN7_PGFSM_PWR_STATUS, mask_sh), \
+ HWS_SF(, DC_IP_REQUEST_CNTL, IP_REQUEST_EN, mask_sh), \
+- HWS_SF(, LVTMA_PWRSEQ_CNTL, LVTMA_BLON, mask_sh), \
+- HWS_SF(, LVTMA_PWRSEQ_STATE, LVTMA_PWRSEQ_TARGET_STATE_R, mask_sh), \
+ HWS_SF(, VGA_TEST_CONTROL, VGA_TEST_ENABLE, mask_sh),\
+- HWS_SF(, VGA_TEST_CONTROL, VGA_TEST_RENDER_START, mask_sh)
++ HWS_SF(, VGA_TEST_CONTROL, VGA_TEST_RENDER_START, mask_sh),\
++ HWS_SF(, LVTMA_PWRSEQ_CNTL, LVTMA_BLON, mask_sh), \
++ HWS_SF(, LVTMA_PWRSEQ_CNTL, LVTMA_DIGON, mask_sh), \
++ HWS_SF(, LVTMA_PWRSEQ_CNTL, LVTMA_DIGON_OVRD, mask_sh), \
++ HWS_SF(, LVTMA_PWRSEQ_STATE, LVTMA_PWRSEQ_TARGET_STATE_R, mask_sh)
+
+ #define HWSEQ_REG_FIELD_LIST(type) \
+ type DCFE_CLOCK_ENABLE; \
+@@ -440,7 +444,9 @@ struct dce_hwseq_registers {
+ type ENABLE_L1_TLB;\
+ type SYSTEM_ACCESS_MODE;\
+ type LVTMA_BLON;\
+- type LVTMA_PWRSEQ_TARGET_STATE_R;
++ type LVTMA_PWRSEQ_TARGET_STATE_R;\
++ type LVTMA_DIGON;\
++ type LVTMA_DIGON_OVRD;
+
+ #define HWSEQ_DCN_REG_FIELD_LIST(type) \
+ type HUBP_VTG_SEL; \
+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 ca04848..9de3d79 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
+@@ -737,10 +737,14 @@ static bool is_panel_backlight_on(struct dce_hwseq *hws)
+
+ static bool is_panel_powered_on(struct dce_hwseq *hws)
+ {
+- uint32_t value;
++ uint32_t pwr_seq_state, dig_on, dig_on_ovrd;
++
++
++ REG_GET(LVTMA_PWRSEQ_STATE, LVTMA_PWRSEQ_TARGET_STATE_R, &pwr_seq_state);
++
++ REG_GET_2(LVTMA_PWRSEQ_CNTL, LVTMA_DIGON, &dig_on, LVTMA_DIGON_OVRD, &dig_on_ovrd);
+
+- REG_GET(LVTMA_PWRSEQ_STATE, LVTMA_PWRSEQ_TARGET_STATE_R, &value);
+- return value == 1;
++ return (pwr_seq_state == 1) || (dig_on == 1 && dig_on_ovrd == 1);
+ }
+
+ static enum bp_result link_transmitter_control(
+--
+2.7.4
+