Commit 3c465370 authored by Nicholas Kazlauskas's avatar Nicholas Kazlauskas Committed by Alex Deucher
Browse files

drm/amd/display: Only wait for DMUB phy init on dcn21



[Why]
The wait for PHY init won't finish if the firmware doesn't support it.

[How]
Only hook this functionality up on DCN21 and move it out of DCN20.

For ASIC without support then this should return OK so we don't hang
while waiting in DC.

Signed-off-by: default avatarNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Reviewed-by: default avatarTony Cheng <Tony.Cheng@amd.com>
Acked-by: default avatarLeo Li <sunpeng.li@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 20ad55c8
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -135,8 +135,3 @@ bool dmub_dcn20_is_supported(struct dmub_srv *dmub)

	return supported;
}

bool dmub_dcn20_is_phy_init(struct dmub_srv *dmub)
{
	return REG_READ(DMCUB_SCRATCH10) == 0;
}
+0 −2
Original line number Diff line number Diff line
@@ -59,6 +59,4 @@ bool dmub_dcn20_is_hw_init(struct dmub_srv *dmub);

bool dmub_dcn20_is_supported(struct dmub_srv *dmub);

bool dmub_dcn20_is_phy_init(struct dmub_srv *dmub);

#endif /* _DMUB_DCN20_H_ */
+5 −0
Original line number Diff line number Diff line
@@ -124,3 +124,8 @@ bool dmub_dcn21_is_auto_load_done(struct dmub_srv *dmub)
{
	return (REG_READ(DMCUB_SCRATCH0) == 3);
}

bool dmub_dcn21_is_phy_init(struct dmub_srv *dmub)
{
	return REG_READ(DMCUB_SCRATCH10) == 0;
}
+2 −0
Original line number Diff line number Diff line
@@ -42,4 +42,6 @@ void dmub_dcn21_setup_windows(struct dmub_srv *dmub,

bool dmub_dcn21_is_auto_load_done(struct dmub_srv *dmub);

bool dmub_dcn21_is_phy_init(struct dmub_srv *dmub);

#endif /* _DMUB_DCN21_H_ */
+1 −1
Original line number Diff line number Diff line
@@ -76,13 +76,13 @@ static bool dmub_srv_hw_setup(struct dmub_srv *dmub, enum dmub_asic asic)
		funcs->get_inbox1_rptr = dmub_dcn20_get_inbox1_rptr;
		funcs->set_inbox1_wptr = dmub_dcn20_set_inbox1_wptr;
		funcs->is_supported = dmub_dcn20_is_supported;
		funcs->is_phy_init = dmub_dcn20_is_phy_init;
		funcs->is_hw_init = dmub_dcn20_is_hw_init;

		if (asic == DMUB_ASIC_DCN21) {
			funcs->backdoor_load = dmub_dcn21_backdoor_load;
			funcs->setup_windows = dmub_dcn21_setup_windows;
			funcs->is_auto_load_done = dmub_dcn21_is_auto_load_done;
			funcs->is_phy_init = dmub_dcn21_is_phy_init;
		}
		break;