diff options
author | Boris Brezillon <boris.brezillon@free-electrons.com> | 2016-11-28 09:56:53 -0500 |
---|---|---|
committer | Boris Brezillon <boris.brezillon@free-electrons.com> | 2017-01-30 04:49:34 -0500 |
commit | db02b7614a54bf0bf548db07bc8d3e7518fd9481 (patch) | |
tree | a892d11be8978a058b8db4844dac7fa7ce446ba5 | |
parent | 7ce7d89f48834cefece7804d38fc5d85382edf77 (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.c | 18 |
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 | ||
445 | struct atmel_hlcdc_dc_commit { | 438 | struct 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 | ||