Commit 78d9b95e authored by Charlene Liu's avatar Charlene Liu Committed by Alex Deucher

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: default avatarCharlene Liu <charlene.liu@amd.com>
Reviewed-by: default avatarDmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Acked-by: default avatarBhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 4551666f
...@@ -89,6 +89,7 @@ static const struct link_encoder_funcs dcn10_lnk_enc_funcs = { ...@@ -89,6 +89,7 @@ static const struct link_encoder_funcs dcn10_lnk_enc_funcs = {
.disable_hpd = dcn10_link_encoder_disable_hpd, .disable_hpd = dcn10_link_encoder_disable_hpd,
.is_dig_enabled = dcn10_is_dig_enabled, .is_dig_enabled = dcn10_is_dig_enabled,
.get_dig_frontend = dcn10_get_dig_frontend, .get_dig_frontend = dcn10_get_dig_frontend,
.get_dig_mode = dcn10_get_dig_mode,
.destroy = dcn10_link_encoder_destroy .destroy = dcn10_link_encoder_destroy
}; };
...@@ -1397,3 +1398,25 @@ void dcn10_aux_initialize(struct dcn10_link_encoder *enc10) ...@@ -1397,3 +1398,25 @@ void dcn10_aux_initialize(struct dcn10_link_encoder *enc10)
AUX_REG_UPDATE(AUX_DPHY_RX_CONTROL0, AUX_REG_UPDATE(AUX_DPHY_RX_CONTROL0,
AUX_RX_RECEIVE_WINDOW, 0); 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;
}
...@@ -515,4 +515,6 @@ unsigned int dcn10_get_dig_frontend(struct link_encoder *enc); ...@@ -515,4 +515,6 @@ unsigned int dcn10_get_dig_frontend(struct link_encoder *enc);
void dcn10_aux_initialize(struct dcn10_link_encoder *enc10); 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__ */ #endif /* __DC_LINK_ENCODER__DCN10_H__ */
...@@ -341,6 +341,7 @@ static const struct link_encoder_funcs dcn20_link_enc_funcs = { ...@@ -341,6 +341,7 @@ static const struct link_encoder_funcs dcn20_link_enc_funcs = {
.fec_set_enable = enc2_fec_set_enable, .fec_set_enable = enc2_fec_set_enable,
.fec_set_ready = enc2_fec_set_ready, .fec_set_ready = enc2_fec_set_ready,
.fec_is_active = enc2_fec_is_active, .fec_is_active = enc2_fec_is_active,
.get_dig_mode = dcn10_get_dig_mode,
.get_dig_frontend = dcn10_get_dig_frontend, .get_dig_frontend = dcn10_get_dig_frontend,
}; };
......
...@@ -184,6 +184,8 @@ struct link_encoder_funcs { ...@@ -184,6 +184,8 @@ struct link_encoder_funcs {
bool (*fec_is_active)(struct link_encoder *enc); bool (*fec_is_active)(struct link_encoder *enc);
#endif #endif
bool (*is_in_alt_mode) (struct link_encoder *enc); bool (*is_in_alt_mode) (struct link_encoder *enc);
enum signal_type (*get_dig_mode)(
struct link_encoder *enc);
}; };
#endif /* LINK_ENCODER_H_ */ #endif /* LINK_ENCODER_H_ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment