aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBoris Brezillon <boris.brezillon@free-electrons.com>2016-11-28 09:56:53 -0500
committerBoris Brezillon <boris.brezillon@free-electrons.com>2017-01-30 04:49:34 -0500
commitdb02b7614a54bf0bf548db07bc8d3e7518fd9481 (patch)
treea892d11be8978a058b8db4844dac7fa7ce446ba5
parent7ce7d89f48834cefece7804d38fc5d85382edf77 (diff)
drm/atmel-hlcdc: Rework the fbdev creation logic
Now that we wait for DRM panels to be available before registering the DRM device (returning -EPROBE_DEFER if the panel has not been probed yet), we no longer need to put the fbdev creation code in ->output_poll_changed(). This removes the 10 secs delay between DRM dev registration and fbdev creation (polling period = 10 seconds). Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com> Reported-by: Alex Vazquez <avazquez.dev@gmail.com>
-rw-r--r--drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
index cbd0070265c9..0bf32d6ac39b 100644
--- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
+++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
@@ -431,15 +431,8 @@ static void atmel_hlcdc_fb_output_poll_changed(struct drm_device *dev)
431{ 431{
432 struct atmel_hlcdc_dc *dc = dev->dev_private; 432 struct atmel_hlcdc_dc *dc = dev->dev_private;
433 433
434 if (dc->fbdev) { 434 if (dc->fbdev)
435 drm_fbdev_cma_hotplug_event(dc->fbdev); 435 drm_fbdev_cma_hotplug_event(dc->fbdev);
436 } else {
437 dc->fbdev = drm_fbdev_cma_init(dev, 24,
438 dev->mode_config.num_crtc,
439 dev->mode_config.num_connector);
440 if (IS_ERR(dc->fbdev))
441 dc->fbdev = NULL;
442 }
443} 436}
444 437
445struct atmel_hlcdc_dc_commit { 438struct atmel_hlcdc_dc_commit {
@@ -653,10 +646,13 @@ static int atmel_hlcdc_dc_load(struct drm_device *dev)
653 646
654 platform_set_drvdata(pdev, dev); 647 platform_set_drvdata(pdev, dev);
655 648
656 drm_kms_helper_poll_init(dev); 649 dc->fbdev = drm_fbdev_cma_init(dev, 24,
650 dev->mode_config.num_crtc,
651 dev->mode_config.num_connector);
652 if (IS_ERR(dc->fbdev))
653 dc->fbdev = NULL;
657 654
658 /* force connectors detection */ 655 drm_kms_helper_poll_init(dev);
659 drm_helper_hpd_irq_event(dev);
660 656
661 return 0; 657 return 0;
662 658