aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSachin Kamat <sachin.kamat@linaro.org>2012-11-25 23:17:14 -0500
committerInki Dae <inki.dae@samsung.com>2012-12-05 00:39:22 -0500
commita4d8de5f1b765aef577a9347f2166d61a5b0a2db (patch)
tree1f25840f4ec0924993573804a743aef649e79f77
parent9f49d9fba35df369482ee39905f90372e86b4439 (diff)
drm/exynos: Use devm_clk_get in exynos_drm_fimd.c
devm_clk_get is device managed and makes error handling and exit code simpler. Also fixes an error related to returning 'ret' without initialising with error code. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> 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_fimd.c31
1 files changed, 7 insertions, 24 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
index ad04eddfa405..00bd266a31bb 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
@@ -846,18 +846,16 @@ static int __devinit fimd_probe(struct platform_device *pdev)
846 if (!ctx) 846 if (!ctx)
847 return -ENOMEM; 847 return -ENOMEM;
848 848
849 ctx->bus_clk = clk_get(dev, "fimd"); 849 ctx->bus_clk = devm_clk_get(dev, "fimd");
850 if (IS_ERR(ctx->bus_clk)) { 850 if (IS_ERR(ctx->bus_clk)) {
851 dev_err(dev, "failed to get bus clock\n"); 851 dev_err(dev, "failed to get bus clock\n");
852 ret = PTR_ERR(ctx->bus_clk); 852 return PTR_ERR(ctx->bus_clk);
853 goto err_clk_get;
854 } 853 }
855 854
856 ctx->lcd_clk = clk_get(dev, "sclk_fimd"); 855 ctx->lcd_clk = devm_clk_get(dev, "sclk_fimd");
857 if (IS_ERR(ctx->lcd_clk)) { 856 if (IS_ERR(ctx->lcd_clk)) {
858 dev_err(dev, "failed to get lcd clock\n"); 857 dev_err(dev, "failed to get lcd clock\n");
859 ret = PTR_ERR(ctx->lcd_clk); 858 return PTR_ERR(ctx->lcd_clk);
860 goto err_bus_clk;
861 } 859 }
862 860
863 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 861 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -865,14 +863,13 @@ static int __devinit fimd_probe(struct platform_device *pdev)
865 ctx->regs = devm_request_and_ioremap(&pdev->dev, res); 863 ctx->regs = devm_request_and_ioremap(&pdev->dev, res);
866 if (!ctx->regs) { 864 if (!ctx->regs) {
867 dev_err(dev, "failed to map registers\n"); 865 dev_err(dev, "failed to map registers\n");
868 ret = -ENXIO; 866 return -ENXIO;
869 goto err_clk;
870 } 867 }
871 868
872 res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); 869 res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
873 if (!res) { 870 if (!res) {
874 dev_err(dev, "irq request failed.\n"); 871 dev_err(dev, "irq request failed.\n");
875 goto err_clk; 872 return -ENXIO;
876 } 873 }
877 874
878 ctx->irq = res->start; 875 ctx->irq = res->start;
@@ -881,7 +878,7 @@ static int __devinit fimd_probe(struct platform_device *pdev)
881 0, "drm_fimd", ctx); 878 0, "drm_fimd", ctx);
882 if (ret) { 879 if (ret) {
883 dev_err(dev, "irq request failed.\n"); 880 dev_err(dev, "irq request failed.\n");
884 goto err_clk; 881 return ret;
885 } 882 }
886 883
887 ctx->vidcon0 = pdata->vidcon0; 884 ctx->vidcon0 = pdata->vidcon0;
@@ -915,17 +912,6 @@ static int __devinit fimd_probe(struct platform_device *pdev)
915 exynos_drm_subdrv_register(subdrv); 912 exynos_drm_subdrv_register(subdrv);
916 913
917 return 0; 914 return 0;
918
919err_clk:
920 clk_disable(ctx->lcd_clk);
921 clk_put(ctx->lcd_clk);
922
923err_bus_clk:
924 clk_disable(ctx->bus_clk);
925 clk_put(ctx->bus_clk);
926
927err_clk_get:
928 return ret;
929} 915}
930 916
931static int __devexit fimd_remove(struct platform_device *pdev) 917static int __devexit fimd_remove(struct platform_device *pdev)
@@ -949,9 +935,6 @@ static int __devexit fimd_remove(struct platform_device *pdev)
949out: 935out:
950 pm_runtime_disable(dev); 936 pm_runtime_disable(dev);
951 937
952 clk_put(ctx->lcd_clk);
953 clk_put(ctx->bus_clk);
954
955 return 0; 938 return 0;
956} 939}
957 940