diff options
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.patch | 97 |
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 + |