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

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
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -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;
}
+2 −0
Original line number Diff line number Diff line
@@ -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__ */
+1 −0
Original line number Diff line number Diff line
@@ -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,
};

+2 −0
Original line number Diff line number Diff line
@@ -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_ */