mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 02:50:49 +09:00
drm/amd/display: Add wrapper to call planes and stream update
[ Upstream commit81f743a08f] [Why & How] This commit is part of a sequence of changes that replaces the commit sequence used in the DC with a new one. As a result of this transition, we moved some specific parts from the commit sequence and brought them to amdgpu_dm. This commit adds a wrapper inside DM that enable our drivers to do any necessary preparation or change before we offload the plane/stream update to DC. Reviewed-by: Harry Wentland <Harry.Wentland@amd.com> Acked-by: Qingqing Zhuo <qingqing.zhuo@amd.com> Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Stable-dep-of:ea2062dd1f("drm/amd/display: fix the system hang while disable PSR") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
8d855bc676
commit
e538342002
@@ -348,6 +348,35 @@ static inline bool is_dc_timing_adjust_needed(struct dm_crtc_state *old_state,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* update_planes_and_stream_adapter() - Send planes to be updated in DC
|
||||||
|
*
|
||||||
|
* DC has a generic way to update planes and stream via
|
||||||
|
* dc_update_planes_and_stream function; however, DM might need some
|
||||||
|
* adjustments and preparation before calling it. This function is a wrapper
|
||||||
|
* for the dc_update_planes_and_stream that does any required configuration
|
||||||
|
* before passing control to DC.
|
||||||
|
*/
|
||||||
|
static inline bool update_planes_and_stream_adapter(struct dc *dc,
|
||||||
|
int update_type,
|
||||||
|
int planes_count,
|
||||||
|
struct dc_stream_state *stream,
|
||||||
|
struct dc_stream_update *stream_update,
|
||||||
|
struct dc_surface_update *array_of_surface_update)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Previous frame finished and HW is ready for optimization.
|
||||||
|
*/
|
||||||
|
if (update_type == UPDATE_TYPE_FAST)
|
||||||
|
dc_post_update_surfaces_to_stream(dc);
|
||||||
|
|
||||||
|
return dc_update_planes_and_stream(dc,
|
||||||
|
array_of_surface_update,
|
||||||
|
planes_count,
|
||||||
|
stream,
|
||||||
|
stream_update);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* dm_pflip_high_irq() - Handle pageflip interrupt
|
* dm_pflip_high_irq() - Handle pageflip interrupt
|
||||||
* @interrupt_params: ignored
|
* @interrupt_params: ignored
|
||||||
@@ -2633,11 +2662,12 @@ static void dm_gpureset_commit_state(struct dc_state *dc_state,
|
|||||||
true;
|
true;
|
||||||
}
|
}
|
||||||
|
|
||||||
dc_update_planes_and_stream(dm->dc,
|
update_planes_and_stream_adapter(dm->dc,
|
||||||
bundle->surface_updates,
|
UPDATE_TYPE_FULL,
|
||||||
dc_state->stream_status->plane_count,
|
dc_state->stream_status->plane_count,
|
||||||
dc_state->streams[k],
|
dc_state->streams[k],
|
||||||
&bundle->stream_update);
|
&bundle->stream_update,
|
||||||
|
bundle->surface_updates);
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
@@ -7889,11 +7919,12 @@ static void amdgpu_dm_commit_planes(struct drm_atomic_state *state,
|
|||||||
acrtc_state->stream->link->psr_settings.psr_allow_active)
|
acrtc_state->stream->link->psr_settings.psr_allow_active)
|
||||||
amdgpu_dm_psr_disable(acrtc_state->stream);
|
amdgpu_dm_psr_disable(acrtc_state->stream);
|
||||||
|
|
||||||
dc_update_planes_and_stream(dm->dc,
|
update_planes_and_stream_adapter(dm->dc,
|
||||||
bundle->surface_updates,
|
acrtc_state->update_type,
|
||||||
planes_count,
|
planes_count,
|
||||||
acrtc_state->stream,
|
acrtc_state->stream,
|
||||||
&bundle->stream_update);
|
&bundle->stream_update,
|
||||||
|
bundle->surface_updates);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enable or disable the interrupts on the backend.
|
* Enable or disable the interrupts on the backend.
|
||||||
|
|||||||
Reference in New Issue
Block a user