Skip to content

Commit 4f4dc37

Browse files
committed
drm/mgag200: Reorganize before dropping simple-KMS helpers
Move around some modesetting code before dropping simple-KMS helpers. Makes the next patch more readable. No functional changes. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com> Tested-by: Jocelyn Falempe <jfalempe@redhat.com> Acked-by: Sam Ravnborg <sam@ravnborg.org> Link: https://patchwork.freedesktop.org/patch/msgid/20220728124103.30159-7-tzimmermann@suse.de
1 parent ed2ef21 commit 4f4dc37

File tree

1 file changed

+47
-48
lines changed

1 file changed

+47
-48
lines changed

drivers/gpu/drm/mgag200/mgag200_mode.c

Lines changed: 47 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -603,42 +603,31 @@ static void mgag200_disable_display(struct mga_device *mdev)
603603
WREG_ECRT(0x01, crtcext1);
604604
}
605605

606-
/*
607-
* Connector
608-
*/
609-
610-
static int mgag200_vga_connector_helper_get_modes(struct drm_connector *connector)
606+
static void mgag200_handle_damage(struct mga_device *mdev, const struct iosys_map *vmap,
607+
struct drm_framebuffer *fb, const struct drm_rect *clip)
611608
{
612-
struct mga_device *mdev = to_mga_device(connector->dev);
613-
int ret;
614-
615-
/*
616-
* Protect access to I/O registers from concurrent modesetting
617-
* by acquiring the I/O-register lock.
618-
*/
619-
mutex_lock(&mdev->rmmio_lock);
620-
ret = drm_connector_helper_get_modes_from_ddc(connector);
621-
mutex_unlock(&mdev->rmmio_lock);
609+
void __iomem *dst = mdev->vram;
610+
void *vaddr = vmap[0].vaddr; /* TODO: Use mapping abstraction properly */
622611

623-
return ret;
612+
dst += drm_fb_clip_offset(fb->pitches[0], fb->format, clip);
613+
drm_fb_memcpy_toio(dst, fb->pitches[0], vaddr, fb, clip);
624614
}
625615

626-
static const struct drm_connector_helper_funcs mga_vga_connector_helper_funcs = {
627-
.get_modes = mgag200_vga_connector_helper_get_modes,
628-
};
629-
630-
static const struct drm_connector_funcs mga_vga_connector_funcs = {
631-
.reset = drm_atomic_helper_connector_reset,
632-
.fill_modes = drm_helper_probe_single_connector_modes,
633-
.destroy = drm_connector_cleanup,
634-
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
635-
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
636-
};
637-
638616
/*
639617
* Simple Display Pipe
640618
*/
641619

620+
static const uint32_t mgag200_simple_display_pipe_formats[] = {
621+
DRM_FORMAT_XRGB8888,
622+
DRM_FORMAT_RGB565,
623+
DRM_FORMAT_RGB888,
624+
};
625+
626+
static const uint64_t mgag200_simple_display_pipe_fmtmods[] = {
627+
DRM_FORMAT_MOD_LINEAR,
628+
DRM_FORMAT_MOD_INVALID
629+
};
630+
642631
static enum drm_mode_status
643632
mgag200_simple_display_pipe_mode_valid(struct drm_simple_display_pipe *pipe,
644633
const struct drm_display_mode *mode)
@@ -670,17 +659,6 @@ mgag200_simple_display_pipe_mode_valid(struct drm_simple_display_pipe *pipe,
670659
return MODE_OK;
671660
}
672661

673-
static void
674-
mgag200_handle_damage(struct mga_device *mdev, struct drm_framebuffer *fb,
675-
struct drm_rect *clip, const struct iosys_map *map)
676-
{
677-
void __iomem *dst = mdev->vram;
678-
void *vmap = map->vaddr; /* TODO: Use mapping abstraction properly */
679-
680-
dst += drm_fb_clip_offset(fb->pitches[0], fb->format, clip);
681-
drm_fb_memcpy_toio(dst, fb->pitches[0], vmap, fb, clip);
682-
}
683-
684662
static void
685663
mgag200_simple_display_pipe_enable(struct drm_simple_display_pipe *pipe,
686664
struct drm_crtc_state *crtc_state,
@@ -728,7 +706,7 @@ mgag200_simple_display_pipe_enable(struct drm_simple_display_pipe *pipe,
728706

729707
mgag200_enable_display(mdev);
730708

731-
mgag200_handle_damage(mdev, fb, &fullscreen, &shadow_plane_state->data[0]);
709+
mgag200_handle_damage(mdev, shadow_plane_state->data, fb, &fullscreen);
732710

733711
/* Always scanout image at VRAM offset 0 */
734712
mgag200_set_startadd(mdev, (u32)0);
@@ -809,7 +787,7 @@ mgag200_simple_display_pipe_update(struct drm_simple_display_pipe *pipe,
809787

810788
drm_atomic_helper_damage_iter_init(&iter, old_state, state);
811789
drm_atomic_for_each_plane_damage(&iter, &damage) {
812-
mgag200_handle_damage(mdev, fb, &damage, &shadow_plane_state->data[0]);
790+
mgag200_handle_damage(mdev, shadow_plane_state->data, fb, &damage);
813791
}
814792
/* Always scanout image at VRAM offset 0 */
815793
mgag200_set_startadd(mdev, (u32)0);
@@ -877,15 +855,36 @@ mgag200_simple_display_pipe_funcs = {
877855
DRM_GEM_SIMPLE_DISPLAY_PIPE_SHADOW_PLANE_FUNCS,
878856
};
879857

880-
static const uint32_t mgag200_simple_display_pipe_formats[] = {
881-
DRM_FORMAT_XRGB8888,
882-
DRM_FORMAT_RGB565,
883-
DRM_FORMAT_RGB888,
858+
/*
859+
* Connector
860+
*/
861+
862+
static int mgag200_vga_connector_helper_get_modes(struct drm_connector *connector)
863+
{
864+
struct mga_device *mdev = to_mga_device(connector->dev);
865+
int ret;
866+
867+
/*
868+
* Protect access to I/O registers from concurrent modesetting
869+
* by acquiring the I/O-register lock.
870+
*/
871+
mutex_lock(&mdev->rmmio_lock);
872+
ret = drm_connector_helper_get_modes_from_ddc(connector);
873+
mutex_unlock(&mdev->rmmio_lock);
874+
875+
return ret;
876+
}
877+
878+
static const struct drm_connector_helper_funcs mga_vga_connector_helper_funcs = {
879+
.get_modes = mgag200_vga_connector_helper_get_modes,
884880
};
885881

886-
static const uint64_t mgag200_simple_display_pipe_fmtmods[] = {
887-
DRM_FORMAT_MOD_LINEAR,
888-
DRM_FORMAT_MOD_INVALID
882+
static const struct drm_connector_funcs mga_vga_connector_funcs = {
883+
.reset = drm_atomic_helper_connector_reset,
884+
.fill_modes = drm_helper_probe_single_connector_modes,
885+
.destroy = drm_connector_cleanup,
886+
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
887+
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
889888
};
890889

891890
/*

0 commit comments

Comments
 (0)