aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3590-drm-amd-display-set-av_mute-in-hw_init-for-HDMI.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3590-drm-amd-display-set-av_mute-in-hw_init-for-HDMI.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3590-drm-amd-display-set-av_mute-in-hw_init-for-HDMI.patch97
1 files changed, 97 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3590-drm-amd-display-set-av_mute-in-hw_init-for-HDMI.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3590-drm-amd-display-set-av_mute-in-hw_init-for-HDMI.patch
new file mode 100644
index 00000000..b69136bc
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3590-drm-amd-display-set-av_mute-in-hw_init-for-HDMI.patch
@@ -0,0 +1,97 @@
+From e11914a4d0e8480221c15850fad2011e44aef5d3 Mon Sep 17 00:00:00 2001
+From: Charlene Liu <charlene.liu@amd.com>
+Date: Wed, 7 Aug 2019 17:25:49 -0400
+Subject: [PATCH 3590/4256] drm/amd/display: set av_mute in hw_init for HDMI
+
+[Description]
+OS will reserve HW state in UEFI mode.
+Driver init_hw reset to RGB which caused HDMI green in YCbCr mode.
+read HW blank_color based on acc_mode.
+
+Signed-off-by: Charlene Liu <charlene.liu@amd.com>
+Reviewed-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
+Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
+---
+ .../amd/display/dc/dcn10/dcn10_link_encoder.c | 23 +++++++++++++++++++
+ .../amd/display/dc/dcn10/dcn10_link_encoder.h | 2 ++
+ .../amd/display/dc/dcn20/dcn20_link_encoder.c | 1 +
+ .../drm/amd/display/dc/inc/hw/link_encoder.h | 2 ++
+ 4 files changed, 28 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_link_encoder.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_link_encoder.c
+index e4c7ecd87de7..4034f7787a35 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_link_encoder.c
++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_link_encoder.c
+@@ -86,6 +86,7 @@ static const struct link_encoder_funcs dcn10_lnk_enc_funcs = {
+ .disable_hpd = dcn10_link_encoder_disable_hpd,
+ .is_dig_enabled = dcn10_is_dig_enabled,
+ .get_dig_frontend = dcn10_get_dig_frontend,
++ .get_dig_mode = dcn10_get_dig_mode,
+ .destroy = dcn10_link_encoder_destroy
+ };
+
+@@ -1394,3 +1395,25 @@ void dcn10_aux_initialize(struct dcn10_link_encoder *enc10)
+ AUX_REG_UPDATE(AUX_DPHY_RX_CONTROL0,
+ AUX_RX_RECEIVE_WINDOW, 0);
+ }
++
++enum signal_type dcn10_get_dig_mode(
++ struct link_encoder *enc)
++{
++ struct dcn10_link_encoder *enc10 = TO_DCN10_LINK_ENC(enc);
++ uint32_t value;
++ REG_GET(DIG_BE_CNTL, DIG_MODE, &value);
++ switch (value) {
++ case 1:
++ return SIGNAL_TYPE_DISPLAY_PORT;
++ case 2:
++ return SIGNAL_TYPE_DVI_SINGLE_LINK;
++ case 3:
++ return SIGNAL_TYPE_HDMI_TYPE_A;
++ case 5:
++ return SIGNAL_TYPE_DISPLAY_PORT_MST;
++ default:
++ return SIGNAL_TYPE_NONE;
++ }
++ return SIGNAL_TYPE_NONE;
++}
++
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_link_encoder.h b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_link_encoder.h
+index f3e57343417c..8bf5f0f2301d 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_link_encoder.h
++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_link_encoder.h
+@@ -515,4 +515,6 @@ unsigned int dcn10_get_dig_frontend(struct link_encoder *enc);
+
+ void dcn10_aux_initialize(struct dcn10_link_encoder *enc10);
+
++enum signal_type dcn10_get_dig_mode(
++ struct link_encoder *enc);
+ #endif /* __DC_LINK_ENCODER__DCN10_H__ */
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_link_encoder.c b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_link_encoder.c
+index f495582e9e87..e476f27aa3a9 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_link_encoder.c
++++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_link_encoder.c
+@@ -341,6 +341,7 @@ static const struct link_encoder_funcs dcn20_link_enc_funcs = {
+ .fec_set_enable = enc2_fec_set_enable,
+ .fec_set_ready = enc2_fec_set_ready,
+ .fec_is_active = enc2_fec_is_active,
++ .get_dig_mode = dcn10_get_dig_mode,
+ .get_dig_frontend = dcn10_get_dig_frontend,
+ };
+
+diff --git a/drivers/gpu/drm/amd/display/dc/inc/hw/link_encoder.h b/drivers/gpu/drm/amd/display/dc/inc/hw/link_encoder.h
+index 7001bfbd6681..abb4e4237fb6 100644
+--- a/drivers/gpu/drm/amd/display/dc/inc/hw/link_encoder.h
++++ b/drivers/gpu/drm/amd/display/dc/inc/hw/link_encoder.h
+@@ -184,6 +184,8 @@ struct link_encoder_funcs {
+ bool (*fec_is_active)(struct link_encoder *enc);
+ #endif
+ bool (*is_in_alt_mode) (struct link_encoder *enc);
++ enum signal_type (*get_dig_mode)(
++ struct link_encoder *enc);
+ };
+
+ #endif /* LINK_ENCODER_H_ */
+--
+2.17.1
+