mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-21 03:41:04 +07:00
drm/amd/display: fix high part address in dm_plane_helper_prepare_fb()
The high part calculation of luma and chroma address' was missing in dm_plane_helper_prepare_fb(). This fix brings uniformity in the address' at atomic_check and atomic_commit for both RGB & YUV planes. Signed-off-by: Shirish S <shirish.s@amd.com> Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
4d3e00dad8
commit
56087b31f4
@ -2896,6 +2896,7 @@ static int dm_plane_helper_prepare_fb(struct drm_plane *plane,
|
||||
struct amdgpu_framebuffer *afb;
|
||||
struct drm_gem_object *obj;
|
||||
struct amdgpu_bo *rbo;
|
||||
uint64_t chroma_addr = 0;
|
||||
int r;
|
||||
struct dm_plane_state *dm_plane_state_new, *dm_plane_state_old;
|
||||
unsigned int awidth;
|
||||
@ -2937,11 +2938,16 @@ static int dm_plane_helper_prepare_fb(struct drm_plane *plane,
|
||||
plane_state->address.grph.addr.high_part = upper_32_bits(afb->address);
|
||||
} else {
|
||||
awidth = ALIGN(new_state->fb->width, 64);
|
||||
plane_state->address.type = PLN_ADDR_TYPE_VIDEO_PROGRESSIVE;
|
||||
plane_state->address.video_progressive.luma_addr.low_part
|
||||
= lower_32_bits(afb->address);
|
||||
plane_state->address.video_progressive.luma_addr.high_part
|
||||
= upper_32_bits(afb->address);
|
||||
chroma_addr = afb->address + (u64)(awidth * new_state->fb->height);
|
||||
plane_state->address.video_progressive.chroma_addr.low_part
|
||||
= lower_32_bits(afb->address) +
|
||||
(awidth * new_state->fb->height);
|
||||
= lower_32_bits(chroma_addr);
|
||||
plane_state->address.video_progressive.chroma_addr.high_part
|
||||
= upper_32_bits(chroma_addr);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user