mirror of
https://github.com/torvalds/linux.git
synced 2026-05-01 13:02:35 -04:00
drm/amd/display: Refactor dc_update_planes_and_stream.
Split update_planes_and_stream_state (split Software and Hardware programming) as the state is already build, so we only need to program the hardware Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com> Signed-off-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com> Reviewed-by: Harry Wentland <Harry.Wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
fc17235fe6
commit
bc6828e0e6
@@ -3771,7 +3771,8 @@ static void prepare_flip_isr(struct amdgpu_crtc *acrtc)
|
||||
*/
|
||||
static void amdgpu_dm_do_flip(struct drm_crtc *crtc,
|
||||
struct drm_framebuffer *fb,
|
||||
uint32_t target)
|
||||
uint32_t target,
|
||||
struct dc_state *state)
|
||||
{
|
||||
unsigned long flags;
|
||||
uint32_t target_vblank;
|
||||
@@ -3842,7 +3843,13 @@ static void amdgpu_dm_do_flip(struct drm_crtc *crtc,
|
||||
surface_updates->flip_addr = &addr;
|
||||
|
||||
|
||||
dc_update_planes_and_stream(adev->dm.dc, surface_updates, 1, acrtc_state->stream, NULL);
|
||||
dc_commit_updates_for_stream(adev->dm.dc,
|
||||
surface_updates,
|
||||
1,
|
||||
acrtc_state->stream,
|
||||
NULL,
|
||||
&surface_updates->surface,
|
||||
state);
|
||||
|
||||
DRM_DEBUG_DRIVER("%s Flipping to hi: 0x%x, low: 0x%x \n",
|
||||
__func__,
|
||||
@@ -3868,6 +3875,7 @@ static void amdgpu_dm_commit_planes(struct drm_atomic_state *state,
|
||||
struct drm_crtc_state *new_pcrtc_state =
|
||||
drm_atomic_get_new_crtc_state(state, pcrtc);
|
||||
struct dm_crtc_state *acrtc_state = to_dm_crtc_state(new_pcrtc_state);
|
||||
struct dm_atomic_state *dm_state = to_dm_atomic_state(state);
|
||||
int planes_count = 0;
|
||||
unsigned long flags;
|
||||
|
||||
@@ -3925,7 +3933,8 @@ static void amdgpu_dm_commit_planes(struct drm_atomic_state *state,
|
||||
amdgpu_dm_do_flip(
|
||||
crtc,
|
||||
fb,
|
||||
drm_crtc_vblank_count(crtc) + *wait_for_vblank);
|
||||
drm_crtc_vblank_count(crtc) + *wait_for_vblank,
|
||||
dm_state->context);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3945,7 +3954,8 @@ static void amdgpu_dm_commit_planes(struct drm_atomic_state *state,
|
||||
if (false == dc_commit_planes_to_stream(dm->dc,
|
||||
plane_states_constructed,
|
||||
planes_count,
|
||||
dc_stream_attach))
|
||||
dc_stream_attach,
|
||||
dm_state->context))
|
||||
dm_error("%s: Failed to attach plane!\n", __func__);
|
||||
} else {
|
||||
/*TODO BUG Here should go disable planes on CRTC. */
|
||||
@@ -4165,7 +4175,8 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state)
|
||||
dm->dc,
|
||||
status->plane_states,
|
||||
status->plane_count,
|
||||
dm_new_crtc_state->stream))
|
||||
dm_new_crtc_state->stream,
|
||||
dm_state->context))
|
||||
dm_error("%s: Failed to update stream scaling!\n", __func__);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user