mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 08:33:17 +02:00
drm/amd/display: Adjust dc_stream_forward_crc_window to accept assignment of phy_id
[Why] For mst streams under same topology, stream->link->link_enc_hw_inst are the same and hence can't distinguish the crc window setting. [How] Firstly adjust dc_stream_forward_crc_window to accept assignment of phy_id. Follow up another patch to determine the phy_id at dm layer. Reviewed-by: HaoPing Liu <haoping.liu@amd.com> Signed-off-by: Wayne Lin <Wayne.Lin@amd.com> Signed-off-by: Aurabindo Pillai <aurabindo.pillai@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
5f02fc3ecb
commit
37a8f9b0c9
|
|
@ -89,6 +89,7 @@ static void amdgpu_dm_set_crc_window_default(struct drm_crtc *crtc, struct dc_st
|
|||
struct amdgpu_display_manager *dm = &drm_to_adev(drm_dev)->dm;
|
||||
struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc);
|
||||
bool was_activated;
|
||||
uint8_t phy_id = stream->link->link_enc_hw_inst;
|
||||
|
||||
spin_lock_irq(&drm_dev->event_lock);
|
||||
was_activated = acrtc->dm_irq_params.window_param.activated;
|
||||
|
|
@ -106,7 +107,7 @@ static void amdgpu_dm_set_crc_window_default(struct drm_crtc *crtc, struct dc_st
|
|||
/* stop ROI update on this crtc */
|
||||
flush_work(&dm->secure_display_ctxs[crtc->index].notify_ta_work);
|
||||
flush_work(&dm->secure_display_ctxs[crtc->index].forward_roi_work);
|
||||
dc_stream_forward_crc_window(stream, NULL, true);
|
||||
dc_stream_forward_crc_window(stream, NULL, phy_id, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -175,7 +176,8 @@ amdgpu_dm_forward_crc_window(struct work_struct *work)
|
|||
stream = to_amdgpu_crtc(crtc)->dm_irq_params.stream;
|
||||
|
||||
mutex_lock(&dm->dc_lock);
|
||||
dc_stream_forward_crc_window(stream, &secure_display_ctx->rect, false);
|
||||
dc_stream_forward_crc_window(stream, &secure_display_ctx->rect,
|
||||
stream->link->link_enc_hw_inst, false);
|
||||
mutex_unlock(&dm->dc_lock);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -579,7 +579,7 @@ dc_stream_forward_dmcu_crc_window(struct dmcu *dmcu,
|
|||
|
||||
bool
|
||||
dc_stream_forward_crc_window(struct dc_stream_state *stream,
|
||||
struct rect *rect, bool is_stop)
|
||||
struct rect *rect, uint8_t phy_id, bool is_stop)
|
||||
{
|
||||
struct dmcu *dmcu;
|
||||
struct dc_dmub_srv *dmub_srv;
|
||||
|
|
@ -598,7 +598,7 @@ dc_stream_forward_crc_window(struct dc_stream_state *stream,
|
|||
if (i == MAX_PIPES)
|
||||
return false;
|
||||
|
||||
mux_mapping.phy_output_num = stream->link->link_enc_hw_inst;
|
||||
mux_mapping.phy_output_num = phy_id;
|
||||
mux_mapping.otg_output_num = pipe->stream_res.tg->inst;
|
||||
|
||||
dmcu = dc->res_pool->dmcu;
|
||||
|
|
|
|||
|
|
@ -541,6 +541,7 @@ bool dc_stream_get_crtc_position(struct dc *dc,
|
|||
#if defined(CONFIG_DRM_AMD_SECURE_DISPLAY)
|
||||
bool dc_stream_forward_crc_window(struct dc_stream_state *stream,
|
||||
struct rect *rect,
|
||||
uint8_t phy_id,
|
||||
bool is_stop);
|
||||
#endif
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user