]> www.infradead.org Git - users/willy/linux.git/commitdiff
drm/vkms: Add support for writeback module
authorSumera Priyadarsini <sylphrenadin@gmail.com>
Mon, 11 Jan 2021 19:07:22 +0000 (00:37 +0530)
committerMelissa Wen <melissa.srw@gmail.com>
Tue, 12 Jan 2021 20:16:25 +0000 (17:16 -0300)
Add enable_writeback feature to vkms_config as a module.

Signed-off-by: Sumera Priyadarsini <sylphrenadin@gmail.com>
Reviewed-by: Melissa Wen <melissa.srw@gmail.com>
Signed-off-by: Melissa Wen <melissa.srw@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/15802da4f1cdfed2b728c3d35731732f161dd073.1610391685.git.sylphrenadin@gmail.com
drivers/gpu/drm/vkms/vkms_drv.c
drivers/gpu/drm/vkms/vkms_drv.h
drivers/gpu/drm/vkms/vkms_output.c

index 6b33975a5cb27f42299a7d19ee4b1faa274513cc..708f7f54001d655190ed83fe4daf15cffd40abf3 100644 (file)
@@ -40,6 +40,10 @@ static bool enable_cursor = true;
 module_param_named(enable_cursor, enable_cursor, bool, 0444);
 MODULE_PARM_DESC(enable_cursor, "Enable/Disable cursor support");
 
+static bool enable_writeback = true;
+module_param_named(enable_writeback, enable_writeback, bool, 0444);
+MODULE_PARM_DESC(enable_writeback, "Enable/Disable writeback connector support");
+
 DEFINE_DRM_GEM_FOPS(vkms_driver_fops);
 
 static void vkms_release(struct drm_device *dev)
@@ -189,6 +193,7 @@ static int __init vkms_init(void)
        default_config = config;
 
        config->cursor = enable_cursor;
+       config->writeback = enable_writeback;
 
        return vkms_create(config);
 }
index 2981367636c4ed607c70402fdd6c88d1ea6ea49f..35540c7c4416925695bb7cbda716a2598bec28c3 100644 (file)
@@ -83,6 +83,7 @@ struct vkms_output {
 struct vkms_device;
 
 struct vkms_config {
+       bool writeback;
        bool cursor;
        /* only set when instantiated */
        struct vkms_device *dev;
index 8f3ffb28b9d124f506712bd81a63975525e8be4d..f5f6f15c362c0011b4f0bbc32314c177f4e378ef 100644 (file)
@@ -41,6 +41,7 @@ int vkms_output_init(struct vkms_device *vkmsdev, int index)
        struct drm_crtc *crtc = &output->crtc;
        struct drm_plane *primary, *cursor = NULL;
        int ret;
+       int writeback;
 
        primary = vkms_plane_init(vkmsdev, DRM_PLANE_TYPE_PRIMARY, index);
        if (IS_ERR(primary))
@@ -80,9 +81,11 @@ int vkms_output_init(struct vkms_device *vkmsdev, int index)
                goto err_attach;
        }
 
-       ret = vkms_enable_writeback_connector(vkmsdev);
-       if (ret)
-               DRM_ERROR("Failed to init writeback connector\n");
+       if (vkmsdev->config->writeback) {
+               writeback = vkms_enable_writeback_connector(vkmsdev);
+               if (writeback)
+                       DRM_ERROR("Failed to init writeback connector\n");
+       }
 
        drm_mode_config_reset(dev);