mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-04 08:08:54 +00:00
drm/mgag200: Implement struct drm_plane_helper_funcs.atomic_enable
Enable the primary plane for mgag200 hardware via atomic_enable. Atomic helpers invoke this callback only when the plane becomes active. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230209154107.30680-5-tzimmermann@suse.de
This commit is contained in:
parent
b712b3830a
commit
2a742fd164
2 changed files with 15 additions and 7 deletions
|
@ -375,12 +375,15 @@ int mgag200_primary_plane_helper_atomic_check(struct drm_plane *plane,
|
|||
struct drm_atomic_state *new_state);
|
||||
void mgag200_primary_plane_helper_atomic_update(struct drm_plane *plane,
|
||||
struct drm_atomic_state *old_state);
|
||||
void mgag200_primary_plane_helper_atomic_enable(struct drm_plane *plane,
|
||||
struct drm_atomic_state *state);
|
||||
void mgag200_primary_plane_helper_atomic_disable(struct drm_plane *plane,
|
||||
struct drm_atomic_state *old_state);
|
||||
#define MGAG200_PRIMARY_PLANE_HELPER_FUNCS \
|
||||
DRM_GEM_SHADOW_PLANE_HELPER_FUNCS, \
|
||||
.atomic_check = mgag200_primary_plane_helper_atomic_check, \
|
||||
.atomic_update = mgag200_primary_plane_helper_atomic_update, \
|
||||
.atomic_enable = mgag200_primary_plane_helper_atomic_enable, \
|
||||
.atomic_disable = mgag200_primary_plane_helper_atomic_disable
|
||||
|
||||
#define MGAG200_PRIMARY_PLANE_FUNCS \
|
||||
|
|
|
@ -501,7 +501,6 @@ void mgag200_primary_plane_helper_atomic_update(struct drm_plane *plane,
|
|||
struct drm_framebuffer *fb = plane_state->fb;
|
||||
struct drm_atomic_helper_damage_iter iter;
|
||||
struct drm_rect damage;
|
||||
u8 seq1;
|
||||
|
||||
drm_atomic_helper_damage_iter_init(&iter, old_plane_state, plane_state);
|
||||
drm_atomic_for_each_plane_damage(&iter, &damage) {
|
||||
|
@ -511,13 +510,19 @@ void mgag200_primary_plane_helper_atomic_update(struct drm_plane *plane,
|
|||
/* Always scanout image at VRAM offset 0 */
|
||||
mgag200_set_startadd(mdev, (u32)0);
|
||||
mgag200_set_offset(mdev, fb);
|
||||
}
|
||||
|
||||
if (!old_plane_state->crtc && plane_state->crtc) { // enabling
|
||||
RREG_SEQ(0x01, seq1);
|
||||
seq1 &= ~MGAREG_SEQ1_SCROFF;
|
||||
WREG_SEQ(0x01, seq1);
|
||||
msleep(20);
|
||||
}
|
||||
void mgag200_primary_plane_helper_atomic_enable(struct drm_plane *plane,
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct drm_device *dev = plane->dev;
|
||||
struct mga_device *mdev = to_mga_device(dev);
|
||||
u8 seq1;
|
||||
|
||||
RREG_SEQ(0x01, seq1);
|
||||
seq1 &= ~MGAREG_SEQ1_SCROFF;
|
||||
WREG_SEQ(0x01, seq1);
|
||||
msleep(20);
|
||||
}
|
||||
|
||||
void mgag200_primary_plane_helper_atomic_disable(struct drm_plane *plane,
|
||||
|
|
Loading…
Reference in a new issue