diff options
| author | Andrzej Hajda <a.hajda@samsung.com> | 2014-10-10 08:31:54 -0400 |
|---|---|---|
| committer | Inki Dae <daeinki@gmail.com> | 2014-11-02 11:51:28 -0500 |
| commit | 3cb6830a75665ec4efa99c69d52c5d9df597c397 (patch) | |
| tree | 65f07ad7d10c0f5c968d8079ed50ef9d965ff811 | |
| parent | 64f7aed83d776956d68afd5dad8bdc7824a5b843 (diff) | |
drm/exynos: init kms poll at the end of initialization
HPD events can be generated by components even if drm_dev is not fully
initialized, to skip such events kms poll initialization should
be performed at the end of load callback followed directly by forced
connection detection.
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_drv.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c index 23fbad5a504a..2353499196b6 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c | |||
| @@ -94,9 +94,6 @@ static int exynos_drm_load(struct drm_device *dev, unsigned long flags) | |||
| 94 | goto err_mode_config_cleanup; | 94 | goto err_mode_config_cleanup; |
| 95 | } | 95 | } |
| 96 | 96 | ||
| 97 | /* init kms poll for handling hpd */ | ||
| 98 | drm_kms_helper_poll_init(dev); | ||
| 99 | |||
| 100 | /* setup possible_clones. */ | 97 | /* setup possible_clones. */ |
| 101 | exynos_drm_encoder_setup(dev); | 98 | exynos_drm_encoder_setup(dev); |
| 102 | 99 | ||
| @@ -116,9 +113,6 @@ static int exynos_drm_load(struct drm_device *dev, unsigned long flags) | |||
| 116 | if (ret) | 113 | if (ret) |
| 117 | goto err_cleanup_vblank; | 114 | goto err_cleanup_vblank; |
| 118 | 115 | ||
| 119 | /* force connectors detection */ | ||
| 120 | drm_helper_hpd_irq_event(dev); | ||
| 121 | |||
| 122 | /* | 116 | /* |
| 123 | * enable drm irq mode. | 117 | * enable drm irq mode. |
| 124 | * - with irq_enabled = true, we can use the vblank feature. | 118 | * - with irq_enabled = true, we can use the vblank feature. |
| @@ -136,6 +130,12 @@ static int exynos_drm_load(struct drm_device *dev, unsigned long flags) | |||
| 136 | */ | 130 | */ |
| 137 | dev->vblank_disable_allowed = true; | 131 | dev->vblank_disable_allowed = true; |
| 138 | 132 | ||
| 133 | /* init kms poll for handling hpd */ | ||
| 134 | drm_kms_helper_poll_init(dev); | ||
| 135 | |||
| 136 | /* force connectors detection */ | ||
| 137 | drm_helper_hpd_irq_event(dev); | ||
| 138 | |||
| 139 | return 0; | 139 | return 0; |
| 140 | 140 | ||
| 141 | err_cleanup_vblank: | 141 | err_cleanup_vblank: |
