1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/drivers/gpu/drm/amd/display/dc/dcn21
Wenjing Liu 9c75891fee drm/amd/display: rework recent update PHY state commit
[why]
Original change 594b237b9a ("drm/amd/display: Add
interface to track PHY state") was implemented by assuming stream's
dpms off is equivalent to PHY power off.
This assumption doesn't hold in following situations:
1. MST multiple stream scenario, where multiple streams are sharing the
same PHY output. Toggle dpms off for one of the stream doesn't power
off the PHY due to the presence of other streams.
2. enable stream failure scenario, where enable stream fails due to
failure of link training. This will cause DPMS off is set to false, while
the actual PHY power state is off in certain cases.
Due to the problematic assumption, the logic will skip disabling
other streams for MST multiple stream scenario, therefore PHY is
not actually powered off.

[how]
1. Rework this refactor by moving PHY state update down to hardware
level, where we update PHY state in place when hardware sequencer
is actually changing the power state of the PHY hardware.
2. Reimplement symclk on TX off workaround in place when we are actually
calling transmitter control to power off PHY in dcn32. Note the workaround is
added due to the lack of proper software interface to set TX while keeping
symclk on. We plan to address this interface problem so we can set TX off
only without affecting symclk in future dcn versions.

Fixes: 594b237b9a ("drm/amd/display: Add interface to track PHY state")
Reviewed-by: Jun Lei <Jun.Lei@amd.com>
Acked-by: Wayne Lin <wayne.lin@amd.com>
Signed-off-by: Wenjing Liu <wenjing.liu@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2022-09-19 15:10:24 -04:00
..
dcn21_dccg.c drm/amd/display: Add interface for ADD & DROP PIXEL Registers 2021-06-08 12:22:42 -04:00
dcn21_dccg.h drm/amd/display: Adding prototype for dccg21_update_dpp_dto() 2020-12-15 11:35:25 -05:00
dcn21_hubbub.c drm/amd/display: avoid doing vm_init multiple time 2022-08-16 18:09:16 -04:00
dcn21_hubbub.h drm/amd/display: log additional register state for debug 2021-07-21 13:39:25 -04:00
dcn21_hubp.c drm/amd/display: fix function scopes 2021-12-13 16:34:26 -05:00
dcn21_hubp.h drm/amd/display: update chroma viewport wa 2019-12-18 16:09:08 -05:00
dcn21_hwseq.c drm/amd/display: Added multi instance support for ABM 2021-04-28 23:35:50 -04:00
dcn21_hwseq.h drm/amd/display: Block ABM in case of eDP ODM 2020-10-05 15:16:43 -04:00
dcn21_init.c drm/amd/display: rework recent update PHY state commit 2022-09-19 15:10:24 -04:00
dcn21_init.h drm/amd/display: cleanup of function pointer tables 2019-11-19 10:12:53 -05:00
dcn21_link_encoder.c drm/amd/display: fix function scopes 2021-12-13 16:34:26 -05:00
dcn21_link_encoder.h drm/amd/display: add missing dcn link encoder regs 2019-12-18 16:09:06 -05:00
dcn21_resource.c drm/amd/display: Add dc_ctx to link_enc_create() parameters 2022-07-25 17:17:28 -04:00
dcn21_resource.h drm/amd/display: move FPU operations from dcn21 to dml/dcn20 folder 2022-03-15 14:25:16 -04:00
Makefile drm/amd/display: move FPU operations from dcn21 to dml/dcn20 folder 2022-03-15 14:25:16 -04:00