diff options
author | Andrzej Hajda <a.hajda@samsung.com> | 2014-03-28 12:52:38 +0100 |
---|---|---|
committer | Inki Dae <inki.dae@samsung.com> | 2014-04-28 21:33:33 +0900 |
commit | 2369085a2640fbbc6d07e4e6b6dec7c51ffe10e4 (patch) | |
tree | d38b8d149667f1f0d3aca6e36741316b552f3f5e | |
parent | 1b51590a02ad7f4b6ab0f9202313f9b1a69b6758 (diff) | |
download | linux-3.10-2369085a2640fbbc6d07e4e6b6dec7c51ffe10e4.tar.gz linux-3.10-2369085a2640fbbc6d07e4e6b6dec7c51ffe10e4.tar.bz2 linux-3.10-2369085a2640fbbc6d07e4e6b6dec7c51ffe10e4.zip |
drm/exynos: disallow fbdev initialization if no device is connected
This patch adds explicit check if there is a connector with
connected status before fbdev initialization. It prevents creation
of default fbdev 1024x768 which is unusable on panels with bigger resolutions.
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c index a29902e9556..651bdbf5506 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c @@ -225,6 +225,24 @@ static struct drm_fb_helper_funcs exynos_drm_fb_helper_funcs = { .fb_probe = exynos_drm_fbdev_create, }; +bool exynos_drm_fbdev_is_anything_connected(struct drm_device *dev) +{ + struct drm_connector *connector; + bool ret = false; + + mutex_lock(&dev->mode_config.mutex); + list_for_each_entry(connector, &dev->mode_config.connector_list, head) { + if (connector->status != connector_status_connected) + continue; + + ret = true; + break; + } + mutex_unlock(&dev->mode_config.mutex); + + return ret; +} + int exynos_drm_fbdev_init(struct drm_device *dev) { struct exynos_drm_fbdev *fbdev; @@ -236,6 +254,9 @@ int exynos_drm_fbdev_init(struct drm_device *dev) if (!dev->mode_config.num_crtc || !dev->mode_config.num_connector) return 0; + if (!exynos_drm_fbdev_is_anything_connected(dev)) + return 0; + fbdev = kzalloc(sizeof(*fbdev), GFP_KERNEL); if (!fbdev) return -ENOMEM; |