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
This commit is contained in:
parent
ed2ef21f10
commit
4f4dc37e37
|
@ -603,42 +603,31 @@ static void mgag200_disable_display(struct mga_device *mdev)
|
|||
WREG_ECRT(0x01, crtcext1);
|
||||
}
|
||||
|
||||
/*
|
||||
* Connector
|
||||
*/
|
||||
|
||||
static int mgag200_vga_connector_helper_get_modes(struct drm_connector *connector)
|
||||
static void mgag200_handle_damage(struct mga_device *mdev, const struct iosys_map *vmap,
|
||||
struct drm_framebuffer *fb, const struct drm_rect *clip)
|
||||
{
|
||||
struct mga_device *mdev = to_mga_device(connector->dev);
|
||||
int ret;
|
||||
void __iomem *dst = mdev->vram;
|
||||
void *vaddr = vmap[0].vaddr; /* TODO: Use mapping abstraction properly */
|
||||
|
||||
/*
|
||||
* Protect access to I/O registers from concurrent modesetting
|
||||
* by acquiring the I/O-register lock.
|
||||
*/
|
||||
mutex_lock(&mdev->rmmio_lock);
|
||||
ret = drm_connector_helper_get_modes_from_ddc(connector);
|
||||
mutex_unlock(&mdev->rmmio_lock);
|
||||
|
||||
return ret;
|
||||
dst += drm_fb_clip_offset(fb->pitches[0], fb->format, clip);
|
||||
drm_fb_memcpy_toio(dst, fb->pitches[0], vaddr, fb, clip);
|
||||
}
|
||||
|
||||
static const struct drm_connector_helper_funcs mga_vga_connector_helper_funcs = {
|
||||
.get_modes = mgag200_vga_connector_helper_get_modes,
|
||||
};
|
||||
|
||||
static const struct drm_connector_funcs mga_vga_connector_funcs = {
|
||||
.reset = drm_atomic_helper_connector_reset,
|
||||
.fill_modes = drm_helper_probe_single_connector_modes,
|
||||
.destroy = drm_connector_cleanup,
|
||||
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
|
||||
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
|
||||
};
|
||||
|
||||
/*
|
||||
* Simple Display Pipe
|
||||
*/
|
||||
|
||||
static const uint32_t mgag200_simple_display_pipe_formats[] = {
|
||||
DRM_FORMAT_XRGB8888,
|
||||
DRM_FORMAT_RGB565,
|
||||
DRM_FORMAT_RGB888,
|
||||
};
|
||||
|
||||
static const uint64_t mgag200_simple_display_pipe_fmtmods[] = {
|
||||
DRM_FORMAT_MOD_LINEAR,
|
||||
DRM_FORMAT_MOD_INVALID
|
||||
};
|
||||
|
||||
static enum drm_mode_status
|
||||
mgag200_simple_display_pipe_mode_valid(struct drm_simple_display_pipe *pipe,
|
||||
const struct drm_display_mode *mode)
|
||||
|
@ -670,17 +659,6 @@ mgag200_simple_display_pipe_mode_valid(struct drm_simple_display_pipe *pipe,
|
|||
return MODE_OK;
|
||||
}
|
||||
|
||||
static void
|
||||
mgag200_handle_damage(struct mga_device *mdev, struct drm_framebuffer *fb,
|
||||
struct drm_rect *clip, const struct iosys_map *map)
|
||||
{
|
||||
void __iomem *dst = mdev->vram;
|
||||
void *vmap = map->vaddr; /* TODO: Use mapping abstraction properly */
|
||||
|
||||
dst += drm_fb_clip_offset(fb->pitches[0], fb->format, clip);
|
||||
drm_fb_memcpy_toio(dst, fb->pitches[0], vmap, fb, clip);
|
||||
}
|
||||
|
||||
static void
|
||||
mgag200_simple_display_pipe_enable(struct drm_simple_display_pipe *pipe,
|
||||
struct drm_crtc_state *crtc_state,
|
||||
|
@ -728,7 +706,7 @@ mgag200_simple_display_pipe_enable(struct drm_simple_display_pipe *pipe,
|
|||
|
||||
mgag200_enable_display(mdev);
|
||||
|
||||
mgag200_handle_damage(mdev, fb, &fullscreen, &shadow_plane_state->data[0]);
|
||||
mgag200_handle_damage(mdev, shadow_plane_state->data, fb, &fullscreen);
|
||||
|
||||
/* Always scanout image at VRAM offset 0 */
|
||||
mgag200_set_startadd(mdev, (u32)0);
|
||||
|
@ -809,7 +787,7 @@ mgag200_simple_display_pipe_update(struct drm_simple_display_pipe *pipe,
|
|||
|
||||
drm_atomic_helper_damage_iter_init(&iter, old_state, state);
|
||||
drm_atomic_for_each_plane_damage(&iter, &damage) {
|
||||
mgag200_handle_damage(mdev, fb, &damage, &shadow_plane_state->data[0]);
|
||||
mgag200_handle_damage(mdev, shadow_plane_state->data, fb, &damage);
|
||||
}
|
||||
/* Always scanout image at VRAM offset 0 */
|
||||
mgag200_set_startadd(mdev, (u32)0);
|
||||
|
@ -877,15 +855,36 @@ mgag200_simple_display_pipe_funcs = {
|
|||
DRM_GEM_SIMPLE_DISPLAY_PIPE_SHADOW_PLANE_FUNCS,
|
||||
};
|
||||
|
||||
static const uint32_t mgag200_simple_display_pipe_formats[] = {
|
||||
DRM_FORMAT_XRGB8888,
|
||||
DRM_FORMAT_RGB565,
|
||||
DRM_FORMAT_RGB888,
|
||||
/*
|
||||
* Connector
|
||||
*/
|
||||
|
||||
static int mgag200_vga_connector_helper_get_modes(struct drm_connector *connector)
|
||||
{
|
||||
struct mga_device *mdev = to_mga_device(connector->dev);
|
||||
int ret;
|
||||
|
||||
/*
|
||||
* Protect access to I/O registers from concurrent modesetting
|
||||
* by acquiring the I/O-register lock.
|
||||
*/
|
||||
mutex_lock(&mdev->rmmio_lock);
|
||||
ret = drm_connector_helper_get_modes_from_ddc(connector);
|
||||
mutex_unlock(&mdev->rmmio_lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const struct drm_connector_helper_funcs mga_vga_connector_helper_funcs = {
|
||||
.get_modes = mgag200_vga_connector_helper_get_modes,
|
||||
};
|
||||
|
||||
static const uint64_t mgag200_simple_display_pipe_fmtmods[] = {
|
||||
DRM_FORMAT_MOD_LINEAR,
|
||||
DRM_FORMAT_MOD_INVALID
|
||||
static const struct drm_connector_funcs mga_vga_connector_funcs = {
|
||||
.reset = drm_atomic_helper_connector_reset,
|
||||
.fill_modes = drm_helper_probe_single_connector_modes,
|
||||
.destroy = drm_connector_cleanup,
|
||||
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
|
||||
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue