aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRahul Sharma <rahul.sharma@samsung.com>2012-10-15 20:20:12 -0400
committerInki Dae <daeinki@gmail.com>2012-12-13 09:05:43 -0500
commit422bd00ea640b9aacb6bdd3903b76f69e72fba8d (patch)
tree62343a394437c64c927be06bce3a237671eb492c
parent9add1ac3dd256ad12e266f8403daf928be19953f (diff)
drm: exynos: moved exynos drm device registration to drm driver
This patch moved the exynos-drm platform device registration to the drm driver. When DT is enabled, platform devices needs to be registered within the driver code. This patch fits the requirement of both DT and Non DT based drm drivers. Signed-off-by: Rahul Sharma <rahul.sharma@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_drv.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
index 2b287d2fc92e..068381337d4f 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
@@ -50,6 +50,9 @@
50 50
51#define VBLANK_OFF_DELAY 50000 51#define VBLANK_OFF_DELAY 50000
52 52
53/* platform device pointer for eynos drm device. */
54static struct platform_device *exynos_drm_pdev;
55
53static int exynos_drm_load(struct drm_device *dev, unsigned long flags) 56static int exynos_drm_load(struct drm_device *dev, unsigned long flags)
54{ 57{
55 struct exynos_drm_private *private; 58 struct exynos_drm_private *private;
@@ -296,6 +299,7 @@ static int exynos_drm_platform_probe(struct platform_device *pdev)
296{ 299{
297 DRM_DEBUG_DRIVER("%s\n", __FILE__); 300 DRM_DEBUG_DRIVER("%s\n", __FILE__);
298 301
302 pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
299 exynos_drm_driver.num_ioctls = DRM_ARRAY_SIZE(exynos_ioctls); 303 exynos_drm_driver.num_ioctls = DRM_ARRAY_SIZE(exynos_ioctls);
300 304
301 return drm_platform_init(&exynos_drm_driver, pdev); 305 return drm_platform_init(&exynos_drm_driver, pdev);
@@ -357,11 +361,21 @@ static int __init exynos_drm_init(void)
357 361
358 ret = platform_driver_register(&exynos_drm_platform_driver); 362 ret = platform_driver_register(&exynos_drm_platform_driver);
359 if (ret < 0) 363 if (ret < 0)
364 goto out_drm;
365
366 exynos_drm_pdev = platform_device_register_simple("exynos-drm", -1,
367 NULL, 0);
368 if (IS_ERR_OR_NULL(exynos_drm_pdev)) {
369 ret = PTR_ERR(exynos_drm_pdev);
360 goto out; 370 goto out;
371 }
361 372
362 return 0; 373 return 0;
363 374
364out: 375out:
376 platform_driver_unregister(&exynos_drm_platform_driver);
377
378out_drm:
365#ifdef CONFIG_DRM_EXYNOS_G2D 379#ifdef CONFIG_DRM_EXYNOS_G2D
366 platform_driver_unregister(&g2d_driver); 380 platform_driver_unregister(&g2d_driver);
367out_g2d: 381out_g2d:
@@ -392,6 +406,8 @@ static void __exit exynos_drm_exit(void)
392{ 406{
393 DRM_DEBUG_DRIVER("%s\n", __FILE__); 407 DRM_DEBUG_DRIVER("%s\n", __FILE__);
394 408
409 platform_device_unregister(exynos_drm_pdev);
410
395 platform_driver_unregister(&exynos_drm_platform_driver); 411 platform_driver_unregister(&exynos_drm_platform_driver);
396 412
397#ifdef CONFIG_DRM_EXYNOS_G2D 413#ifdef CONFIG_DRM_EXYNOS_G2D