drm: rcar-du: Disable fbdev emulation when no connector is present
authorLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Tue, 24 Feb 2015 01:51:26 +0000 (03:51 +0200)
committerLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Tue, 3 Mar 2015 14:16:06 +0000 (16:16 +0200)
fbdev emulation requires at least one connector, and will fail to
initialize if no connector has been successfully instantiated. Disable
it in that case and print an informational message instead of failing
probe with a confusing fbdev emulation error message.

It could be argued that probe should fail when no connector is present,
but the DU could still be useful in that case with the to-be-implemented
memory write-back support.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
drivers/gpu/drm/rcar-du/rcar_du_kms.c

index aebbcde82ddf835ab76aeeddb53ee4f42eeeb914..888df404932e280d8bbfd42a561165b9f2288fc6 100644 (file)
@@ -448,12 +448,17 @@ int rcar_du_modeset_init(struct rcar_du_device *rcdu)
 
        drm_kms_helper_poll_init(dev);
 
-       fbdev = drm_fbdev_cma_init(dev, 32, dev->mode_config.num_crtc,
-                                  dev->mode_config.num_connector);
-       if (IS_ERR(fbdev))
-               return PTR_ERR(fbdev);
+       if (dev->mode_config.num_connector) {
+               fbdev = drm_fbdev_cma_init(dev, 32, dev->mode_config.num_crtc,
+                                          dev->mode_config.num_connector);
+               if (IS_ERR(fbdev))
+                       return PTR_ERR(fbdev);
 
-       rcdu->fbdev = fbdev;
+               rcdu->fbdev = fbdev;
+       } else {
+               dev_info(rcdu->dev,
+                        "no connector found, disabling fbdev emulation\n");
+       }
 
        return 0;
 }