Skip to content

Commit

Permalink
drm/exynos: delay fbdev initialization until an output is connected
Browse files Browse the repository at this point in the history
In case fbdev is initialized before any output is connected,
fb resolution defaults to 1024x768. After that any output with
bigger resolution is ignored and fbdev is not displayed.
The patch postpones fbdev initialization to avoid such situation.

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Reviewed-by: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
  • Loading branch information
Andrzej Hajda authored and Inki Dae committed Mar 23, 2014
1 parent d2ba65f commit 25928a3
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 12 deletions.
16 changes: 4 additions & 12 deletions drivers/gpu/drm/exynos/exynos_drm_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -109,24 +109,15 @@ static int exynos_drm_load(struct drm_device *dev, unsigned long flags)
/* setup possible_clones. */
exynos_drm_encoder_setup(dev);

/*
* create and configure fb helper and also exynos specific
* fbdev object.
*/
ret = exynos_drm_fbdev_init(dev);
if (ret) {
DRM_ERROR("failed to initialize drm fbdev\n");
goto err_drm_device;
}

drm_vblank_offdelay = VBLANK_OFF_DELAY;

platform_set_drvdata(dev->platformdev, dev);

/* force connectors detection */
drm_helper_hpd_irq_event(dev);

return 0;

err_drm_device:
exynos_drm_device_unregister(dev);
err_vblank:
drm_vblank_cleanup(dev);
err_display_cleanup:
Expand Down Expand Up @@ -574,6 +565,7 @@ static int __init exynos_drm_init(void)
platform_driver_unregister(&fimd_driver);
out_fimd:
#endif

#ifdef CONFIG_DRM_EXYNOS_DP
platform_driver_unregister(&dp_driver);
out_dp:
Expand Down
3 changes: 3 additions & 0 deletions drivers/gpu/drm/exynos/exynos_drm_fb.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

#include "exynos_drm_drv.h"
#include "exynos_drm_fb.h"
#include "exynos_drm_fbdev.h"
#include "exynos_drm_gem.h"
#include "exynos_drm_iommu.h"
#include "exynos_drm_crtc.h"
Expand Down Expand Up @@ -300,6 +301,8 @@ static void exynos_drm_output_poll_changed(struct drm_device *dev)

if (fb_helper)
drm_fb_helper_hotplug_event(fb_helper);
else
exynos_drm_fbdev_init(dev);
}

static const struct drm_mode_config_funcs exynos_drm_mode_config_funcs = {
Expand Down

0 comments on commit 25928a3

Please sign in to comment.