]> rtime.felk.cvut.cz Git - zynq/linux.git/commitdiff
drm: xilinx: drv: Make fbdev as optional
authorHyun Kwon <hyun.kwon@xilinx.com>
Wed, 17 Jan 2018 19:34:06 +0000 (11:34 -0800)
committerMichal Simek <michal.simek@xilinx.com>
Thu, 1 Mar 2018 08:20:01 +0000 (09:20 +0100)
While adding drm_format_info, the fbdev was made as required.
So for any pipeline with fbdev incompatible format, the drm driver
fails to probe. This fixes and makes fbdev as optional again.

Reported-by: Saurabh Sengar <saurabhs@xilinx.com>
Signed-off-by: Hyun Kwon <hyun.kwon@xilinx.com>
Acked-by: Saurabh Sengar <saurabhs@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
drivers/gpu/drm/xilinx/xilinx_drm_drv.c

index beddc8643686840b5472e6de243b2cffb9f57075..c6d4993736bcfbc31dcfea33f891b0aa2d209919 100644 (file)
@@ -434,11 +434,10 @@ static int xilinx_drm_platform_probe(struct platform_device *pdev)
        struct drm_encoder *encoder;
        struct drm_connector *connector;
        const struct drm_format_info *info;
-       struct drm_format_name_buf format_name;
        struct device_node *encoder_node, *ep = NULL, *remote;
        struct component_match *match = NULL;
        unsigned int align, i = 0;
-       int bpp, ret;
+       int ret;
        u32 format;
 
        drm = drm_dev_alloc(&xilinx_drm_driver, &pdev->dev);
@@ -518,25 +517,17 @@ static int xilinx_drm_platform_probe(struct platform_device *pdev)
 
        format = xilinx_drm_crtc_get_format(private->crtc);
        info = drm_format_info(format);
-       if (!info || !info->depth) {
-               DRM_ERROR("Unsupported framebuffer format %s\n",
-                         drm_get_format_name(format, &format_name));
-               return -EINVAL;
-       }
-
-       /* initialize xilinx framebuffer */
-       bpp = info->cpp[0] * 8;
-       if (bpp) {
+       if (info && info->depth && info->cpp[0]) {
                align = xilinx_drm_crtc_get_align(private->crtc);
-               private->fb = xilinx_drm_fb_init(drm, bpp, 1, align,
-                                                xilinx_drm_fbdev_vres);
+               private->fb = xilinx_drm_fb_init(drm, info->cpp[0] * 8, 1,
+                                                align, xilinx_drm_fbdev_vres);
                if (IS_ERR(private->fb)) {
                        DRM_ERROR("failed to initialize drm fb\n");
                        private->fb = NULL;
                }
-       }
-       if (!private->fb)
+       } else {
                dev_info(&pdev->dev, "fbdev is not initialized\n");
+       }
 
        drm_kms_helper_poll_init(drm);