aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/mgag200/mgag200_cursor.c
diff options
context:
space:
mode:
authorThomas Zimmermann <tzimmermann@suse.de>2019-09-27 11:12:56 +0200
committerThomas Zimmermann <tzimmermann@suse.de>2019-10-04 10:00:34 +0200
commit49b8d5aeaf816ed8308027da377a23ef686dd2a5 (patch)
treeefe0244f7e60cb661dd5ac78d76a8a9d513114a2 /drivers/gpu/drm/mgag200/mgag200_cursor.c
parentdrm/mgag200: Rename cursor functions to use mgag200_ prefix (diff)
downloadlinux-dev-49b8d5aeaf816ed8308027da377a23ef686dd2a5.tar.xz
linux-dev-49b8d5aeaf816ed8308027da377a23ef686dd2a5.zip
drm/mgag200: Add init and fini functions for cursor handling
Moving the cursor initialization and cleanup into separate functions makes the overall code slightly more readable. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Acked-by: Gerd Hoffmann <kraxel@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190927091301.10574-3-tzimmermann@suse.de
Diffstat (limited to 'drivers/gpu/drm/mgag200/mgag200_cursor.c')
-rw-r--r--drivers/gpu/drm/mgag200/mgag200_cursor.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/gpu/drm/mgag200/mgag200_cursor.c b/drivers/gpu/drm/mgag200/mgag200_cursor.c
index 3df70d86af21..d39e2bc57a70 100644
--- a/drivers/gpu/drm/mgag200/mgag200_cursor.c
+++ b/drivers/gpu/drm/mgag200/mgag200_cursor.c
@@ -25,6 +25,34 @@ static void mgag200_hide_cursor(struct mga_device *mdev)
mdev->cursor.pixels_current = NULL;
}
+int mgag200_cursor_init(struct mga_device *mdev)
+{
+ struct drm_device *dev = mdev->dev;
+
+ /*
+ * Make small buffers to store a hardware cursor (double
+ * buffered icon updates)
+ */
+ mdev->cursor.pixels_1 = drm_gem_vram_create(dev, &dev->vram_mm->bdev,
+ roundup(48*64, PAGE_SIZE),
+ 0, 0);
+ mdev->cursor.pixels_2 = drm_gem_vram_create(dev, &dev->vram_mm->bdev,
+ roundup(48*64, PAGE_SIZE),
+ 0, 0);
+ if (IS_ERR(mdev->cursor.pixels_2) || IS_ERR(mdev->cursor.pixels_1)) {
+ mdev->cursor.pixels_1 = NULL;
+ mdev->cursor.pixels_2 = NULL;
+ dev_warn(&dev->pdev->dev,
+ "Could not allocate space for cursors. Not doing hardware cursors.\n");
+ }
+ mdev->cursor.pixels_current = NULL;
+
+ return 0;
+}
+
+void mgag200_cursor_fini(struct mga_device *mdev)
+{ }
+
int mgag200_crtc_cursor_set(struct drm_crtc *crtc, struct drm_file *file_priv,
uint32_t handle, uint32_t width, uint32_t height)
{