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> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
4551666f5b
commit
78d9b95ecf
@ -89,6 +89,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
|
||||
};
|
||||
|
||||
@ -1397,3 +1398,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;
|
||||
}
|
||||
|
||||
|
@ -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__ */
|
||||
|
@ -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,
|
||||
};
|
||||
|
||||
|
@ -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_ */
|
||||
|
Loading…
Reference in New Issue
Block a user