exynos/drm: hdmi: cleanup for hdmi common device registration
authorSeung-Woo Kim <sw0312.kim@samsung.com>
Mon, 22 Apr 2013 09:40:34 +0000 (18:40 +0900)
committerInki Dae <inki.dae@samsung.com>
Mon, 29 Apr 2013 05:35:32 +0000 (14:35 +0900)
The hdmi common device registration function does not need extern definition
and for error case and unregister case, exynos_drm_hdmi_pdev should be cleared.

Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
drivers/gpu/drm/exynos/exynos_drm_drv.h
drivers/gpu/drm/exynos/exynos_drm_hdmi.c

index 4606fac..635d4c5 100644 (file)
@@ -322,7 +322,7 @@ void exynos_drm_subdrv_close(struct drm_device *dev, struct drm_file *file);
  * this function registers exynos drm hdmi platform device. It ensures only one
  * instance of the device is created.
  */
-extern int exynos_platform_device_hdmi_register(void);
+int exynos_platform_device_hdmi_register(void);
 
 /*
  * this function unregisters exynos drm hdmi platform device if it exists.
index 6986a1b..ba2f0f1 100644 (file)
@@ -51,21 +51,27 @@ struct drm_hdmi_context {
 
 int exynos_platform_device_hdmi_register(void)
 {
+       struct platform_device *pdev;
+
        if (exynos_drm_hdmi_pdev)
                return -EEXIST;
 
-       exynos_drm_hdmi_pdev = platform_device_register_simple(
+       pdev = platform_device_register_simple(
                        "exynos-drm-hdmi", -1, NULL, 0);
-       if (IS_ERR(exynos_drm_hdmi_pdev))
-               return PTR_ERR(exynos_drm_hdmi_pdev);
+       if (IS_ERR(pdev))
+               return PTR_ERR(pdev);
+
+       exynos_drm_hdmi_pdev = pdev;
 
        return 0;
 }
 
 void exynos_platform_device_hdmi_unregister(void)
 {
-       if (exynos_drm_hdmi_pdev)
+       if (exynos_drm_hdmi_pdev) {
                platform_device_unregister(exynos_drm_hdmi_pdev);
+               exynos_drm_hdmi_pdev = NULL;
+       }
 }
 
 void exynos_hdmi_drv_attach(struct exynos_drm_hdmi_context *ctx)